亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

理解統計信息(4/6):自動更新統計信息的閥值——人為更新統計信息的重要性

2024-07-21 02:47:00
字體:
來源:轉載
供稿:網友
理解統計信息(4/6):自動更新統計信息的閥值——人為更新統計信息的重要性

在理解統計信息(3/6):誰創建和管理統計信息?在性能調優中,統計信息的作用里我們討論了統計信息的自動創建和自動更新。我們真的需要人為維護統計信息來保持性能最優?答案是肯定的,這取決與你的工作量。SQL Server只在達到閥限值時進行統計信息的自動更新。當大量的Insert/Update/Delete操作發生時,內建的自動更新統計信息不能持續保證性能的最優。

經過一系列的Insert/Update/Delete后,統計信息可能不會是最新。如果SQL Server查詢優化器在表里需要指定列的統計信息,自上次統計信息創建或更新后經歷了實質的更新活動,SQL Server會通過采樣列值自動更新統計信息(通過自動更新統計信息)。統計信息的自動更新由查詢優化器或編譯好的計劃執行來觸發,它只涉及到查詢里引用到的各個列。如果自動異步更新統計信息是停用的話,統計信息會在查詢編譯前更新,啟用的話是在查詢編譯后更新。當統計信息是異步更新時,受益于觸發更新的查詢使用老的統計信息。對一些工作量來說,這可以提供更可預估的響應時間,尤其是那些大表上的短時間運行的查詢。

當一個查詢首次編譯完成,如果優化器需要指定對象的統計信息,這個統計信息存在的話,若已過期則自動更新統計信息。如果一個查詢被執行且它的計劃在緩存里,計劃依賴的統計信息會被檢查是否過期,如果過期,計劃會在緩沖中移除,在查詢的重編譯時,統計信息會被更新。如果計劃依賴的任何統計信息被更新的話,計劃都會從緩存中移除。

SQL Server 2008基于列修改的計數器(colmodctrs)來決定是否更新統計信息:

在下列情況下,統計信息對象被認為過期:

如果在常規表上定義的統計信息,被認為過期的話,那么:

  1. 表的大小從0行變成了大于0行(測試1)
  2. 當統計信息收集時,表的行數為500或更少,統計的第一列對象的計數器,自改變為大于500時(測試2)。
  3. 當統計信息收集時,表的行數大于500時,統計的第一列對象的計數器,受表里超過500 +20%的行數而改變(測試3)。

上述描述來自微軟的MSDN,具體參見Statistics Used by the Query Optimizer in Microsoft SQL Server 2008。

前2個條件還是相當好的,但第3個條件在處理大表時,有些時候閥值會很高,但對統計信息更新還是無效。例如有個表有100000條記錄,只有在200500條件記錄被修改后(update/insert),對于觸發自動更新還是無效的閥值。

我們來看個例子。

1 USE StatisticsDB2 GO3 4 DROP TABLE SalesOrderDetail5 SELECT * INTO SalesOrderDetail FROM AdventureWorks2008r2.sales.SalesOrderDetail6 CREATE INDEX ix_PRoductID ON SalesOrderDetail(ProductID)7 SET STATISTICS IO ON8 SELECT * FROM SalesOrderDetail WHERE ProductID=725

我們創建了SalesOrderDetail表的副本,并在上面創建非聚集索引,我們看下最后SELECT查詢的執行計劃,點擊工具欄的顯示包含實際的執行計劃。

優化器選擇了索引查找和書簽查找操作作為優化的計劃,完成這個操作需要377個邏輯讀。

salesOrderDetail表有121317條記錄,上述第3個條件如果要使統計信息無效的話,121317的20% =24263+500=24763條記錄需要被修改,我們用下列語句只更新5000條記錄,再次看看查詢的執行計劃,點擊工具欄的顯示包含實際的執行計劃。

1 SET ROWCOUNT 50002 UPDATE SalesOrderDetail SET ProductID=725 WHERE ProductID<>7253 SET ROWCOUNT 04 SET STATISTICS IO ON5 SELECT * FROM SalesOrderDetail WHERE ProductID=725

執行計劃里估計行數是374,這是基于上次更新操作收集的統計信息。優化器基于統計信息,選擇了索引查找和書簽查找作為最優計劃。SELECT操作進行5390邏輯讀來完成這個操作。

