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

首頁 > 開發 > 綜合 > 正文

索引碎片檢測

2024-07-21 02:47:02
字體:
來源:轉載
供稿:網友
索引碎片檢測

在索引碎片里我們解釋了不同類型的碎片,還有它們如何影響查詢性能。在這個文章里,我們會討論下如何檢測索引碎片。

內部碎片檢測

內部碎片是關于頁面飽和度的一切,可以用DETAILED模式的sys.dm_db_index_physical_stats,avg_page_space_used_in_percent列會給出索引的內部碎片,下面的查詢會列出超過10個頁面,且頁面飽和度低于85%的索引。

 1 EXEC sp_configure 'show advanced options', 1 2 GO 3 RECONFIGURE WITH OVERRIDE 4 GO 5 DECLARE @DefaultFillFactor INT  6 DECLARE @Fillfactor TABLE 7     ( 8       Name VARCHAR(100) , 9       Minimum INT ,10       Maximum INT ,11       config_value INT ,12       run_value INT13     )14 INSERT  INTO @Fillfactor15         EXEC sp_configure 'fill factor (%)'     16 SELECT  @DefaultFillFactor = CASE WHEN run_value = 0 THEN 10017                                   ELSE run_value18                              END19 FROM    @Fillfactor 20 21 SELECT  DB_NAME() AS DBname ,22         QUOTENAME(s.name) AS CchemaName ,23         QUOTENAME(o.name) AS TableName ,24         i.name AS IndexName ,25         stats.Index_type_desc AS IndexType ,26         stats.page_count AS [PageCount] ,27         stats.partition_number AS PartitionNumber ,28         CASE WHEN i.fill_factor > 0 THEN i.fill_factor29              ELSE @DefaultFillFactor30         END AS [Fill Factor] ,31         stats.avg_page_space_used_in_percent ,32         CASE WHEN stats.index_level = 0 THEN 'Leaf Level'33              ELSE 'Nonleaf Level'34         END AS IndexLevel35 FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED')36         AS stats ,37         sys.objects AS o ,38         sys.schemas AS s ,39         sys.indexes AS i40 WHERE   o.OBJECT_ID = stats.OBJECT_ID41         AND s.schema_id = o.schema_id42         AND i.OBJECT_ID = stats.OBJECT_ID43         AND i.index_id = stats.index_id44         AND stats.avg_page_space_used_in_percent <= 8545         AND stats.page_count >= 1046         AND stats.index_id > 047 ORDER BY stats.avg_page_space_used_in_percent ASC ,48         stats.page_count DESC

這里我在WHERE條件里指定了只列出超過10頁,且頁面飽和度低于85%的結果。這是基于我當前系統環境和一些文檔的最佳實踐。avg_page_space_used_in_percent的低值,加上PageCount的高值,會影響到系統性能。avg_page_space_used_in_percent的低值會下列不同的原因:

  • 分頁和記錄刪除:在這個情況下,我們需要對索引進行REBUILD和REORGANIZE操作。如果碎片報告在非頁層,需要REBUILD來減少碎片。
  • 填充因子設置:索引填充因子值的錯誤設置可能造成內部碎片。如果內部碎片是因為填充因子設置造成的,我們需要使用填充因子的新值對索引進行REBUILD。
  • 記錄大小:有些時候,記錄大小也會稱為內部碎片的原因。例如我們假設一條記錄大小是3000 bytes,一頁只能保存2條記錄。第3條記錄不能插入頁,因為頁里剩下的空間小于3000 bytes。在這種情況下,每一頁都會有2060 bytes的空余。為了解決因這個原因造成的碎片,我們需要重新設計表或者對表進行垂直分區。
外部碎片檢測

