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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL Server 索引重建手册

發(fā)布時(shí)間:2023/12/2 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server 索引重建手册 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
注意: 索引重建前建議把數(shù)據(jù)庫(kù)切換為完整模式,否則索引復(fù)制會(huì)在數(shù)據(jù)文件中進(jìn)行,導(dǎo)致數(shù)據(jù)文件很大,而數(shù)據(jù)文件的收縮比日志文件的收縮要困難的多,且會(huì)對(duì)業(yè)務(wù)造成影響。 步驟一: 查詢(xún)索引碎片,腳本如下,庫(kù)比較大時(shí)執(zhí)行時(shí)間會(huì)很長(zhǎng),雖然對(duì)數(shù)據(jù)庫(kù)影響不大,依然建議在非高峰時(shí)段執(zhí)行。(執(zhí)行之前請(qǐng)先選定要查詢(xún)碎片的數(shù)據(jù)庫(kù)) Declare @dbid int Select @dbid=DB_ID() SELECT DB_NAME(ps.database_id) AS [Database Name], OBJECT_NAME(ps.OBJECT_ID) AS [Object Name], i.name AS [Index Name], ps.index_id, ps.index_type_desc, ps.avg_fragmentation_in_percent, ps.fragment_count, ps.page_count, i.fill_factor, i.has_filter, i.filter_definition FROM sys.dm_db_index_physical_stats(@dbid,NULL, NULL, NULL,null) AS ps INNER JOIN sys.indexes AS i WITH (NOLOCK) ON ps.[object_id] = i.[object_id] AND ps.index_id = i.index_id WHERE ps.database_id = DB_ID() AND ps.index_type_desc <> 'HEAP' AND ps.page_count > 2500 ORDER BY ps.avg_fragmentation_in_percent DESC OPTION (RECOMPILE); 步驟二: 篩選需要進(jìn)行索引重建的表,舉例如下: 一般來(lái)說(shuō),avg_fragmentation_in_percent大于60%就可以考慮重建了,因此本例中前10個(gè)索引都需要重建。其中index_id為1的表示是聚集索引(主鍵索引)。 步驟三: !!!重要警告:操作前先備份全庫(kù),留后手永遠(yuǎn)是對(duì)自己和企業(yè)最大的負(fù)責(zé)。 索引重建的方式,我們一般采用在線(xiàn)重建的方式(SQL Server 2005之前的版本不支持),因此語(yǔ)句如下: alter index index_name on table_name rebuild with(online = on ,sort_in_tempDB = on , maxdop = 最大并行度); go 在這里最大并行度應(yīng)當(dāng)選擇操作系統(tǒng)CPU核數(shù)的80%為宜。 此外索引重建應(yīng)當(dāng)遵循以下原則:
  • 為避免空間使用過(guò)多,應(yīng)當(dāng)對(duì)索引進(jìn)行依次重建,不建議使用alter index all on table_name...的語(yǔ)句。
  • 如果一個(gè)表有多個(gè)索引需要重建,則重建的順序必須為:先重建聚集索引(即主鍵索引),再重建非聚集索引。
步驟四: 在在線(xiàn)重建索引的過(guò)程中,需要觀(guān)察索引重建的進(jìn)度,但是online索引重建的進(jìn)度并不會(huì)在sys.dm_exec_requests中顯示,因此微軟提供了另一種查看完成進(jìn)度的方式,具體如下: 在sql profiler的Progress Report中,可以監(jiān)視Online Index Operation的情況。 其中BigintData1表示已經(jīng)完成的在線(xiàn)重建記錄數(shù),BigData2表示當(dāng)前線(xiàn)程的序列號(hào),只要把所有進(jìn)程的max(bigdata1)之和與和表的總行數(shù)比較一下就可以大致知道目前的進(jìn)度了。 注意由于每個(gè)任務(wù)分配的行數(shù)并不均勻,所以估算的結(jié)果不是很精確,不過(guò)一般不會(huì)太離譜。

轉(zhuǎn)載于:https://www.cnblogs.com/leohahah/p/7652410.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的SQL Server 索引重建手册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。