パフォーマンスに関する推奨事項Performance recommendations

Azure SQL Database は学習してアプリケーションに適応し、カスタマイズされた推奨事項を提供します。それによって、SQL Database のパフォーマンスを最大化できます。Azure SQL Database learns and adapts with your application and provides customized recommendations enabling you to maximize the performance of your SQL databases. SQL Database の使用状況履歴を分析することで、パフォーマンスが継続的に評価されます。Your performance is continuously assessed by analyzing your SQL Database usage history. 推奨事項はデータベース固有のワークロード パターンに基づき、そのパフォーマンス改善を支援します。The recommendations that are provided are based on a database unique workload pattern and help improve its performance.

ヒント

自動チューニングは、推奨されるパフォーマンス調整方法です。Automatic tuning is the recommended way of performance tuning. Intelligent Insights は、推奨されるパフォーマンス監視方法です。Intelligent Insights is the recommended way of monitoring performance.

インデックスの作成に関する推奨事項Create index recommendations

Azure SQL Database は実行されるクエリを継続的に監視し、パフォーマンスを改善する可能性があるインデックスを特定します。Azure SQL Database continuously monitors the queries being executed and identifies the indexes that could improve the performance. 特定のインデックスが不足していることが確実になると、新しいインデックスの作成推奨事項が作成されます。Once enough confidence is built that a certain index is missing, a new Create index recommendation will be created. Azure SQL Database は、一定の期間後にインデックスがもたらすパフォーマンス増加を見積もることで確信度を高めます。Azure SQL Database builds confidence by estimating performance gain the index would bring through time. 見積もられたパフォーマンス増加に基づき、推奨事項は高、中、低で分類されます。Depending on the estimated performance gain, recommendations are categorized as High, Medium, or Low.

推奨事項を利用して作成されたインデックスには常に auto_created というフラグが設定されます。Indexes created using recommendations are always flagged as auto_created indexes. sys.indexes ビューを見ることでどのインデックスが auto_created であるか確認できます。You can see which indexes are auto_created by looking at sys.indexes view. 自動作成されたインデックスは ALTER/RENAME コマンドをブロックしません。Auto created indexes don’t block ALTER/RENAME commands. 自動作成されたインデックスを含む列をその上にドロップすると、コマンドが通過し、自動作成されたインデックスとコマンドがドロップされます。If you try to drop the column that has an auto created index over it, the command passes and the auto created index is dropped with the command as well. 通常のインデックスは、インデックスが付けられた列で ALTER/RENAME コマンドをブロックします。Regular indexes would block the ALTER/RENAME command on columns that are indexed.

インデックスの作成に関する推奨事項が適用されると、Azure SQL Database はクエリのパフォーマンスをベースライン パフォーマンスと比較します。Once the create index recommendation is applied, Azure SQL Database will compare performance of the queries with the baseline performance. 新しいインデックスがパフォーマンス改善をもたらした場合、推奨事項に成功フラグが設定され、影響レポートが入手可能になります。If new index brought improvements in the performance, recommendation will be flagged as successful and impact report will be available. インデックスが恩恵をもたらさなかった場合、自動的に元に戻されます。In case the index didn’t bring the benefits, it will be automatically reverted. Azure SQL Database ではこの方法で、データベース パフォーマンスが改善する場合にのみ推奨事項が利用されます。This way Azure SQL Database ensures that using recommendations will only improve the database performance.

インデックスの作成に関する推奨事項にはバックオフ ポリシーがあります。最後の 20 分間、データベースまたはプールの DTU が 80% を超えた場合、あるいはストレージの使用率が 90% を超えた場合、推奨事項は適用されません。Any Create index recommendation has a back off policy that won’t allow applying the recommendation if the database or pool DTU usage was above 80% in last 20 minutes or if the storage is above 90% of usage. この場合、推奨事項は延期されます。In this case, the recommendation will be postponed.

