婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL Server統計信息更新時采樣百分比對數據預估準確性的影響詳解

SQL Server統計信息更新時采樣百分比對數據預估準確性的影響詳解

熱門標簽:優質地圖標注 怎樣在地圖上標注路線圖標 武漢長沙外呼系統方法和技巧 外呼系統電銷專用 智能語音外呼系統選哪家 奧威地圖標注多個地方 千呼電銷機器人價格 百度地圖標注不同路線 京華物流公司地圖標注

為什么要寫統計信息

最近看到園子里有人寫統計信息,樓主也來湊熱鬧。

話說經常做數據庫的,尤其是做開發的或者優化的,統計信息造成的性能問題應該說是司空見慣。

當然解決辦法也并非一成不變,“一招鮮吃遍天”的做法已經行不通了(題外話:整個時代不都是這樣子嗎)

當然,還是那句話,既然寫了就不能太俗套,寫點不一樣的,本文通過分析一個類似實際案例來解讀統計信息的更新的相關問題。

對于實際問題,不但要解決問題,更重要的是要從理論上深入分析,才能更好地駕馭數據庫。

何時更新統計信息

(1)查詢執行緩慢,或者查詢語句突然執行緩慢。這種場景很可能是由于統計信息沒有及時更新而遭遇了參數嗅探的問題。

(2)當大量數據更新(INSERT/DELETE/UPDATE)到升序或者降序的列時,這種情況下,統計信息直方圖可能沒有及時更新。

(3)建議在除索引維護(當你重建、整理碎片或者重組索引時,數據分布不會改變)外的維護工作之后更新統計信息。

(4)數據庫的數據更改頻繁,建議最低限度每天更新一次統計信息。數據倉庫可以適當降低更新統計信息的頻率。

(5)當執行計劃出現統計信息缺失警告時,需要手動建立統計信息

統計信息基礎

首先說一個老掉牙的話題,統計信息的更新閾值:

1,表格從沒有數據變成有大于等于1條數據。

2,對于數據量小于500行的表格,當統計信息的第一個字段數據累計變化量大于500以后。

3,對于數據量大于500行的表格,當統計信息的第一個字段數據累計變化量大于500 + (20%×表格數據總量)以后。

做個查詢,觸發統計信息更新,rowmodct歸0(繼續累積直到下一個觸發的閾值,觸發更新之后再次歸0)

關于統計信息“過期”的問題

下面開始正文,網絡上很多關于統計信息的文章,提到統計信息,很多都是統計信息過期的問題,然后跟新之后怎么怎么樣

尤其在觸發統計信息自動更新閾值的第三個區間:也就是說數據累計變化超過20%之后才能自動觸發統計信息的更新

這一點對于大表來說通常影響是比較大的,比如1000W的表,變化超過20%也+500也就是200W+500行之后才觸發統計信息更新,這個閾值區間的自動觸發閾值,絕大多數情況是不能接受的,于是對于統計信息的診斷就變成了是否“過期”

判斷統計信息是否過期,然后通過更新統計信息來促使執行計劃更加準確地預估行數,這一點本無可厚非

但是,問題也就出在這里了:那么怎么更新統計信息?一成不變的做法是否可行,這才是問題的重點。

當然肯定有人說,我就是按照默認方式更新的,更新完之后SQL也變得更加優化了什么的

通過update statistics TableName StatisticName更新某一個索引的統計信息,

或者update statistics TableName更新全表的統計信息

這種情況下往往是小表上可以這么做,當然對于大表或者小表沒有一個標準值,一切要結合事實來說明問題

下面開始本文的主題:

抽象并簡化出業務中的一個實際案例,創建這么一張表,類似于訂單和訂單明細表(主子表),

這里你可以想象成是一個訂單表的子表,Id字段是唯一的,有一個ParentID字段,是非唯一的,

ParentID類似于主表的Id,測試數據按照一個主表Id對應50條子表明細的規律插入數據

CREATE TABLE [dbo].[TestStaitisticsSample](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [ParentId] [int] NULL,
 [OtherColumn] [varchar](50) NULL
) 


declare @i int=0
while(@i100000000)
begin

 insert into [TestStaitisticsSample](ParentId,OtherColumn)values(@i,NEWID())
 /*
 中間插入50條,也即一個主表Id對應50條子表明細
 */
 insert into [TestStaitisticsSample](ParentId,OtherColumn)values(@i,NEWID())

 set @i=@i+1
