您當(dāng)前位置: 主頁 > IT服務(wù) > 網(wǎng)絡(luò)服務(wù) >
數(shù)據(jù)庫維護(hù)是網(wǎng)絡(luò)管理員工作中非常重要的一部分。一個(gè)SQL Server數(shù)據(jù)庫就像一輛車:它需要經(jīng)常的檢查來保證運(yùn)行沒有問題,副作用,且擁有最大可能的性能。SQL Server數(shù)據(jù)庫最重要的部分是它的索引及其對(duì)應(yīng)的統(tǒng)計(jì)信息對(duì)象。SQL Server運(yùn)行一段時(shí)間后會(huì)有索引碎片,統(tǒng)計(jì)信息必須更新,這樣的話查詢優(yōu)化器才可以為你生成“足夠好”的執(zhí)行計(jì)劃。
1.索引(聚集,非聚集)會(huì)產(chǎn)生碎片。索引意味著邏輯和物理排列順序不再一致。如果你在傳統(tǒng)旋轉(zhuǎn)存儲(chǔ)上存儲(chǔ)你的數(shù)據(jù)庫,索引碎片在你的存儲(chǔ)子系統(tǒng)里帶來隨機(jī)I/O,與快速的循序I/O相比,它非常耗時(shí)。微軟建議下列索引維護(hù)的最佳實(shí)踐:
碎片低于10%:不進(jìn)行維護(hù)
碎片在10-30%:進(jìn)行索引重組操作
碎片大于30%:進(jìn)行索引重建操作
此外,索引重組和索引重建操作應(yīng)該只有在葉子層的頁數(shù)至少有10000頁才可以。如果你沒有達(dá)到這個(gè)閾值,你不會(huì)看到隨機(jī)I/O帶來的副作用消失。索引重建(Index Rebuild)操作會(huì)完全重建你的索引。它是一個(gè)在事務(wù)日志里完全記錄的“大”事務(wù)。在99%進(jìn)度的時(shí)候回滾你的重建操作是個(gè)非常不好的想法,因?yàn)镾QL Server需要把已做過的(有益的一面)全部重做一遍。因?yàn)槟愕幕貪L會(huì)花費(fèi)很長時(shí)間。因?yàn)樗饕亟〞?huì)重新生成你的整個(gè)索引,你的統(tǒng)計(jì)信息也會(huì)用全掃描更新。(網(wǎng)絡(luò)維護(hù)外包)
另外,因?yàn)樗莻€(gè)大事務(wù),如果這時(shí)你使用基于事務(wù)日志的HA技術(shù)就會(huì)有問題——例如數(shù)據(jù)庫鏡像或AlwaysOn可用組。SQL Server需要發(fā)送你的整個(gè)事務(wù)到鏡像(或復(fù)制的地方)。那就意味著你的網(wǎng)絡(luò)流量里有大量的事務(wù)日志記錄。這對(duì)你的HA策略會(huì)有很大的副作用。
作為一個(gè)替代方法,索引重組(Index Reorganize)操作只處理你的索引的葉子層,重組葉子層的邏輯排序。因此,索引重組不會(huì)為你更新統(tǒng)計(jì)信息。索引重組只包含多個(gè)小的系統(tǒng)事務(wù)。因此它不會(huì)在事務(wù)日志上帶來太大壓力,因?yàn)樘摂M日志文件可以為了更快的重用而被標(biāo)記。索引重組操作對(duì)使用數(shù)據(jù)庫鏡像或AlwaysOn可用組都是有益的,因?yàn)槭褂盟饕亟M操作你沒有給網(wǎng)絡(luò)流量里倒入大量的事務(wù)。
如何進(jìn)行維護(hù)操作?(it外包)
我經(jīng)常被問到的問題是在SQL Server里如何進(jìn)行維護(hù)操作。這里推薦使用Ola Hallengren提供的SQL Server維護(hù)解決方案。這個(gè)解決方案包含一些列的存儲(chǔ)過程,使用它們你可以繼續(xù)寧數(shù)據(jù)庫一致性檢查,備份,還有索引維護(hù)操作。索引碎片等級(jí)就是你提供存儲(chǔ)過程的參數(shù)值。我們來看看下列IndexOptimize存儲(chǔ)過程的調(diào)用:
EXEC [master].[dbo].[IndexOptimize]
@Databases = 'AdventureWorks2012',
@FragmentationLow = 'INDEX_REBUILD_OFFLINE',
@FragmentationMedium = NULL,
@FragmentationHigh = NULL,
@FragmentationLevel1 = 10,
@FragmentationLevel2 = 30,
@PageCountLevel = 10000,
@SortInTempdb = 'N',
@MaxDOP = NULL,
@FillFactor = NULL,
@PadIndex = NULL,
@LOBCompaction = 'Y',
@UpdateStatistics = NULL,
@OnlyModifiedStatistics = 'N',
@StatisticsSample = NULL,
@StatisticsResample = 'N',
@PartitionLevel = 'N',
@TimeLimit = NULL,
@Indexes = NULL
@Delay = NULL,
@LogToTable = 'Y',
@Execute = 'Y'
GO
從代碼里你可以看到,你可以指定不同的碎片等級(jí)作為參數(shù)(FragmentationLevel1, FragmentationLevel2)。最后對(duì)于這些碎片等級(jí)你指定你想要進(jìn)行的索引操作(FragmentationLow, FragmentationMedium, FragmentationHigh)。在SQL Server里它是非常簡單,卻是非常強(qiáng)大的進(jìn)行索引維護(hù)操作的方法。(電腦維護(hù)外包)
艾銻無限是中國領(lǐng)先IT外包服務(wù)商,專業(yè)為企業(yè)提供IT運(yùn)維外包、電腦維護(hù)、網(wǎng)絡(luò)維護(hù)、網(wǎng)絡(luò)布線、辦公設(shè)備維護(hù)、服務(wù)器維護(hù)、數(shù)據(jù)備份恢復(fù)、門禁監(jiān)控、網(wǎng)站建設(shè)等多項(xiàng)IT服務(wù)外包,服務(wù)熱線:400-650-7820 聯(lián)系電話:010-62684652 咨詢QQ1548853602 地址:北京市海淀區(qū)北京科技會(huì)展2號(hào)樓16D,用心服務(wù)每一天,為企業(yè)的發(fā)展提升更高的效率,創(chuàng)造更大的價(jià)值。
更多的IT外包信息盡在艾銻無限http://www.wgjkw.cn
相關(guān)文章