国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

理解統計信息(5/6):如何檢測過期的統計信息

2024-07-21 02:47:00
字體:
來源:轉載
供稿:網友
理解統計信息(5/6):如何檢測過期的統計信息

在 理解統計信息(4/6):自動更新統計信息的閥值——人為更新統計信息的重要性里,我們討論了自動更新統計信息的閥值,這個閥值在某些情況下,基于自動更新的統計信息還是可以獲得最優的執行計劃的。在大多數情況下,人為更新統計信息可以獲得更好的性能。這個文章,我們可以來看下如何檢測過期的統計信息。

在SQL Server 2005以后的版本里,SQL Server使用ColModCtr對統計的主要列對象進行跟蹤。但在SQL server 2005或SQL server 2008里沒有對應的DMV進行查詢,直到SQL server 2008 R2 (SP2)開始的版本,才有sys.dm_db_stats_PRoperties對統計的主要列對象改變有詳細的統計信息。

對于老版本的SQL Server用戶來說,我們需要基于sys.sysindexes的可用rowmodctr。自SQL Server 2005開始的版本,rowmodctr已經與老版本不再兼容。在SQL Server早期版本里,數據庫引擎維護行級別的計數器修改(row-level modification counters)。這些計數器現在在列級別維護。因此,rowmodctr用來計算和生成的結果與早期版本的計數器類似,但不完全等同。

下面的查詢可以列出在統計信息里的預估改變:

 1 SELECT  2      TableName=OBJECT_NAME(i.OBJECT_ID) 3     ,ObjectType=o.type_desc 4     ,StatisticsName=i.[name] 5     ,statisticsUpdateDate = STATS_DATE(i.OBJECT_ID, i.index_id) 6     ,RecordModified=si.rowmodctr 7     ,NumberofRecords=si.rowcnt 8 FROM sys.indexes i  9 JOIN sys.objects o ON    i.OBJECT_ID=o.OBJECT_ID10 JOIN sys.sysindexes si ON    i.OBJECT_ID=si.id11     AND i.index_id=si.indid 12 WHERE  o.TYPE <> 'S' AND STATS_DATE(i.OBJECT_ID, i.index_id) IS NOT NULL13 UNION ALL14 SELECT 15      TableName=OBJECT_NAME(o.OBJECT_ID)16     ,ObjectType=o.type_desc17     ,StatisticsName=s.name18     ,statisticsUpdateDate= STATS_DATE(o.OBJECT_ID, s.stats_id)19     ,RecordModified=si.rowmodctr20     ,NumberofRecords=ir.rowcnt21 FROM sys.stats s INNER JOIN sys.objects o ON s.OBJECT_ID=o.OBJECT_ID22 JOIN sys.sysindexes si ON s.OBJECT_ID=si.id AND s.stats_id= si.indid23 INNER JOIN (SELECT id,rowcnt FROM sys.sysindexes WHERE indid IN (0,1)) IR24 ON IR.id=o.OBJECT_ID  WHERE  o.TYPE <> 'S'  25 AND (s.auto_created=1 OR s.user_created=1)AND STATS_DATE(o.OBJECT_ID, s.stats_id) IS NOT NULL

根據這個查詢結果,加上我們系統中現運行查詢的工作量/類別,我們就可以在合適的時間用計劃任務定期對統計信息進行更新,不用盲目的更新所有統計信息。繼續圍觀統計信息總結。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大姚县| 孟州市| 广河县| 潍坊市| 巴塘县| 额尔古纳市| 广宁县| 开封市| 甘洛县| 麻江县| 喜德县| 宜阳县| 黄梅县| 军事| 新和县| 锡林浩特市| 鄂尔多斯市| 建阳市| 大连市| 繁峙县| 石屏县| 永吉县| 玉溪市| 武川县| 米脂县| 进贤县| 泾阳县| 卢龙县| 靖宇县| 宁武县| 石家庄市| 长丰县| 万安县| 靖江市| 兴安盟| 博爱县| 微山县| 乌拉特后旗| 开平市| 鲁甸县| 遵义市|