クエリ ストアの設定
クエリ ストアの有効化および設定は、SQL Server Management Studio GUIではデータベースの「プロパティ」の「クエリ ストア」で、T-SQLではALTER DATABASEにより行うことができます。
ALTER DATABASE AdventureWorks2016 set QUERY_STORE = ON ( MAX_STORAGE_SIZE_MB=150, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 180), MAX_PLANS_PER_QUERY = 50, DATA_FLUSH_INTERVAL_SECONDS = 1200, INTERVAL_LENGTH_MINUTES = 15, OPERATION_MODE = READ_WRITE )
クエリ ストアのデータは、クエリ ストアを有効化したデータベースに格納されます。クエリ ストアのために使用を許可する最大サイズはMAX_STORAGE_SIZE_MBで指定します。クエリ ストアデータのサイズが最大サイズ設定に達すると、データの収集は停止し、クエリ ストアは読み取り専用モード(OPERATION_MODE =READ_ONLYと同等の状態)になります。データベース自体が読み取り専用(READ_ONLY)、シングルユーザー(SINGLE_USER)、緊急(EMERGENCY)などの場合にも、クエリ ストアは読み取り専用モードになります。
クエリ ストアに保存されたデータの保持はCLEANUP_POLICYで指定します。現状では、保持される日数をSTALE_QUERY_THRESHOLD_DAYSで指定することができます。
SIZE_BASED_CLEANUP_MODEをAUTOに設定すると、クエリ ストアに保存されているデータのサイズがMAX_STORAGE_SIZE_MBで指定した最大サイズの90%に達したら、自動的に古い情報を削除し、80%になったら停止するように設定することができます。
クエリ ストア内に保持するひとつのクエリの実行プランの最大数をMAX_PLANS_PER_QUERYで制限することもできます。
この記事の後半で説明しますが、クエリ ストアデータはある程度まではメモリ上にキャッシュされてから、データベースファイルに書き込まれます。その書き込み間隔を指定するオプションがDATA_FLUSH_INTERVAL_SECONDSです。
クエリの実行統計(runtime statistics)が集計される期間を指定するオプションがINTERVAL_LENGTH_MINUTESです。
既存のクエリ ストアの設定値は、sys.database_query_store_optionsカタログビューで確認することができます。
注意 : クエリ ストアのデータはすべてPRIMARYファイルグループに保存されます。そのため、MAX_STORAGE_SIZE_MB の指定値は、PRIMARYファイルグループの容量を考慮して決定する必要があります。
クエリ ストア データの削除
クエリ ストアの設定や蓄えられているデータは、ALTER DATABASEにより一括削除が可能です。
ALTER DATABASE AdventureWorks2016 SET QUERY_STORE CLEAR
ある特定のクエリに関する実行統計と実行プランを削除することもできます。その場合は、クエリIDを指定してsp_query_store_remove_queryを実行します。
クエリ単位ではなく、特定の実行プランやその実行統計のみを削除したい場合には、sp_query_store_remove_plan, sp_query_store_reset_exec_statsにより削除することができます。