LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL Server 重建索引與重組索引區(qū)別

admin
2025年1月9日 22:1 本文熱度 190


在討論索引碎片時,很多同學(xué)并不知道重建索引(ALTER INDEX ... REBUILD)和重組索引( ALTER INDEX ... REORGANIZE)之間的區(qū)別,所以下面就是這篇文章的主題。以下所說的僅適用于基于行的索引(不是列存儲索引),同樣適用于聚集索引或非聚集索引。


空間需求


重建索引是要在刪除舊索引之后創(chuàng)建新索引,不管舊索引中存在多少的碎片。這意味著你需要有足夠的可用空間來容納新索引。


組索引首先將索引行擠壓在一起以嘗試釋放一些索引頁,然后將其頁面重新調(diào)整,使其物理(分配)順序與邏輯(鍵)順序相同。這只需要一個 8KB 的頁面作為移動頁面的臨時存儲。因此,索引重組非常節(jié)省空間。


如果磁盤空間有限,對于分區(qū)表又無法利用單分區(qū)重建索引,則重組索引是比較好的方法。


算法速度


重建索引將始終構(gòu)建一個新索引,即使沒有碎片的索引(看你是否設(shè)置索引填充度)。重建所需的時間長度與索引的大小有關(guān),而不是其中的碎片量。


重組索引只處理存在的碎片,碎片越多,重組所需的時間就越長。


這意味著對于碎片較少的索引(例如小于 30% 的碎片),重組索引通常會更快。但對于碎片較多的索引,通常重建索引會更快。所以我們通常設(shè)置, 0-5% 的碎片什么都不做,5%-30% 的碎片則重組索引,30%+ 重建索引。


生成的事務(wù)日志


在 FULL 恢復(fù)模式下,重建索引是完全記錄的,因此事務(wù)日志需要在單個事務(wù)中容納索引完整大小。這也意味著重建索引生成的事務(wù)日志可能需要進(jìn)行鏡像、發(fā)送到 AG 副本、復(fù)制掃描、備份等。


在 SIMPLE 和 BULK_LOGGED 恢復(fù)模式下,由離線重建索引生成的事務(wù)日志量將是最小的(在線索引重建總是完全記錄)——只是按頁面和區(qū)進(jìn)行分配。但是,下一次執(zhí)行日志備份(BULK_LOGGED 模式或切換到 FULL 模式)時也將包含重建更改的所有范圍,因此日志備份的大小與在 FULL 恢復(fù)模式下重建索引完成的大小是一樣的。這樣做的好處是,在單個事務(wù)重建索引期間,不用考慮事務(wù)日志有較大的增長。


而在所有的恢復(fù)模式中,重組索引都是完全記錄的,但只作為一系列小事務(wù)執(zhí)行,因此不會導(dǎo)致事務(wù)日志異常增長。當(dāng)然,事務(wù)日志僅為執(zhí)行期間生成的大小,所以重組索引可能會少一些,因為它只處理存在的碎片。


鎖請求


任何離線重建索引都持有表的架構(gòu)修改鎖(SCH-M)——不能更新或讀取整個表。


任何在線重建索引都會在操作開始時獲取一個短期共享表鎖,在整個操作過程中持有一個意向共享鎖(只會阻塞排他鎖和架構(gòu)修改鎖),然后在操作結(jié)束時獲得一個短期架構(gòu)修改鎖。從 SQL Server 2014 開始,你可以使用 WAIT_AT_LOW_PRIORITY 選項來延遲潛在的阻塞。


重組索引在整個操作過程中持有一個意向排他鎖,它只會阻塞共享、排他和架構(gòu)修改鎖。


是否可中斷


重建索引操作不能被中斷,它是原子性的,要么全有要么全無,除非你想撤銷并回滾該操作。但是在 SQL Server 2017 中,提供了一個可恢復(fù)的在線索引重建功能。


重組索引可以進(jìn)行中斷,前期處理的不會進(jìn)行回滾,最糟糕的情況只是對當(dāng)前正在進(jìn)行的單頁移動回滾。


是否報告進(jìn)度


重建索引沒有正確的進(jìn)度報告。你可以通過Profiler 事件 Progress Report: Online Index Operation 中的 bigintdata1 列來對在線索引操作進(jìn)行跟蹤,這顯示了舊索引的多少行已被掃描。你還可以通過查看 SPID 在sys.dm_exec_requests 中完成的頁面讀取次數(shù)推斷。


重組索引操作參考 sys.dm_exec_requests 的 percent_complete 列,你可以輕松地衡量其剩余的工作量。事實上,DBCC INDEXDEFRAG 也用于進(jìn)行進(jìn)度報告,但不太優(yōu)雅,它每 30 秒向你的連接打印一條進(jìn)度消息。


統(tǒng)計信息


重建索引將始終使用等效于完全掃描(或采樣,對于索引分區(qū)或索引已分區(qū))重建索引列統(tǒng)計信息。


重組索引看不到索引的整體視圖,因此無法更新統(tǒng)計信息,這意味著需要手動維護(hù)索引統(tǒng)計信息。


總結(jié)


正如你所看到的,在重建和重組之間有相當(dāng)多的主要區(qū)別,但是對于你應(yīng)該使用哪一個并沒有正確的答案——那是你的選擇。


如果你的索引維護(hù)例程總是重新構(gòu)建而從不考慮重組,那么應(yīng)該重新考慮。為了節(jié)省時間和資源,通常更好的做法是重新組織輕微碎片化的索引,并重新構(gòu)建嚴(yán)重碎片化的索引。


和往常一樣,我推薦Ola Hallengren的免費代碼,而不是編寫自己的索引維護(hù)解決方案(是的,其他人也做過類似的工作,但我認(rèn)為Ola的代碼是迄今為止最好的、使用最廣泛的)。



閱讀原文:原文鏈接


該文章在 2025/1/10 11:05:45 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
精品久久久久久久久国产字幕 | 婷婷色一二三区波多野衣 | 亚洲日本香蕉520视频 | 日韩一中文字幕在线视频 | 亚洲激情视频欧美专区 | 一级中文字幕在线播放 |