インデックスの削除に関する推奨事項Drop index recommendations

足りないインデックスの検出だけでなく、Azure SQL Database は既存インデックスのパフォーマンスを継続的に分析します。In addition to detecting a missing index, Azure SQL Database continuously analyzes the performance of existing indexes. インデックスが使用されない場合、Azure SQL Database はその削除を推奨します。If index is not used, Azure SQL Database will recommend dropping it. インデックスの削除は 2 つの場合に推奨されます。Dropping an index is recommended in two cases:

  • インデックスが別のインデックスの重複である (同じインデックスを付けて追加された列、パーティション スキーマ、フィルター)Index is a duplicate of another index (same indexed and included column, partition schema, and filters)
  • インデックスが長期間 (93 日間) 未使用であるIndex is unused for a prolonged period (93 days)

インデックスの削除に関する推奨事項は、実施後に検証も通過します。Drop index recommendations also go through the verification after implementation. パフォーマンスが改善される場合、影響レポートが入手可能になります。If the performance is improved the impact report will be available. パフォーマンスの低下が検出された場合、推奨事項は戻されます。In case performance degradation is detected, recommendation will be reverted.

クエリのパラメーター化に関する推奨事項Parameterize queries recommendations

継続的に再コンパイルされてはいるもののクエリ実行プランが同じままのクエリが 1 つ以上あると、クエリのパラメーター化に関する推奨事項が表示されます。Parameterize queries recommendations appear when you have one or more queries that are constantly being recompiled but end up with the same query execution plan. こういった条件により、強制パラメーター化の適用が可能になり、クエリ プランをキャッシュし再利用して、パフォーマンスの向上とリソースの使用量削減を実現することができます。This condition opens up an opportunity to apply forced parameterization, which will allow query plans to be cached and reused in the future improving performance and reducing resource usage.

SQL Server に対して発行されたすべてのクエリは、実行プランの生成のために、最初にコンパイルされる必要があります。Every query issued against SQL Server initially needs to be compiled to generate an execution plan. 生成された各プランはプラン キャッシュに追加され、同じクエリのその後の実行では、キャッシュからプランを再利用できるため、追加のコンパイルの必要がなくなります 。Each generated plan is added to the plan cache and subsequent executions of the same query can reuse this plan from the cache, eliminating the need for additional compilation.

パラメーター化されていない値を含むクエリを送信するアプリケーションは、パラメーター値の異なるすべてのクエリの実行プランが再コンパイルされる、パフォーマンス オーバーヘッドにつながる可能性があります。Applications that send queries, which include non-parameterized values, can lead to a performance overhead, where for every such query with different parameter values the execution plan is compiled again. 多くの場合、パラメーター値の異なる同じクエリによって同一の実行プランが生成されますが、これらのプランは個別にプラン キャッシュに追加されます。In many cases the same queries with different parameter values generate the same execution plans, but these plans are still separately added to the plan cache. 実行プランの再コンパイルにより、データベース リソースが消費され、クエリ実行時間の増加とプラン キャッシュのオーバーフローが発生するため、プランがキャッシュから削除される原因となります。Recompiling execution plans use database resources, increase the query duration time and overflow the plan cache causing plans to be evicted from the cache. SQL Server のこの動作は、データベースで強制パラメーター化のオプションを設定することにより変更できます。This behavior of SQL Server can be altered by setting the forced parameterization option on the database.

推奨事項が与える影響の予測に役立つよう、実際の CPU 使用率、および予測される CPU 使用率 (推奨事項が適用されたと仮定した場合) の比較が提供されます。To help you estimate the impact of this recommendation, you are provided with a comparison between the actual CPU usage and the projected CPU usage (as if the recommendation was applied). CPU 使用率の削減に加えて、クエリ実行時間では、コンパイルにかかる時間が短縮されます。In addition to CPU savings, your query duration decreases for the time spent in compilation. プラン キャッシュのオーバーヘッドも減少し、ほとんどのプランがキャッシュに保持されて再利用されるようになります。There will also be much less overhead on plan cache, allowing majority of the plans to stay in cache and be reused. [適用] をクリックして、迅速かつ簡単にこの推奨事項を適用できます。You can apply this recommendation quickly and easily by clicking on the Apply command.

