[转]SQL Server 2000执行计划成本(1/5)
表掃描
????? 當沒有合適的索引時就發生表掃描操作。這可能意味著沒有索引存在或者預期有很多行且比掃描整個表開銷更少。如果表是一個堆表,執行計劃顯示表掃描操作;如果表有聚集索引或者所有需要的值都在一個非聚集索引里如圖2-6顯示,那么執行計劃顯示一個索引掃描操作。
圖2-6.表掃描的執行計劃和聚集索引掃描操作
????? 圖2-7和2-8顯示表掃描和索引掃描操作的成本細節。索引掃描和表掃描有相同的成本結構。
圖2-7.表掃描的成本細節
圖2-8.聚集索引掃描的成本細節
通過檢查表的一個范圍的頁和行的I/O和CPU成本,執行計劃成本規則如下:
CPU?Cost?=?0.0000785?+?0.0000011?per?row
I/O的基本成本(0.0375785)正好是6×0.0062500+0.0000785。通過任何平臺(1P/2P/4P)觀察到的表掃描成本組成沒有任何變化。
索引搜索和表掃描的交叉點
????? 每個表只能有一個聚集索引。為每個查詢建立覆蓋索引而不使用聚集索引總是不切實際的。那么執行計劃里可能執行下面兩個選項中的一個:1)一個帶有書簽查找的索引搜索,或者2)表掃描(或聚集索引掃描)。當從搜索參數里預期只有少量的行時,執行計劃采用帶書簽查找的索引搜索。當預期有很多行時,執行計劃采用表掃描。正確的理解執行計劃在哪兒從一個變為另一個是有用的。
?
????? 表掃描的成本通過表使用的頁數和表總共的行數來決定。表掃描的成本不依賴于返回的行數(除非使用聚合函數)。索引搜索操作的成本僅依賴于返回的行數和選擇行數所在的索引的葉頁數,但不依賴于影響索引深度的表的絕對大小。書簽查找操作的成本是由表的大小影響的(以不確定的倍數關系影響),但適當地與行數線性相關。
????? 表掃描開銷小于帶有書簽查找的索引搜索的交叉點是通過使兩個執行計劃成本規則相等來決定的。通過把在書簽查找I/O成本的不確定的倍數作為修正因子(CF)且撇開小成本的組成部分,交叉點就能大概被確定了。
兩個執行計劃在固定的啟動成本上的區別是1P/2P系統有大約5個書簽查找而4P系統有11個。對于1P/2P系統每增加一個書簽查找行的成本是0.0062511的一倍而4P系統是0.0031260的一倍,包括I/O成本和CPU成本。表掃描里每增加一頁的成本是0.000740741+0.0000011×(每頁的行數)。這樣,交叉點遵循的規則大約和下面的相關:索引搜索條件涉及到的行數和表的頁數,術語稱為頁行比(pages-to-rows ratio)和修正因子(CF)。頁行比在表掃描增加的成本與一個書簽查找的成本相等時簡單的指頁數。修正因子(CF)是書簽查找成本的百分比。
??????? ~?11?+?頁數?÷?(CF×(頁行比))??(4P系統)
?
既然表掃描里增加頁的成本依賴于每頁的行數,那么頁行比就反映了每頁的行密度。如圖2-9所顯示。
圖2-9.頁行比對每頁的行密度
????? 例如,考慮平均密度為每頁100行的一個表。對于1P/2P系統的頁行比是7.35且CF是~0.90。對于一個有506頁的表來說,預計的交叉成本大約在81.5行發生,實際是84行。換句話說,當要求書簽查找的時候,查詢優化器為了使用索引而非表掃描需要索引的可選擇性好于表里每0.9×7.35頁就有1行。也許在成本交叉點和計劃事務點處有細微的不同。
????? 圖2-10顯示了索引搜索和被看作行功能的書簽查找的執行計劃成本和表掃描50000行每頁99行的成本。表掃描的成本不依賴于返回的行。
圖2-10.有50000行且每頁99行的表的計劃成本
????? 圖2-11共同顯示了對于1P/2P和4P系統的索引搜索和作為行功能的書簽查找計劃的成本與表里計算頁(假定每頁100行)功能的表掃描的計劃成本。為了比較也顯示了作為行功能的覆蓋索引搜索成本。如果知道頁里表的大小,那么書簽查找和表掃描的交叉點可以通過找到書簽查找計劃和表掃描有相同成本時的行數來決定,反之亦然。
圖2-11.行/頁計劃成本
????? 由于在1P/2P系統和4P系統里索引搜索和書簽查找成本的不同,在4P系統上要達到表掃描交叉點的書簽查找量是1P/2P系統的大約2倍。假定有很多多處理器系統使用共享總線,那么4P系統比1P/2P系統延遲切換到高總線帶寬操作如表掃描上似乎是合理的。這一點沒有明晰的解釋。
????? 在有大量的行參與時,書簽查找計劃成本對于1P/2P系統來說是覆蓋索引搜索的700多倍而4P系統是350多倍。在這個例子里,覆蓋索引每頁正好超過400行。
????? 注意覆蓋索引和表掃描在很少的行參與時計劃成本非常平坦。這是因為增加行的成本相對于固定的索引搜索和表掃描的基本成本而言是很低的。事實上,基于1P/2P系統的成本規則而言增加800行的成本是覆蓋索引搜索每頁100行成本的兩倍,4P系統是400行。在45頁里4500行的表掃描成本是單行表掃描的兩倍。
?
轉載于:https://www.cnblogs.com/killkill/archive/2008/12/23/1360445.html
總結
以上是生活随笔為你收集整理的[转]SQL Server 2000执行计划成本(1/5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DOS下从硬盘安装XP系统方法与要点
- 下一篇: 程序运行实例数量的控制