end
go

create nonclustered index [idx_ParentId] ON [dbo].[TestStaitisticsSample]
(
 [ParentId] 
)
go

本來打算插入1億條的,中間我讓他執行我睡午覺去了,醒來之后發現SSMS掛掉了,掛掉了算了,數據也接近1億了,能說明問題就夠了

現在數據分布的非常明確,就是一個ParentId有50條數據,這一點首先要澄清。

測試數據寫入,以及所創建完成之后來更新idx_ParentId 索引上的統計信息,就按照默認的方式來更新,然后來觀察統計信息

默認方式更新統計信息(未指定采樣密度)

表里現在是8000W多一點記錄,默認更新統計信息時取樣行數是462239行,那么這個統計信息靠譜嗎?

上面說了,造數據的時候,我一個ParentId對應的是50行記錄,這一點非常明確,他這里統計出來的多少?

1,對于取樣的RANG_HI_Key值,比如51632,預估了862.212行

2,對于AVG_RANG_ROW,比如45189到51632之間的每個Id的數據對應的數據行,預估是6682.490行

之前造數據的時候每個Id都是50行,這里的預估靠譜嗎,這個誤差是無法接受的,

很多時候,對于大表,采用默認(未指定采樣密度)的情況下,默認的采樣密度并不足以準確地描述數據分布情況

指定一個采樣密度的方式更新統計信息(20%采樣)

這一次用20%的采樣密度,可以看到取樣的行數是15898626行

1,對于取樣的RANG_HI_Key值,比如216305,他給我預估了24.9295行

2,對于AVG_RANG_ROW,比如186302到216305之間的每個Id的行數,預估是197.4439行

觀察比如上面默認的取樣密度,這一次不管是RANG_HI_Key還是AVG_RANG_ROW得預估,都有不一個非常高的下降,開始趨于接近于真實的數據分布(每個Id有50行數據)

整體上看,但是這個誤差還是比較大的,如果繼續提高采樣密度,看看有什么變化?

指定一個采樣密度的方式更新統計信息(70%采樣) 

這一次用70%的采樣密度,可以看到取樣行數是55962290行

1,對于取樣的RANG_HI_Key值,比如1978668,預估了71.15906行

2,對于AVG_RANG_ROW,比如1124024到1978668之間的每個Id,預估為61.89334行

可以說,對于絕大多數值得預估(AVG_RANG_ROW),都愈發接近于真實值

  

指定一個采樣密度的方式更新統計信息(100%采樣)

可以看到,取樣行數等于總行數,也就是所謂的全部(100%)取樣

看一下預估結果:

比如Id=3981622,預估是50行,3981622與4131988之間的Id的行數,預估為49.99874行,基本上等于真實數據分布

這個就不做過多解釋了,基本上跟真實值是一樣的,只是AVG_RANG_ROW有一點非常非常小的誤差。

取樣密度高低與統計信息準確性的關系

至于為什么默認取樣密度和較低取樣密度情況下,誤差很大的情況我簡單解釋一下,也非常容易理解,因為“子表”中存儲主表ID的ParentId值允許重復,在存在重復值的情況下,如果采樣密度不夠,極有可能造成“以偏概全”的情況

比如對10W行數據取樣1W行,原本10W行數劇中有2000個不重復的ParentId值,如果是10%的取樣,在1W行取樣數據中,因為密度不夠大,只找到了20個不重復的ParentId值,那么就會認為每一行ParentId對應500行數據,這根實際的分布的每個ParentId有一個非常大的誤差范圍

如果提高采樣密度,那么這個誤差就會越來越小。  

更新統計信息的時候,高比例的取樣是否可取(可行) 

因此在觀察統計信息是否過期,決定更新統計信息的時候,一定要注意取樣的密度,就是說表中有多少行數據,統計信息更新的時候取了多少采樣行,密度有多高。

當然,肯定有人質疑,那你說采樣密度越高,也就是取樣行數越高越準確,那么我就100%取樣。

這樣行不行?

還要分情況看,對于幾百萬或者十幾萬的小表來說,當然沒有問題,這也是為什么數據庫越小,表數據越少越容易掩蓋問題的原因。

對于大表,上億的,甚至是十幾億的,你按照100%采樣試一試? 

