日本マイクロソフト Business Intelligence & Data Platform サポートの神谷です。前回に引き続きクエリ ストアについて紹介します。前回は、GUIを中心に紹介しましたが、今回はクエリ ストアの設定やクエリ ストア関連のビュー、クエリストアそのものの仕組みを紹介します。
クエリ ストアの設定
クエリ ストアの有効化および設定は、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により削除することができます。
この記事は参考になりましたか?
- ここから始めよう SQL Server 2016 新機能連載記事一覧
-
- Always Encrypted 登場!(後編)
- Always Encrypted登場!(前編)
- クエリ ストア (後編)
- この記事の著者
-
神谷雅紀 (カミヤマサノリ)
日本マイクロソフト株式会社
ビジネスインテリジェンス&データプラットフォームサポート
エスカレーションエンジニア SQL Serverファミリー製品およびクラウドデータストレージ&アナリティクス (SQL Database, Data Warehouse, Data Lake, DocumentDB, HDInsght, Power BIなど)のサポートチームに属している。普段の業務はエスカレーショ...※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア