查詢處理和執行 查詢優化(1)

2021-06-20 06:50:46 字數 1655 閱讀 7359

查詢優化器的工作就是接收查詢樹並找到乙個獲取資料(結果)的好方式。查詢優化處理基於成本原則,這個成本是抽象的測量值,用於評估不同的查詢計畫選項。sql server團隊提供的當前模式工作如下:

上面所訴步驟的輸出結果是能夠放入快取的可執行的計畫。這個計畫之後被安排執行。你可以通過sys.dm_exec_query_optimizer_info檢視優化過程的內部工作狀況,該dmv包含一組優化屬性。如下圖所示的其中部分counter,其中optimizations的occurrence(61)=search 0(21)+search 1(20)+search 2(0)+trivial plan(20)。

並行計畫

並行計畫是優化器選擇的乙個計畫,它用來將合適的操作符(operator)分離到多個並行執行的執行緒。不是所有的的操作符都適合用於並行計畫。優化器僅在下面的情形下選擇並行計畫:

如果以上條件都滿足,那麼優化器就會選擇並行操作。

algebrizer樹

解析器的輸出結果是解析樹,解析樹不會永久儲存,因而不能看到它的模樣;而algebrizer的輸出結果是algebrizer樹,它會儲存檢視、預設值和約束,因為這些物件會經常被其他查詢復用。這些物件存放在快取,條件是type=cachestore_phdr:

select *

from sys.dm_os_memory_cache_entries

where type = 'cachestore_phdr'

sql_handle或plan_handlesql_handle和plan_handle都是雜湊值:sql_handle是原始t-sql源的雜湊,而plan_handle是快取計畫的雜湊。sql是自動引數化的,因此兩者的關係意味著多個sql_handle可以對映到乙個 plan_handle。可以通過sys.dm_exec_sql_text (sql_handle | plan_handle)檢視原始t-sql,通過sys.dm_exec_query_plan (plan_handle)檢視計畫的xml showplan。

理解統計

統計為sql server執行查詢優化提供關鍵資訊。統計包含資料的細節以及資料在表中的模樣。查詢優化處理利用統計來決定乙個查詢需要為乙個給定的查詢計畫訪問多少行。它使用這個資訊為計畫的每一步估算成本。統計是sql server根據查詢自動建立的,其前提是auto_create_statistics選項被設定為on。統計可以在ssms裡面看到,如下圖。

要看實際的統計值,可以在屬性頁-->細節或通過dbcc檢視,如下圖:

下面的配置選項控制著如何建立統計:

auto_create_statistics

auto_update_statistics

auto_update_statistics_asynchronously

關係查詢處理和查詢優化

v查詢優化分類 n代數優化 指關係代數表示式的優化 n物理優化 指訪問路徑和底層操作演算法的選擇 v關聯式資料庫管理系統查詢處理階段 1.查詢分析 2.查詢檢查 3.查詢優化 4.查詢執行 v選擇操作典型實現方法 1 全表掃瞄方法 table scan l對查詢的基本表順序掃瞄,逐一檢查每個元組是否...

查詢處理和執行 查詢計畫

檢視查詢計畫的方式有如下幾種 1 上下文相關的選單選項 6 使用dmf select from sys.dm exec query plan plan handle select from sys.dm exec text query plan plan handle 查詢計畫操作符查詢優化器可以使...

關係查詢處理和查詢優化習題

1.假設關係r a,b 和s b,c,d 情況如下 r有20000個元組,s有1 200個元組,乙個塊能裝40 個r的元組,能裝30個s的元組,估算下列操作需要多少次磁碟塊讀寫。1 r上沒有索引,sclect from r 2000 40 500次 2 r中a為主碼,a有3層b 數索引,select...