舉個實際例子:

我這里對一個稍微大一點的表做個全表統計信息的更新,測試環境,服務器沒負載,存儲是比普通的機械硬盤要強很多的SAN存儲

采用full scan,也就是100%采樣的更新操作,看一下,僅僅這一樣表的update statistic操作就花費了51分鐘

試想一下,對一個數百GB甚至數TB的庫來說,你敢這么搞一下。

  

扯一句,這個中秋節過的,折騰了大半天,話說做測試過程中電腦有開始有點卡,

做完測試之后停掉SQLServer服務,瞬間內存釋放了7個G,可見這些個操作還是比較耗內存的

   

總結:

本文通過對于某些場景下,在對較大的表的索引統計信息更新時,采樣密度的分析,闡述了不同采樣密度下,對統計信息預估的準確性的影響。

當然對于小表,一些都好說。

隨著單表數據量的增加,統計信息的更新策略也要做相應的調整,

不光要看統計信息是否“過期”,更重要的是注意統計信息更新時究竟取樣了全表的多少行數據做統計。

對于大表,采用FULL SCAN或者100%采樣往往是不可行的,這時候就需要做出權衡,做到既能準確地預估,又能夠以合理的代價執行。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持

您可能感興趣的文章:
  • SQLSERVER收集語句運行的統計信息并進行分析
  • SQL Server自動更新統計信息的基本算法
  • sqlserver 統計sql語句大全收藏
  • SQLSERVER語句的執行時間顯示的統計結果是什么意思
  • 淺談SQL Server中統計對于查詢的影響分析
  • SQLServer2005 中的幾個統計技巧

標簽:威海 宿州 七臺河 防疫戰設 益陽 來賓 銅仁 天水

