2016-09-06 84 views
0

我有一個具有25個大型數據庫的實例。SQL索引處理

我已經設置了一個rebuild_all_indexes作業來重建每個數據庫上的所有索引。

由於數據庫的大型和OLTP環境,這項工作大約需要3,4天才能完成。

任何人都可以幫助我處理這種情況嗎?

由於作業步驟我使用了一些存儲過程調用是這樣的:

exec database1.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
--exec database2.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database3.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database4.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database5.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database6.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database7.dbo.SP_JOBS_REBUILD_DB_INDEXES 
GO 
exec database8.dbo.SP_JOBS_REBUILD_DB_INDEXES 
go 
............... 
............... 
upto database25.dbo.sp_jobs_rebuild_db_indexes 
+0

爲什麼要重建所有數據庫中的所有索引?你有什麼問題需要重建索引或解決問題? –

+0

您將在堆棧交換中的數據庫管理員站點上獲得更好的響應。 – Mike

+0

先生,正如我所說我有OLTP環境和報告,性能和分析我需要在一週內重建索引。 –

回答

0

從我的經驗,你應該檢查所有索引的碎片,重建或根據自己的碎片百分比重組索引。我建議你每晚都要做這個操作。在我最大的sql服務器(超過1TB)上,這個操作每天晚上2:40。數據庫備份期間請小心不要執行此操作。

此鏈接可以幫助您http://blog.sqlauthority.com/2010/01/12/sql-server-fragmentation-detect-fragmentation-and-eliminate-fragmentation/有一個腳本來檢查索引的碎片。正如你所看到的,建議在5到30%的碎片之間執行「重新組織」,當它達到30%時執行「重建」。

我個人使用自定義腳本工作,這裏有下列步驟操作:

  • 檢索所有的數據庫索引信息爲表(使用 選擇。從sys.dm_db_index_physical_stats(NULL,NULL,NULL, NULL,「有限」)PS
  • 根據上表,檢查破碎率和 執行重建或重新組織

所有在只有一名的J ob