DP300-MON#60
SQL Server で Online Index Rebuild を実施する手順 を順序通りに 並べてください。
- sys.dm_db_index_physical_stats で Fragmentation % 確認
- 30% 以上の Index を特定
- ALTER INDEX ... REBUILD WITH (ONLINE = ON, FILLFACTOR = 90) 実行
- Maintenance Plan / Azure SQL Job で定期実施スケジュール 化
解説
【正しい順序】
- ステップ 1: sys.dm_db_index_physical_stats で Fragmentation % 確認
- ステップ 2: 30% 以上の Index を特定
- ステップ 3: ALTER INDEX ... REBUILD WITH (ONLINE = ON, FILLFACTOR = 90) 実行
- ステップ 4: Maintenance Plan / Azure SQL Job で定期実施スケジュール 化
【各ステップの理由】
- ステップ 1 sys.dm_db_index_physical_stats で Fragmentation % 確認: sys.dm_db_index_physical_stats(DB_ID, NULL, NULL, NULL, 'DETAILED') で Index ごとの avg_fragmentation_in_percent を 取得 します。
- ステップ 2 30% 以上の Index を特定: 30% 以上は REBUILD 推奨、5-30% は REORGANIZE 推奨で 30% 以上の Index リストを 特定 します。
- ステップ 3 ALTER INDEX ... REBUILD WITH (ONLINE = ON, FILLFACTOR = 90) 実行: ONLINE = ON で 24/7 運用 可能、FILLFACTOR = 90 で 将来 INSERT 用 余裕を残し 次の Rebuild まで Fragmentation を抑制 します。
- ステップ 4 Maintenance Plan / Azure SQL Job で定期実施スケジュール 化: SQL Server Agent / Elastic Jobs / Azure Automation で 週次 / 月次 自動 実施 し 継続的なメンテナンスを 実現 します。
【誤った順序の問題点】
- REBUILD → Fragmentation 確認: Fragmentation 状態 不明 で REBUILD すると 無駄処理 が発生します。
- スケジュール → 一度も実施 せず: 初回 手動 確認 と 動作 検証なしの自動化はリスクがあります。

コメント