外部檢測也是用LIMITED模式的sys.dm_db_index_physical_stats,但我們使用avg_fragmentation_in_percent的結果來檢測外部碎片。使用LIMITED模式會給我們葉子層的碎片。如果要獲得非頁層的碎片,可以使用DETAILED或SAMPLE模式。碎片是頁的連續分配。例如如果一個索引有150頁,頁分配從1到50,55到60,65到120,還有140到180。每個這樣序列被稱為碎片,這里就是有4個碎片。

 1 EXEC sp_configure 'show advanced options', 1 2 GO 3 RECONFIGURE WITH OVERRIDE 4 GO 5 DECLARE @DefaultFillFactor INT  6 DECLARE @Fillfactor TABLE 7     ( 8       Name VARCHAR(100) , 9       Minimum INT ,10       Maximum INT ,11       config_value INT ,12       run_value INT13     )14 INSERT  INTO @Fillfactor15         EXEC sp_configure 'fill factor (%)'     16 SELECT  @DefaultFillFactor = CASE WHEN run_value = 0 THEN 10017                                   ELSE run_value18                              END19 FROM    @Fillfactor 20 21 SELECT  DB_NAME() AS DBname ,22         QUOTENAME(s.name) AS CchemaName ,23         QUOTENAME(o.name) AS TableName ,24         i.name AS IndexName ,25         stats.Index_type_desc AS IndexType ,26         stats.page_count AS [PageCount] ,27         stats.partition_number AS PartitionNumber ,28         CASE WHEN i.fill_factor > 0 THEN i.fill_factor29              ELSE @DefaultFillFactor30         END AS [Fill Factor] ,31         stats.avg_fragmentation_in_percent ,32         stats.fragment_count ,33         CASE WHEN stats.index_level = 0 THEN 'Leaf Level'34              ELSE 'Nonleaf Level'35         END AS IndexLevel36 FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED')37         AS stats ,38         sys.objects AS o ,39         sys.schemas AS s ,40         sys.indexes AS i41 WHERE   o.OBJECT_ID = stats.OBJECT_ID42         AND s.schema_id = o.schema_id43         AND i.OBJECT_ID = stats.OBJECT_ID44         AND i.index_id = stats.index_id45         AND stats.avg_fragmentation_in_percent >= 2046         AND stats.page_count >= 100047 ORDER BY stats.avg_fragmentation_in_percent DESC ,48         stats.page_count DESC

