Contents
自動チューニング機能とは
概要
- 潜在的なクエリ パフォーマンスの問題に関する洞察を提供し、解決策を推奨して、特定された問題を自動的に解決するデータベース機能
- SQL Server 2017 (14.x)で登場した機能
- 以下の2種類のチューニング機能が提供されている
- 自動プラン修正
- 自動インデックス管理(現時点で、Azure SQL Databaseのみ)
自動プラン修正
- クエリパフォーマンスの後退を検知して、自動的に最後の正常なプランに切り替えてくれる
- クエリストアが有効化されている必要がある
- 具体的には、データベース エンジンが、予想される CPU ゲインが 10 秒より大きいか、新しいプランのエラー数が推奨プランのエラー数より多い場合に切り替えを行う
- 自動修正されたプランが後退したプランよりも優れていない場合、新しいプランは適用解除され、データベース エンジンによって新しいプランがコンパイルしなおされる
- 自動修正されたプランが回帰したプランよりも優れていることが確認された場合、適用されたプランは保持され、再コンパイルが行われるまで (たとえば、次の統計の更新やスキーマの変更など) 保持される
- Azure SQL Database/SQL Managed Instanceではサーバーレベル、またはデータベース単位の設定が可能。SQL Serverではデータベース単位かな?
- なお、自動チューニングを有効化していない場合は、クエリストアによってsys.dm_db_tuning_recommendations (Transact-SQL)システムビューに蓄積されている推奨事項をもとに、手動でプランの強制を行う必要がある
自動インデックス管理
- SQL Databaseは規定の動作として、クエリのパフォーマンスを向上させる可能性があるあったり、削除できる、冗長な、または長い期間使用されなかったインデックスを特定する
- 自動インデックス管理を有効化すると、特定された推奨事項を自動的に実行してくれるようになる
- 自動インデックス管理は、以下のアクション単位で有効化/無効化を選択できる
- CREATE INDEX
- DROP INDEX
- サーバーレベル、またはデータベースレベルで設定可能
自動チューニング機能を有効化する方法
自動プラン修正
クエリストアが有効化されていなければ、以下コマンドで有効化します。(Azure SQL Databaseの場合は規定で有効)
ALTER DATABASE ★データベース名★
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);
その上で自動プラン修正を有効化します。
ALTER DATABASE ★データベース名★
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
自動インデックス管理
Azureポータルか、ALTER DABATASE句で変更できます。
以上、簡単ですがSQL Server / Azure SQL Databaseの自動チューニング機能の超概要まとめでした。
実際の使用感は、結果を検証できるようになるまで時間がかかりそうだったので、また別回で・・
おしまい
コメントを残す