下一步,我們用producid值為725來更新19762條記錄。實際上我們更新24762條記錄(包含上一步5000條更新的記錄),比使統計信息無效的更新的記錄(24763)少1條。

1 SET ROWCOUNT 197622 UPDATE SalesOrderDetail SET ProductID=725 WHERE ProductID<>7253 SET ROWCOUNT 04 SET STATISTICS IO ON5 SELECT * FROM SalesOrderDetail WHERE ProductID=725

執行計劃里估計行數是374,這是基于上次更新操作收集的統計信息。優化器基于統計信息,選擇了索引查找和書簽查找作為最優計劃。完成這個操作需要25206個邏輯讀。

現在我們更新再多一條記錄使統計信息無效。

1 SET ROWCOUNT 12 UPDATE SalesOrderDetail SET ProductID=725 WHERE ProductID<>7253 SET ROWCOUNT 04 SET STATISTICS IO ON5 SELECT * FROM SalesOrderDetail WHERE ProductID=725

(這里我跌了個跟頭,在SQL SERVER 2008R2里首次執行,始終是下列結果:

回家吃飯還在思考這個問題,一想原因,應該是自動創建統計信息和自動更新統計信息被停用的原因(上篇文章理解統計信息(3/6):誰創建和管理統計信息?在性能調優中,統計信息的作用代碼執行后未還原為默認設置),在數據庫屬性里一看,果然是False狀態,趕緊用下列語句啟用,出現的問題立馬消失!

1 ALTER DATABASE StatisticsDB SET AUTO_CREATE_STATISTICS ON2 ALTER DATABASE StatisticsDB SET AUTO_UPDATE_STATISTICS ON

看來計算機是最誠實可靠的,即使計算機犯了錯,也是因為人犯錯造成的!

和我們預期的一樣,SELECT語句觸發了自動更新統計信息,計劃中的估計行數和實際行數已經非常接近了。這可以幫助優化器選擇更好的執行計劃。優化器選擇了表掃描而不是索引查找和書簽查找。SELECT操作只進行了1495個邏輯讀來選取25137條記錄,比起25212個邏輯讀才選擇2516條記錄。在第一步,我們只更新了5000條記錄,如果統計信息在那個時候更新的話,優化器可能會選擇表掃描作為最優計劃而不是索引查找和書簽查找。那樣的話就可以只用1495個邏輯讀代替5390個邏輯讀來完成操作,這樣就會好很多。

從這個例子我們可以清楚看到,對于自動更新統計信息的閥值對于獲得最優性能還是不夠好。對于大表來說會更糟。我們就需要人為去更新統計信息用來保證長須的最佳性能,當然更新的頻率要看具體的工作量。

在進行大量DML操作后,統計信息都會過期,在查詢計劃訪問統計信息前,統計信息都不會自動更新。更清楚的說,SQL Server會在下列情況自動更新統計信息:

  • 查詢第一次編譯,計劃使用到的統計信息已經過期
  • 查詢已有存在的查詢計劃,但計劃中的統計信息已經過期。

繼續圍觀理解統計信息(5/6):如何檢測過期的統計信息。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久在线观看| 国产精品一区二区av影院萌芽| 亚洲一区二区三| 按摩亚洲人久久| 久久亚洲一区二区三区四区五区高| 国产精品99久久久久久人| 久久久久国产一区二区三区| 日韩av在线高清| 欧美与欧洲交xxxx免费观看| 久久精品人人做人人爽| 中文字幕久热精品在线视频| 成人久久一区二区三区| 久久男人av资源网站| 亚洲国产99精品国自产| 久久国产精品久久久| 中国china体内裑精亚洲片| 视频在线一区二区| 久久精品中文字幕一区| 亚洲九九九在线观看| 91视频九色网站| 91精品久久久久久久久| 97在线视频免费| 日本精品一区二区三区在线| 欧美小视频在线| 一区二区三区视频免费在线观看| 欧美激情在线观看视频| 欧美性色视频在线| 日韩大片免费观看视频播放| 亚洲跨种族黑人xxx| 久久这里只有精品99| 日韩精品在线观| 色哟哟亚洲精品一区二区| 亚洲欧美一区二区三区在线| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品午夜视频| 福利视频一区二区| 国产a∨精品一区二区三区不卡| 国产精品久久久久久久app| 欧美精品videosex性欧美| 国产91精品最新在线播放| 精品国产老师黑色丝袜高跟鞋| 国产精品国语对白| 久久久久久18| 在线观看国产成人av片| 日韩成人免费视频| 亚洲一区中文字幕| 日韩av电影中文字幕| 亚洲天堂av在线免费观看| 欧美在线视频一区| 亚洲乱码一区av黑人高潮| 日韩精品极品在线观看| 中文字幕亚洲天堂| 久久九九国产精品怡红院| 久久精品久久久久久国产 免费| 亚洲男人天堂九九视频| 欧美成人高清视频| 伊人男人综合视频网| 亚洲视频精品在线| 欧美日韩国产一区中文午夜| 日韩一区二区福利| 国产精品视频白浆免费视频| 亚洲精品大尺度| 一区二区三区 在线观看视| 欧亚精品在线观看| 亚洲成人精品在线| 亚洲午夜精品视频| 亚洲成av人片在线观看香蕉| 国产欧美最新羞羞视频在线观看| 日韩中文字幕网站| 欧美精品aaa| 高清欧美一区二区三区| 亚洲国产精品久久久久久| 亚洲综合视频1区| 97视频在线观看成人| 精品久久久久久中文字幕大豆网| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲自拍在线观看| 国产精品午夜国产小视频| 久久九九有精品国产23| 永久555www成人免费| 欧美诱惑福利视频| 中文字幕久久久| 亚洲天堂免费在线| 日韩电影在线观看中文字幕| 国产精品视频专区| 92版电视剧仙鹤神针在线观看| 97精品欧美一区二区三区| 午夜精品一区二区三区在线| 91极品女神在线| 欧美日韩国产限制| 亚洲免费av网址| 亚洲美女在线观看| 2019国产精品自在线拍国产不卡| 欧美黄网免费在线观看| 欧美日韩综合视频网址| 久久久久久久久久久成人| 精品无人区乱码1区2区3区在线| 在线亚洲国产精品网| 亚洲欧美一区二区三区在线| 亚洲国产精品系列| 亚洲欧美一区二区三区四区| 日韩av在线网页| 精品视频在线观看日韩| 97久久久免费福利网址| 久久久久久国产精品三级玉女聊斋| www亚洲欧美| 成人av电影天堂| 亚洲人精选亚洲人成在线| 91超碰caoporn97人人| 91色琪琪电影亚洲精品久久| 欧美性理论片在线观看片免费| 永久555www成人免费| 黄网站色欧美视频| 亚洲国产成人一区| 久久久久久久久久国产精品| 欧美日韩国产成人在线观看| 色无极亚洲影院| 国产成人精品一区二区在线| 国产主播喷水一区二区| 欧美综合一区第一页| 国产免费亚洲高清| 成人国产精品av| 美女性感视频久久久| 亚洲欧美国产精品va在线观看| 精品呦交小u女在线| 亚洲专区国产精品| 亚洲第一福利网| 久久精品成人一区二区三区| 91九色国产社区在线观看| 91精品久久久久久| 不卡av在线播放| 色老头一区二区三区在线观看| 精品国产欧美成人夜夜嗨| 深夜福利亚洲导航| 久久久999精品视频| 中文字幕日韩精品在线观看| 国产成人精品午夜| 中文字幕久久精品| 欧美一级电影久久| 日韩美女视频免费看| 91精品久久久久久久久久入口| 国产成人一区二| 亚洲第一中文字幕| 91欧美精品午夜性色福利在线| 色妞久久福利网| 亚洲第一天堂无码专区| 性色av一区二区三区| 粗暴蹂躏中文一区二区三区| 日本精品一区二区三区在线播放视频| 久久av中文字幕| 国内精品视频久久| 一区二区三区亚洲| 亚洲精品一二区| 欧美在线免费视频| 亚洲xxxx在线| 欧美激情精品久久久久久| 国产亚洲在线播放| 国产精品女主播| 欧美日韩国产第一页| 日韩有码在线播放| 色悠悠国产精品| 91精品国产高清自在线| 日韩视频欧美视频| 最近2019好看的中文字幕免费|