在這個查詢里,我使用的WHERE條件只列出碎片大于20%且最少1000頁的索引。avg_fragmentation_in_percent值高的話,可能有下列原因:

  • SQL Server存儲引擎對表或索引從混合區開始分配頁,直到頁數達到8頁。一旦頁數達到8頁,SQL Server引擎開始把整個統一區分配給索引。因此這里對于小表會有很高的碎片,重建索引會增加碎片。例如,我們假設一個索引有7頁,這些頁是從2個混合區分配的,當我們重建索引的時候,很可能把頁分配從2個混合區變成最大7個混合區,這就導致了碎片增加。
  • 即使也從混合區分配,還是有碎片產生的可能。當索引大小增長時,在非頁層也需要更多的頁。如果分配給葉子層的最后頁是250,在葉子層索引結構里增加更多的記錄,可能會在第1層索引需要更多的頁,然后SQL Server存儲引擎分配251頁在第1層索引,這就在葉子層產生了碎片。
  • 造成分頁的其他常見原因就是DML操作。Rebuild/Reorganize索引對于上述不能很好的減少碎片,但可以減少由分頁或刪除操作造成的碎片。
  • 我們按下列要求進行索引的維護:
    • 20-40%的碎片,用Reorganize來重新組織索引。
    • 大于40%的碎片,需要用Rebuild來重建索引。
    • 低于1000頁的索引,在索引維護邏輯上是被忽略的(不處理)
    • 大于50k的頁,碎片在10-20%之間,也要用Reorganize來重新組織索引。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产中文字幕在线观看| 久久久久久这里只有精品| 亚洲日本欧美日韩高观看| 欧美大全免费观看电视剧大泉洋| 国产欧美va欧美va香蕉在| 欧美成年人视频网站| 亚洲影院色在线观看免费| 欧美激情网站在线观看| 欧美亚洲另类激情另类| 国内伊人久久久久久网站视频| 久久久av亚洲男天堂| 亚洲石原莉奈一区二区在线观看| 亚洲xxxx18| 日韩精品在线观看一区二区| 91麻豆国产精品| 国产午夜精品全部视频播放| 亚洲精品中文字幕女同| 欧美大片免费看| 国产精品久久综合av爱欲tv| 在线观看国产精品91| 国产美女精品免费电影| 亚洲精品国产精品国自产观看浪潮| 国产精品久久精品| 国产精品视频网址| 日韩极品精品视频免费观看| 久久99国产精品自在自在app| 超薄丝袜一区二区| 亚洲成色777777在线观看影院| 国产精品狠色婷| 国产精自产拍久久久久久| 精品呦交小u女在线| 日本午夜在线亚洲.国产| 97视频在线观看网址| 91精品综合久久久久久五月天| 7m第一福利500精品视频| 欧美富婆性猛交| 日韩中文综合网| 国产精品高清在线| 亚洲视频axxx| 国产精品久久久久77777| 欧美性理论片在线观看片免费| 最近2019中文字幕大全第二页| 欧美激情综合色综合啪啪五月| 国产成人福利网站| 伊人成人开心激情综合网| 国产69久久精品成人看| 国产精品视频一区二区高潮| 精品视频一区在线视频| 国产精品自产拍在线观看| 97不卡在线视频| 欧美国产日韩免费| 最近2019中文字幕一页二页| 亚洲黄色www| 久久色精品视频| 中文字幕日韩专区| 成人精品一区二区三区电影免费| 国产精品狼人色视频一区| 亚洲国产黄色片| 欧美在线观看一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 自拍亚洲一区欧美另类| 欧美亚洲国产精品| 欧美成人在线网站| 中文字幕精品久久久久| 成人a视频在线观看| 亚洲另类欧美自拍| 亚洲www永久成人夜色| 久久亚洲精品网站| 国产一区二区三区欧美| 日韩免费av一区二区| 这里只有精品在线播放| 91av视频在线| 亚洲国模精品私拍| 尤物yw午夜国产精品视频明星| 国产日韩精品视频| 91精品在线观看视频| 国产丝袜一区视频在线观看| 尤物yw午夜国产精品视频明星| 欧美高清视频一区二区| 欧美一级淫片丝袜脚交| 国产精品video| 一本大道香蕉久在线播放29| 国内揄拍国内精品少妇国语| 在线免费看av不卡| 国产午夜精品久久久| 成人动漫网站在线观看| 中文字幕少妇一区二区三区| 国产不卡精品视男人的天堂| 亚洲电影在线看| 国产日韩在线精品av| 深夜福利日韩在线看| 亚洲精品国产欧美| 欧美肥臀大乳一区二区免费视频| 亚洲免费视频观看| 欧美超级免费视 在线| 97免费中文视频在线观看| 久久国产精品久久久久| 一区二区欧美久久| 亚洲综合精品伊人久久| 欧美一级黑人aaaaaaa做受| 久久精品青青大伊人av| 亚洲丁香久久久| 久久69精品久久久久久久电影好| 国产一区二区三区三区在线观看| 亚洲欧美制服综合另类| 成人午夜两性视频| 日本伊人精品一区二区三区介绍| 8090理伦午夜在线电影| 爽爽爽爽爽爽爽成人免费观看| 日韩美女在线观看一区| 欧美在线视频导航| 国产成人精品日本亚洲专区61| 91在线免费网站| 91色p视频在线| 国产精品免费视频久久久| 狠狠爱在线视频一区| 日韩亚洲国产中文字幕| 国产欧美日韩最新| 国产成人欧美在线观看| 亚洲精品久久7777777| 欧美激情a∨在线视频播放| 欧洲成人在线视频| 日韩在线中文字幕| 久久久精品久久久| 日韩中文字幕在线精品| 久久99视频免费| 国产精品中文字幕在线观看| 国产成+人+综合+亚洲欧洲| 欧美精品制服第一页| 亚洲精品xxxx| 91产国在线观看动作片喷水| 日本三级久久久| 26uuu另类亚洲欧美日本老年| 欧美日韩国产精品一区二区三区四区| 欧美激情va永久在线播放| 成人欧美一区二区三区在线| 97在线视频国产| 亚洲xxxx在线| 亚洲午夜色婷婷在线| 亚洲黄色片网站| 97在线观看视频| 久久精品国产亚洲7777| 欧美日韩国产成人在线观看| 国产精品免费看久久久香蕉| 国产欧美在线观看| 亚洲影院色在线观看免费| 日本精品久久久| 国产精品极品在线| 久久精品99国产精品酒店日本| 欧美亚洲视频一区二区| 久久免费视频在线观看| 久久久噜久噜久久综合| 亚洲人成电影网| 色婷婷久久av| 国产va免费精品高清在线观看| 欧美三级欧美成人高清www| 精品视频在线播放免| 精品成人在线视频| 欧美成人免费一级人片100| 亚洲国产欧美一区| 欧美成人三级视频网站| 亚洲女成人图区| 在线观看欧美成人| 庆余年2免费日韩剧观看大牛|