巨人網絡通訊聲明:本文標題《SQL Server統計信息更新時采樣百分比對數據預估準確性的影響詳解》,本文關鍵詞  SQL,Server,統計,信息,更新,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server統計信息更新時采樣百分比對數據預估準確性的影響詳解》相關的同類信息!
  • 本頁收集關于SQL Server統計信息更新時采樣百分比對數據預估準確性的影響詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产高清不卡| 欧美一级高清大全免费观看| 国内精品嫩模私拍在线| 日韩av中文字幕一区二区 | 豆国产96在线|亚洲| 高清成人在线观看| proumb性欧美在线观看| 色综合天天性综合| 91成人国产精品| 在线成人免费视频| 欧美成人伊人久久综合网| 2022国产精品视频| 国产精品国产三级国产| 一区二区三区四区av| 日韩国产精品久久| 国产成人自拍高清视频在线免费播放| 国产精品18久久久| 在线观看日产精品| 日韩欧美一级精品久久| 久久精品人人做人人爽97| 中文字幕一区二区三区不卡| 亚洲永久精品大片| 韩国精品免费视频| jizz一区二区| 日韩欧美中文一区二区| 国产日本一区二区| 舔着乳尖日韩一区| 国产成人综合在线| 欧美日韩一区二区欧美激情| 久久久久9999亚洲精品| 亚洲一区二区三区四区在线免费观看 | 肉色丝袜一区二区| 国产精品69毛片高清亚洲| 日本韩国欧美一区二区三区| 日韩欧美二区三区| 亚洲裸体在线观看| 国内精品国产成人国产三级粉色| 91亚洲男人天堂| 久久午夜电影网| 午夜精品福利一区二区蜜股av | 亚洲123区在线观看| 国产高清一区日本| 欧美一级在线免费| 一区二区三区电影在线播| 国产一区二区三区四区五区美女 | 国产精品欧美极品| 九九精品一区二区| 欧美日韩在线不卡| 亚洲女子a中天字幕| 国产成人午夜精品影院观看视频 | 亚洲地区一二三色| eeuss鲁一区二区三区| 久久亚洲精华国产精华液| 亚洲成a人v欧美综合天堂下载| 粉嫩蜜臀av国产精品网站| 久久久蜜桃精品| 久久精品国产99国产精品| 欧美美女直播网站| 亚洲一区二区在线观看视频 | 国产美女视频一区| 欧美电视剧在线看免费| 日本欧洲一区二区| 欧美区一区二区三区| 亚洲伦在线观看| 91久久精品日日躁夜夜躁欧美| 亚洲欧美在线aaa| 成人sese在线| 亚洲天堂网中文字| 在线观看免费一区| 亚洲图片自拍偷拍| 欧美老女人在线| 视频一区在线视频| 日韩视频一区二区| 卡一卡二国产精品| 久久精品欧美日韩| 国产成人鲁色资源国产91色综| 国产日本亚洲高清| 99riav一区二区三区| 一区二区三区小说| 欧美久久久久中文字幕| 麻豆精品一区二区av白丝在线| 精品欧美乱码久久久久久1区2区 | 亚洲大片免费看| 欧美日韩成人在线一区| 老司机精品视频导航| 国产欧美综合色| 91丨九色丨蝌蚪富婆spa| 夜夜操天天操亚洲| 欧美一区二区三区成人| 国产一区二区精品久久99| 日韩毛片高清在线播放| 在线国产电影不卡| 蜜桃av一区二区在线观看 | 亚洲成人你懂的| 日韩三级在线观看| 床上的激情91.| 亚洲第一在线综合网站| 2020国产精品久久精品美国| 成人黄色在线网站| 一区二区三区在线视频免费观看 | 色婷婷综合久色| 免费av成人在线| 国产欧美一区在线| 欧美日韩视频第一区| 国产一区二区在线看| 一区二区三区欧美亚洲| 精品国产伦一区二区三区观看方式 | 中文字幕免费观看一区| 欧美性色黄大片| 国产精品99久久久久久有的能看| 亚洲女人的天堂| 精品噜噜噜噜久久久久久久久试看 | 精品成人一区二区三区| 欧美中文字幕不卡| 国产成人丝袜美腿| 日韩制服丝袜先锋影音| 国产精品成人网| 日韩一级高清毛片| 91黄色免费观看| 国产成人精品免费在线| 日韩高清一区二区| 亚洲欧美另类小说视频| 久久免费看少妇高潮| 在线电影欧美成精品| 色哟哟日韩精品| 不卡一二三区首页| 国产99久久久精品| 韩日av一区二区| 免费人成黄页网站在线一区二区 | 日本一区二区三区在线不卡| 7799精品视频| 欧美日韩精品一区二区三区| 91香蕉视频在线| 成人网页在线观看| 成人在线视频一区二区| 国产精品综合二区| 狠狠色综合日日| 国产在线播放一区| 九九精品一区二区| 久久疯狂做爰流白浆xx| 美腿丝袜一区二区三区| 亚洲成人综合网站| 日韩制服丝袜av| 蜜臀av一级做a爰片久久| 秋霞影院一区二区| 老司机午夜精品99久久| 韩国一区二区在线观看| 国产一区二区中文字幕| 国产成a人无v码亚洲福利| 国产不卡视频在线播放| 不卡在线视频中文字幕| 91欧美激情一区二区三区成人| 日本丰满少妇一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 色综合中文字幕| 欧美日韩精品一区二区三区四区 | 亚洲国产成人tv| 日韩电影在线一区二区| 蜜桃传媒麻豆第一区在线观看| 看电影不卡的网站| 高清不卡在线观看av| 99精品一区二区三区| 欧美网站一区二区| 日韩精品一区二区三区视频| 久久久久久久网| 最近中文字幕一区二区三区| 亚洲精品日韩一| 视频一区二区三区在线| 国产一区二区三区四 | 日韩不卡一区二区| 国产激情视频一区二区在线观看 | 欧美日韩视频一区二区| 日韩欧美国产综合一区 | 色视频成人在线观看免| 777午夜精品视频在线播放| 久久久夜色精品亚洲| 成人免费在线视频观看| 亚洲超碰97人人做人人爱| 国产一区二区三区美女| 在线视频国内一区二区| 2020国产精品| 一区二区三区日韩欧美| 精彩视频一区二区三区| 色综合色综合色综合| 精品久久一区二区三区| 亚洲免费观看高清在线观看| 蜜桃一区二区三区在线| 色综合欧美在线| 久久精品一区四区| 日韩中文欧美在线| 色素色在线综合| 欧美极品美女视频| 另类成人小视频在线| 欧美性受极品xxxx喷水| 国产精品久久精品日日| 极品尤物av久久免费看| 欧美伦理电影网| 一区二区三区精密机械公司| 国产成人av一区二区| 精品美女在线观看|