【3分で流し読み】SQL Server / Azure SQL Databaseの自動チューニング機能でできることを理解する

自動チューニング機能とは

概要

https://docs.microsoft.com/ja-jp/sql/relational-databases/automatic-tuning/automatic-tuning?view=sql-server-ver16

  • 潜在的なクエリ パフォーマンスの問題に関する洞察を提供し、解決策を推奨して、特定された問題を自動的に解決するデータベース機能
  • SQL Server 2017 (14.x)で登場した機能
  • 以下の2種類のチューニング機能が提供されている
    • 自動プラン修正
    • 自動インデックス管理(現時点で、Azure SQL Databaseのみ)
https://docs.microsoft.com/ja-jp/azure/azure-sql/database/automatic-tuning-overview?view=azuresql#enable-automatic-tuning

自動プラン修正

https://docs.microsoft.com/ja-jp/sql/relational-databases/automatic-tuning/automatic-tuning?view=sql-server-ver16#automatic-plan-correction

  • クエリパフォーマンスの後退を検知して、自動的に最後の正常なプランに切り替えてくれる
  • クエリストアが有効化されている必要がある
  • 具体的には、データベース エンジンが、予想される CPU ゲインが 10 秒より大きいか、新しいプランのエラー数が推奨プランのエラー数より多い場合に切り替えを行う
  • 自動修正されたプランが後退したプランよりも優れていない場合、新しいプランは適用解除され、データベース エンジンによって新しいプランがコンパイルしなおされる
  • 自動修正されたプランが回帰したプランよりも優れていることが確認された場合、適用されたプランは保持され、再コンパイルが行われるまで (たとえば、次の統計の更新やスキーマの変更など) 保持される
  • Azure SQL Database/SQL Managed Instanceではサーバーレベル、またはデータベース単位の設定が可能。SQL Serverではデータベース単位かな?
公式ドキュメントより

自動インデックス管理

https://docs.microsoft.com/ja-jp/sql/relational-databases/automatic-tuning/automatic-tuning?view=sql-server-ver16#automatic-index-management

  • SQL Databaseは規定の動作として、クエリのパフォーマンスを向上させる可能性があるあったり、削除できる、冗長な、または長い期間使用されなかったインデックスを特定する
  • 自動インデックス管理を有効化すると、特定された推奨事項を自動的に実行してくれるようになる
  • 自動インデックス管理は、以下のアクション単位で有効化/無効化を選択できる
    • CREATE INDEX
    • DROP INDEX
  • サーバーレベル、またはデータベースレベルで設定可能

自動チューニング機能を有効化する方法

自動プラン修正

クエリストアが有効化されていなければ、以下コマンドで有効化します。(Azure SQL Databaseの場合は規定で有効)

ALTER DATABASE ★データベース名★
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

https://docs.microsoft.com/ja-jp/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver16#Enabling

その上で自動プラン修正を有効化します。

ALTER DATABASE ★データベース名★
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON ); 

自動インデックス管理

Azureポータルか、ALTER DABATASE句で変更できます。

https://docs.microsoft.com/ja-jp/azure/azure-sql/database/automatic-tuning-overview?view=azuresql#enable-automatic-tuning

以上、簡単ですがSQL Server / Azure SQL Databaseの自動チューニング機能の超概要まとめでした。

実際の使用感は、結果を検証できるようになるまで時間がかかりそうだったので、また別回で・・

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。