日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...

發布時間:2024/4/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在理解統計信息(2/6):直方圖?中,我們討論了直方圖,密度向量,還有SQL Server如何用統計信息做基數計算(cardinality?estimation)。這篇文章會討論統計信息如何被創建,還有統計信息在性能調優中的重要性。

有2類統計信息,索引統計信息和列統計信息。索引統計信息是索引創建的一部分(建立索引會自動創建索引統計信息)。在where條件列被引用或查詢的group by子句里包含列,列統計信息都會由SQL Server自動創建。

有數據庫屬性設置里,可以設置數據庫是否自動創建統計信息并自動更新統計信息(數據庫屬性->選項->自動)。

自動創建統計信息默認是啟用的,它幫助查詢優化器在需要更好的進行查詢預估時,創建列統計信息。為了更好的性能,建議保留啟用。

自動更新統計信息默認也是啟用的,它幫助查詢優化器在統計信息過期的時候自動更新。當數據有明顯變化時,統計信息就需要更新。這里有個閥限(threshold limit)來標記統計信息是否過期。

自動異步更新統計信息默認是不啟用的。當自動異步更新統計信息被啟用的時候,會有2種方式進行自動更新。異步模式(默認模式),如果統計信息已經過期,查詢優化器會等到計劃生成完成才更新統計信息。同步模式,查詢優化器會初始化統計信息,不會等到計劃的生成完成。通過改變更新統計信息為同步模式可以使性能上一些工作量始終受益。SQL Server在自動創建/更新統計信息的時候,不會進行完全掃描。它只會在可接受的時間內采樣數據來計算統計信息。

在理解統計信息(1/6):密度里,我們看到,當引用的列在group by或where條件里時,統計信息會自動創建。我們來看看當自動創建統計信息關掉的時候,SQL Server如何進行預估。我們運行下面的語句并看看輸出結果。?

1 ALTER DATABASE StatisticsDB SET AUTO_CREATE_STATISTICS OFF 2 GO 3 DROP TABLE SalesOrderDetail_NoStats 4 SELECT * INTO SalesOrderDetail_NoStats FROM AdventureWorks2008r2.Sales.SalesOrderDetail 5 GO 6 SELECT ProductID,COUNT(*) FROM dbo.SalesOrderDetail_NoStats GROUP BY ProductID 7 GO 8 EXEC SP_HELPSTATS 'SalesOrderDetail_NoStats', 'ALL'

?第1句,我們關掉了StatisticsDB數據庫的自動更新統計信息。第2句,我們創建了salesOrderDetail表的副本?,F在我們對ProductId進行group 扮演操作,點擊工具欄的顯示包含實際的執行計劃。

?在執行計劃里,我們在表掃描運算符里看到一個黃色的驚嘆號。具體來說,它是警告我們沒有可用的統計信息。在聚集運算符里,我們看到優化器的估計行數是348.306。沒有統計信息,優化器要如何估計行數呢??這里的值是拿記錄總數開方而來。這個表有121317條記錄,如果你對它開方,即,我們就得到348.306。如果你對這個表group?by的其他任何列,預估行數還是一樣的。?請注意,自動創建統計信息只控制列統計信息的自動創建。它不控制索引創建時,統計信息的自動創建。

我們來看下統計信息如何影響查詢性能。來看下面2個查詢,記得在最后的查詢語句執行前點擊工具欄的顯示包含實際的執行計劃。

1 USE StatisticsDB 2 GO 3 /* Part 1 WITH AUTO STATS UPDATE ON */ 4 5 ALTER DATABASE StatisticsDB SET AUTO_CREATE_STATISTICS ON 6 ALTER DATABASE StatisticsDB SET AUTO_UPDATE_STATISTICS ON 7 SET STATISTICS IO ON 8 DROP TABLE SalesOrderDetail_NoStats 9 SELECT * INTO SalesOrderDetail_NoStats FROM SalesOrderDetail 10 CREATE INDEX ix_productid ON SalesOrderDetail_NoStats (productid) 11 UPDATE dbo.SalesOrderDetail_NoStats SET ProductID=775 WHERE SalesOrderDetailID<>1 12 SELECT * FROM dbo.SalesOrderDetail_NoStats WHERE ProductID=776 13 SELECT * FROM dbo.SalesOrderDetail_NoStats WHERE ProductID=775 14 15 /* Part 2 WITH AUTO STATS UPDATE Off */ 16 17 ALTER DATABASE StatisticsDB SET AUTO_CREATE_STATISTICS OFF 18 ALTER DATABASE StatisticsDB SET AUTO_UPDATE_STATISTICS OFF 19 SET STATISTICS IO ON 20 DROP TABLE SalesOrderDetail_NoStats 21 SELECT * INTO SalesOrderDetail_NoStats FROM SalesOrderDetail 22 CREATE INDEX ix_productid ON SalesOrderDetail_NoStats (productid) 23 UPDATE dbo.SalesOrderDetail_NoStats SET ProductID=775 WHERE SalesOrderDetailID<>1 24 --Disabling the auto update stats 25 ALTER DATABASE StatisticsDB SET AUTO_UPDATE_STATISTICS OFF 26 SELECT * FROM dbo.SalesOrderDetail_NoStats WHERE ProductID=776 27 SELECT * FROM dbo.SalesOrderDetail_NoStats WHERE ProductID=775

上述2組語句我們都在productid列創建了索引(統計信息也會自動創建),然后我們更新productid為775,只留1條還是不同的productid值。更新后,表里只有2個不同的productid值775和776。第1組語句,我們進行了自動更新統計信息啟用的SELECT查詢。第2組語句我們進行了自動更新統計信息停用的SELECT查詢。我們來看看2者執行計劃和IO統計信息的不同。