推奨事項を適用すると、データベースの強制パラメーター化が速やかに有効になり、約 24 時間続く監視プロセスが開始されます。Once you apply this recommendation, it will enable forced parameterization within minutes on your database and it starts the monitoring process which approximately lasts for 24 hours. 監視期間後に、推奨事項が適用される前後 24 時間の、データベースの CPU 使用率を表示した検証レポートを確認できます。After this period, you will be able to see the validation report that shows CPU usage of your database 24 hours before and after the recommendation has been applied. SQL Database Advisor は、パフォーマンスの不具合が検出された場合に、推奨事項の適用を自動的に元に戻す安全メカニズムを備えています。SQL Database Advisor has a safety mechanism that automatically reverts the applied recommendation in case a performance regression has been detected.

スキーマの問題の修正に関する推奨事項Fix schema issues recommendations

SQL Database サービスが、Azure SQL Database で発生したスキーマ関連の SQL エラー数が異常であることを検出すると、スキーマの問題の修正に関する推奨事項が表示されます。Fix schema issues recommendations appear when the SQL Database service notices an anomaly in the number of schema-related SQL errors happening on your Azure SQL Database. この推奨事項は、通常、データベースでスキーマ関連のエラー (無効な列名、無効なオブジェクト名など) が 1 時間に複数件発生した場合に表示されます。This recommendation typically appears when your database encounters multiple schema-related errors (invalid column name, invalid object name, etc.) within an hour.

「スキーマの問題」は、SQL クエリの定義とデータベース スキーマの定義に不整合があった場合に発生する、SQL Server の構文エラーの種類の 1 つです。“Schema issues” are a class of syntax errors in SQL Server that happen when the definition of the SQL query and the definition of the database schema are not aligned. たとえば、クエリで想定される列の 1 つがターゲット テーブルで見つからない、あるいはその逆の場合です。For example, one of the columns expected by the query may be missing in the target table, or vice versa.

Azure SQL Database サービスが、Azure SQL Database で発生したスキーマ関連の SQL エラー数が異常であることを検出すると、「スキーマの問題の修正」に関する推奨事項が表示されます。“Fix schema issue” recommendation appears when Azure SQL Database service notices an anomaly in the number of schema-related SQL errors happening on your Azure SQL Database. 下の表は、スキーマの問題に関連したエラーを示しています。The following table shows the errors that are related to schema issues:

SQL エラー コードSQL Error Code メッセージMessage
201201 プロシージャまたは関数 '' にはパラメーター '' が必要ですが、指定されませんでした。Procedure or function '' expects parameter '', which was not supplied.
207207 列名 '' が無効です。Invalid column name ''.
208208 オブジェクト名 '' が無効です。Invalid object name ''.
213213 列名または指定された値の数がテーブルの定義と一致しません。Column name or number of supplied values does not match table definition.
28122812 ストアド プロシージャ '' が見つかりませんでした。Could not find stored procedure ''.
81448144 プロシージャまたは関数 * に指定された引数が多すぎます。Procedure or function * has too many arguments specified.

次のステップNext steps

推奨事項を監視し、引き続きパフォーマンスの調整対象とします。Monitor your recommendations and continue to apply them to refine performance. データベースのワークロードは動的であり、継続的に変化します。Database workloads are dynamic and change continuously. SQL Database Advisor では、お使いのデータベースのパフォーマンスを向上させる可能性がある推奨事項の監視と提供を継続します。SQL Database advisor continues to monitor and provide recommendations that can potentially improve your database's performance.