首頁 >資料庫 >mysql教程 >為什麼我的視窗聚合查詢顯示高邏輯讀取?

為什麼我的視窗聚合查詢顯示高邏輯讀取?

Linda Hamilton
Linda Hamilton原創
2024-12-24 04:15:11173瀏覽

Why Are My Windowed Aggregate Queries Showing High Logical Reads?

具有公共子表達式假脫機的視窗聚合函數執行計劃中的高邏輯讀取

在執行計劃中經常觀察到大型表報告的高邏輯讀取利用公共子表達式線軸。工作表邏輯讀取的公式為:

Worktable Logical Reads = 1 + NumberOfRows * 2 + NumberOfGroups * 4

說明

與傳統的假脫機表不同,工作表以行讀取計數邏輯讀取,導致邏輯讀取計數膨脹。這是因為工作表位於伺服器內部,並且雜湊頁計數對於分析來說價值較低。

公式細分如下:

  1. 1x 邏輯讀取: 工作表已建立並初始化。
  2. 每個邏輯讀取次數為2 倍Row: 主假脫機讀取每行兩次,一次插入到工作表中,另一次從工作表中讀取以進行聚合。輔助線軸也讀取每行兩次。
  3. 每組 4 次邏輯讀取: 主線軸發出一行來指示每個新分區的開始,並輸出一個虛擬行來完成最後一組的處理。這些額外的行佔 4x 計數。

其他見解

Paul White 在他的部落格文章中解釋說該公式與執行計劃一致,其中兩個輔助線軸被完全讀取兩次,且主線軸發出(組數1)行。額外的行由主線軸發出,表示最終組的結束。

結論

工作表邏輯讀取的公式是理解膨脹邏輯的有用工具。在具有公共子表達式假脫機的執行計劃中觀察到的讀取計數。透過認識到工作表對邏輯讀取的計數不同,可以更輕鬆地解釋讀取統計數據並評估計劃的效率。

以上是為什麼我的視窗聚合查詢顯示高邏輯讀取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn