はじめに
Query Storeは強力なパフォーマンス監視ツールですが、その効果を最大限に引き出し、長期的に活用するためには適切なメンテナンスと運用が不可欠です。この記事では、Query Storeのメンテナンス方法とベストプラクティスについて詳しく解説します。
データの保持と削除ポリシー
データ保持期間の設定
Query Storeのデータ保持期間はSTALE_QUERY_THRESHOLD_DAYS
パラメータで設定できます。以下は設定例です。
sql
ALTER DATABASE [YourDatabaseName]
SET QUERY_STORE (STALE_QUERY_THRESHOLD_DAYS = 60);
通常は30日がデフォルトですが、長期的なトレンド分析が必要な場合は60日や90日に延長することを検討してください。
自動クリーンアップ機能
Query Storeは設定された最大サイズ(MAX_STORAGE_SIZE_MB
)に近づくと、自動的に古いデータを削除します。この機能はSIZE_BASED_CLEANUP_MODE
パラメータで制御できます。
sql
ALTER DATABASE [YourDatabaseName]
SET QUERY_STORE (SIZE_BASED_CLEANUP_MODE = AUTO);
手動クリーンアップ
特定の条件に基づいて手動でデータをクリーンアップすることも可能です。例えば、以下のコマンドで特定の日付以前のデータを削除できます。
sql
ALTER DATABASE [YourDatabaseName]
SET QUERY_STORE CLEAR;
Query Storeのサイズ管理
最大サイズの設定
MAX_STORAGE_SIZE_MB
パラメータを使用して、Query Storeの最大サイズを設定します。
sql
ALTER DATABASE [YourDatabaseName]
SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1000);
現在のサイズの監視
以下のクエリを使用して、現在のQuery Storeのサイズを確認できます。
sql
SELECT actual_state_desc,
current_storage_size_mb,
max_storage_size_mb,
(current_storage_size_mb * 100.0 / max_storage_size_mb) AS percent_used
FROM sys.database_query_store_options;
キャプチャモードの最適化
QUERY_CAPTURE_MODE
パラメータを使用して、収集するクエリの種類を制御します。
sql
ALTER DATABASE [YourDatabaseName]
SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);
メンテナンスのベストプラクティス
- 定期的なモニタリング: Query Storeのサイズと性能を週次や月次でチェックします。
- 適切なデータ保持期間の設定: ビジネスニーズとストレージ容量のバランスを考慮して設定します。
- 自動クリーンアップの活用:
SIZE_BASED_CLEANUP_MODE
を AUTO に設定し、ストレージ管理を自動化します。 - 定期的な手動クリーンアップ: 必要に応じて、不要なデータを手動で削除します。
- キャプチャモードの最適化: ワークロードに応じて適切なキャプチャモードを選択します。
- パフォーマンスへの影響監視: Query Store自体がデータベースパフォーマンスに与える影響を定期的にチェックします。
- バックアップ戦略の見直し: Query Storeデータを含むバックアップの所要時間と頻度を適切に調整します。
トラブルシューティング
一般的な問題と解決策
- Query Storeが自動的に無効になる: 最大サイズに達した可能性があります。
MAX_STORAGE_SIZE_MB
を増やすか、不要なデータをクリーンアップしてください。 - パフォーマンスの低下: キャプチャモードを AUTO に設定し、必要なデータのみを収集するようにしてください。
- データが期待通りに収集されない:
QUERY_CAPTURE_MODE
の設定を確認し、必要に応じて ALL モードに変更してください。
まとめ
Query Storeの適切なメンテナンスと運用は、長期的なパフォーマンス最適化の鍵となります。定期的なモニタリング、適切なデータ管理、そして環境に応じた設定の調整を行うことで、Query Storeを最大限に活用し、データベースのパフォーマンスを継続的に向上させることができます。