標籤:完整 管理 組件 估算 https start 產生 ini 增加
https://www.red-gate.com/simple-talk/sql/sql-training/the-sql-server-query-optimizer/為了理解如何編寫SQL Server的SQL代碼,查詢最佳化工具的工作原理非常重要。 SQL Server查詢最佳化工具是一個
基於成本的最佳化器。它
分析給定查詢的許多候選執行計畫,估計每個計劃的成本,並選擇所考慮選擇成本最低的計劃。事實上,鑒於查詢最佳化工具不能為每個查詢考慮每個可能的計劃, 實際上它必須執行基於成本的平衡操作,同時考慮到查詢潛在計劃的成本和計劃本身的成本。 因此,SQL Server組件對資料庫的效能影響最大。當然,更好地理解查詢最佳化工具的工作方式也可以去協助資料庫管理員和開發人員編寫更好的查詢,並為查詢最佳化工具提供產生高效執行計畫所需的資訊。
- SQL Server查詢最佳化工具的工作原理
- 查詢最佳化工具如何工作?
- SQL Server 資料庫引擎核心是兩個主要組件:
- 儲存引擎
- 負責以保持資料完整性的同時最佳化並發性的方式讀取磁碟和記憶體之間的資料
- 關聯式引擎(查詢處理器)
- 接受提交給SQL Server的所有查詢,為其最佳執行設計一個計劃,然後執行該計劃並提供所需的結果
- 對於Sql server接收到的每個查詢,查詢處理器的第一個工作是儘可能快地設計一個計劃,該計劃描述了執行所述查詢的最佳方式(或者至少是一種有效方式)。其第二項工作是根據該計劃執行查詢。
- 查詢處理的過程
- SQL statement -> Parsing (Parse Tree) -> Binding (Algebrized Tree) -> Query Optimization (Execution Plan) -> Query Execution -> Query Results
- 查詢被解析和綁定:(此階段輸出是一個邏輯樹狀結構,樹中的每個節點代表查詢必須執行的邏輯操作)
- 查詢最佳化:
- 產生可能的執行計畫:使用邏輯樹狀結構,查詢最佳化工具設計了許多可能的方法來執行查詢,即執行計畫的數量
- 每個計劃的成本評估:雖然查詢最佳化工具不會產生每個可能的執行計畫,但它會評估它產生的每個計劃的資源和時間成本。查詢最佳化工具認為其評估成本最低的計劃被選中,並傳遞給執行引擎
- 查詢執行,計畫快取:查詢由執行引擎根據選定的計劃執行,該計劃可以儲存在計畫快取中的記憶體中
- Parsing 解析:
- 解析確保T-SQL查詢具有有效文法,並將SQL查詢轉換為初始樹表示形式(即表示執行相關查詢所需的進階步驟的邏輯運算子樹)
- Binding 綁定:
- 綁定確保所有對象名都存在,並將分析樹上的每個表名和列名與系統目錄中的對應對象相關聯,輸出代數樹,然後將其發送到查詢最佳化工具
- Query Optimization 最佳化:
- SQL Server使用基於成本的最佳化器,並使用成本估算模型來估算每個候選計劃的成本
- 實質上,查詢最佳化是將樹表示中表達的邏輯查詢操作映射到可由執行引擎執行的物理操作的過程。
- 查詢最佳化過程的最終產品是一個執行計畫:一個由多個物理操作符組成的樹,該樹包含執行引擎為了從資料庫中獲得所需結果而要執行的演算法
- 產生候選執行計畫
- 理論上,為了找到查詢的最佳執行計畫,基於成本的查詢最佳化工具應該產生該搜尋空間中存在的所有可能的執行計畫,並正確估計每個計劃的成本。但是,一些複雜的查詢可能有數千個甚至數百萬個可能的執行計畫,而SQL Server查詢最佳化工具通常可以考慮大量的候選執行計畫,但無法對每個查詢的所有可能計划進行詳盡搜尋。
- 查詢最佳化工具必須在最佳化時間和計劃品質之間取得平衡。
- SQL Server查詢最佳化工具的背景和挑戰
- 基數和成本估算 - 如何閱讀和理解它們?
- 串連排序 - 查詢最佳化中最複雜的問題之一
- 說明一下:如何以有效順序串連表可以提高查詢的效能,但同時可以指數地增加執行次數?
SQL -- SQL Server 查詢最佳化工具(Query Optimizers)