我們來看看啟用的執行計劃。第1個where條件是productid=776的查詢估計行數是1,000348,優化器進行的是索引查找。第2個where條件是productid=775的查詢估計行數是121316,優化器選擇的是表掃描,而不是非聚集索引查找和書簽查找。對優化器來說表掃描更有效,相比使用索引查找和書簽查找來獲取表里的所有記錄(只有一條記錄productid是776)。完成這個操作只需要1495個邏輯讀。

我們來看看停用的執行計劃。第1個where條件是productid=776的查詢估計行數是228,優化器進行的是索引查找。這個是基于索引創建是的統計信息來預估的,這個信息在update后已經過期了。第2個where條件是productid=775的查詢估計行數是234,這就嚴重誤導了查詢優化器使用了非聚集掃描和書簽查找來操作,而不是表掃描來獲取表的所有記錄(只有一條記錄productid是776)。完成這個操作需要121710個邏輯讀,相比啟用情況下僅1495個邏輯讀是非常非常高了。

從上面的例子,我們清楚的看到優化器需要更新的統計信息來選擇最優執行計劃,即使你有了必須的索引。在處理性能問題時,我們也需要關注下統計信息。把估計行數與實際行數的區別當作一個好指標,用來深入了解下統計信息,或統計信息的人為更新。

自動更新統計信息可以在以下3個級別進行關閉:

  • 數據庫級別,使用修改數據庫命令:ALTER DATABASE StatisticsDB SET AUTO_UPDATE_STATISTICS OFF
  • 索引級別,在創建或重建索引時使用STATISTICS_NORECOMPUTE?選項。這有點令人迷惑。這個選項默認是關閉的。就是說自動更新屬性是啟用的。
  • 統計信息級別,當創建或更新統計信息時使用NORECOMPUTE?選項。

使用sp_autostats?存儲過程可以查看表的對應統計信息的自動更新統計信息設置情況。如果在數據級別設置自動更新統計信息為停用,那表級別也會停用??梢允褂胹p_autostats存儲過程修改表級別的自動更新統計信息設置情況。繼續圍觀理解統計信息(4/6):自動更新統計信息的閥值——人為更新統計信息的重要性。

參考文章:

http://www.sqlservercentral.com/blogs/practicalsqldba/2013/07/01/sql-server-part-3-all-about-sql-server-statistics-who-create-and-manage-the-statistics-/

總結

以上是生活随笔為你收集整理的理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性喷潮久久久久久久久 | 波多野结衣在线播放 | 国产综合激情 | 日本黄色不卡 | 色天使在线视频 | 欧洲色网站 | 黄色精品免费 | 一级黄色片在线看 | 午夜久久 | 国产日产欧美一区二区 | 男人与雌宠物交h | 国产麻豆免费视频 | 欧美日韩高清一区二区 | 欧美资源在线观看 | 国产人妻精品一区二区三区 | a男人天堂| 欧美大片黄 | 广州毛片 | 精品无码国产污污污免费网站 | 日本99视频| 人妻一区二区三区视频 | 日韩性在线 | 天天艹天天射 | 精品久久网站 | 国产精品一区二区免费在线观看 | 亚洲一级色 | 亚洲成人久久久 | 久久久久国产精品区片区无码 | 国产丝袜一区二区 | 日韩欧美高清一区 | 国产精品久线在线观看 | 国产日产欧美一区二区三区 | 91爱啪 | 一级黄色在线 | 秋霞影院午夜丰满少妇在线视频 | 久久免费在线视频 | 亚洲美女自拍偷拍 | 蜜桃视频在线观看一区二区 | 成人二三区 | 日韩少妇裸体做爰视频 | 日韩中出在线 | 亚洲aa视频| 探花视频在线免费观看 | 国产精品一卡二卡在线观看 | 一区二区在线免费视频 | 波多野结衣一二三区 | 免费观看全黄做爰的视频 | 日韩精品二区在线观看 | 国产精伦 | 阿v天堂网| 国产+日韩+欧美 | 91色交 | 人妻久久久一区二区三区 | 欧美亚洲天堂网 | 91学生片黄 | 九九一级片 | 免费av在线 | 欧美日韩网 | 欧美猛交免费 | 国产做爰xxxⅹ高潮视频12p | 色噜噜一区二区 | 精品免费视频一区二区 | 在线免费国产视频 | 最近免费中文字幕大全免费版视频 | 女色婷婷 | 日韩欧美不卡 | 夜夜噜噜噜 | 国产激情无码一区二区三区 | 亚洲欲| 91网站观看 | 97影院 | 亚洲一区欧美激情 | 五月婷婷天堂 | 9191av| 在线精品福利 | 久久成人福利 | 男生尿隔着内裤呲出来视频 | 性一交一乱一精一晶 | 欧美精品一区二区成人 | 无码国产精品一区二区免费式直播 | 超碰97观看| 亚洲精品久久久久久久蜜桃臀 | 免费a视频在线观看 | 青青草这里只有精品 | а√天堂资源官网在线资源 | 99国产精品久久久久 | 亚洲精品四区 | 超碰午夜| 亚洲黄色大片 | 国产高潮在线观看 | 青青草www | 国产精品午夜未成人免费观看 | 黑人巨大精品欧美一区免费视频 | 欧美爱爱网 | 亚洲狼人天堂 | 久久精品99国产精品日本 | 亚洲精品一线二线三线 | 久久久久网 | 1级性生活片 |