データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MicrosoftSQLServerクエリストア

Microsoft®SQLServer®クエリストアは、その名前が示すように、実行されたクエリのデータベース履歴、クエリの実行時実行統計、および実行プランをキャプチャするストアのようなものです。データはディスクに保存されるため、トラブルシューティングの目的でいつでもクエリストアデータを取得できます。SQLServerを再起動してもデータに影響はありません。 SQL Server 2016で導入され、以降のすべてのエディションで利用できるクエリストアを使用して、クエリプランの変更によって引き起こされるパフォーマンスの問題をトラブルシューティングします。

はじめに

ベースラインデータ分析はパフォーマンスのトラブルシューティングに役立つ場合がありますが、クエリストアが導入されるまで、その情報はSQLサーバーでネイティブに利用できませんでした。データベースに対してクエリストアが有効になっている場合、実行プランとランタイム統計とともに、実行されたクエリに関する情報が保持されます。これはデータベースレベルで有効になり、すべてのユーザーのデータベースとMSDBシステムデータベースで有効にできます。クエリストア関連の情報とメタデータは、データベース自体の内部テーブルに格納されます。標準データベースのバックアップには必要なすべての情報が含まれているため、クエリストアの個別のバックアップを管理する必要はありません。クエリストアデータを表示するには、View Database Stateする必要があります 権限があり、DB_Ownerが必要です 計画を強制および非強制する権利。このデータは、ManagementStudioおよびT-SQLを介して表示できます。

クエリストアの設定

データベースのクエリストアを有効にするには、次の手順を実行します。

  1. データベース->プロパティに移動を右クリックします 。
  2. ページの選択の下 、クエリストアの選択を選択します 。
  3. 一般 セクションで、操作モード(要求済み)を変更します Offから Read-Write
  4. 他のフィールドは操作モード(要求済み)のままにします ドロップダウンボックスセットを事前入力されたデフォルト値に設定します。
  5. [わかりました]をクリックします [データベースのプロパティ]ボックスで、選択したデータベースのクエリストアを有効にします。

次のコードを使用して、T-SQLでクエリストアを有効にできます。

ALTER DATABASE [DB_Name] SET QUERY_STORE = ON;
クエリストアのさまざまな構成オプション

次のリストには、いくつかのクエリストアオプションの説明が含まれています。

  • 操作モード(要求済み) 3つの値があります:OffRead Only 、およびRead Write 。クエリストアのモードがReadに設定されている場合 、新しい実行計画またはクエリ実行時統計は収集されません。このモードは、クエリストアに関連する読み取り専用の操作です。モードをRead Writeに変更します クエリストアが、実行されたクエリ、それらのクエリに使用された実行プラン、および選択されたデータベースで実行されたクエリの実行時統計を収集できるようにします。

  • データフラッシュ間隔(分) 収集された実行プランとクエリランタイム統計がメモリからディスクにフラッシュされる頻度を設定できます。デフォルトでは、15分に設定されています。

  • 統計収集間隔 クエリストア内で使用する必要があるクエリランタイム統計の集計間隔を定義します。デフォルトでは、60分に設定されています。

  • 最大サイズ(MB) クエリストアの最大サイズを設定するために使用されます。デフォルトでは、100MBに設定されています。クエリストアのデータは、SQLServerクエリストアが有効になっているデータベースに保存されます。ここで設定したサイズに応じて、クエリストアが最大サイズに達すると、操作モードがRead Onlyに切り替わります。 自動的にモードになります。

  • キャプチャモード QueryStoreでキャプチャするクエリのタイプを選択するのに役立ちます。デフォルトのオプションはAll 、実行されたすべてのクエリを格納します。このオプションがautoに設定されている場合 、Query Storeは、優先度によってどのクエリキャプチャを優先順位付けしようとし、実行頻度の低いクエリやその他のアドホッククエリを無視しようとします。

  • 古いクエリのしきい値(日数) データがクエリストアにとどまる期間を定義するために使用されます。このモードのデフォルト値は30日です。

クエリストアレポート

クエリストアには、次のレポートが含まれています。

  • リグレッションクエリ :実行メトリックが最近後退したか、悪化したクエリを特定します。
  • 全体的なリソース消費 :任意の実行メトリックについて、データベースの総リソース消費量を分析します。
  • トップリソース消費クエリ :データベースリソースの消費に最大の影響を与えるクエリ。
  • 強制プランを使用したクエリ :組み込みレポート。強制実行プランを使用したすべてのクエリを表示します。
  • 変動の大きいクエリ :このレポートには、パラメータ化の問題が最も頻繁に発生するクエリが表示されます。
  • 追跡されたクエリ :最も重要なクエリの実行をリアルタイムで追跡します。
MicrosoftSQLServerクエリストア クエリストアを使用したプランの強制

プランのリグレッションが原因で、昨日正常に機能していたクエリは、実行に時間がかかりすぎたり、リソースを消費しすぎたり、今日タイムアウトしたりする可能性があります。既定では、SQLServerはクエリに対してのみ最新の実行プランを保持します。スキーマ、統計、またはインデックスを変更すると、クエリオプティマイザで使用されるクエリ実行プランが変更される可能性があります。プランキャッシュメモリの圧力により、プランを削除することもできます。

クエリストアは、監視対象の各データベース内に、時間の経過とともに集計されたクエリプランと統計情報を格納します。プランキャッシュとは異なり、クエリストアはクエリごとに複数のプランを保持し、プランごとに関連付けられた統計情報とともにクエリプランの変更の履歴を維持できます。さまざまな実行プランから選択することで、先に進んで任意の実行プランを強制できます。次に、Query Optimizerは、この強制実行プランを今後のクエリ実行にのみ使用します。

クエリストア->オープントップリソース消費クエリ レポートには、リソースを大量に消費するクエリが一覧表示されます。調査するクエリを選択しましょう:

MicrosoftSQLServerクエリストア

計画の上にマウスを置きます 関連する統計を表示します。

MicrosoftSQLServerクエリストア

さまざまな計画を比較してみましょう。

プラン216の詳細:

MicrosoftSQLServerクエリストア

プラン195の詳細:

MicrosoftSQLServerクエリストア

プラン216の平均期間は短いため、このプランをさらに実行するために使用できます。 強制計画をクリックします 「クエリ42に対してプラン216を強制しますか?」というメッセージが表示された確認画面が表示されます。

MicrosoftSQLServerクエリストア

はいをクリックします 。計画が強制された後、次のスクリーンショットに示すように、チェックマークが付いて強調表示されます。将来的には、このプランはクエリオプティマイザによって実行に使用されます。

MicrosoftSQLServerクエリストア クエリストアのベストプラクティス
  • 最新のSQLServerManagement Studioを使用して、最新の機能と拡張機能を確認してください。

  • クエリストアのデータ収集を確認および監視します。

  • 最適なクエリを設定します キャプチャモードを選択し、必要に応じてクエリストア構成オプションに戻って調整を行います。

  • パラメータ化されていないクエリの使用は避けてください。

  • 強制計画の状況を定期的に確認してください。

結論

クエリストアは、SQL Server 2016で導入された便利な機能です。パフォーマンスの強化はすべてのデータベース管理者(DBA)に必要な重要なスキルの1つであるため、クエリストアの構成と使用方法を学ぶ必要があります。クエリストアを使用してパフォーマンスの変更を追跡することもできます。実行プランを比較して、クエリパフォーマンスの低下をトラブルシューティングします。任意のクエリに対してクエリプランを強制できます。これは、プランキャッシュに保存されているものを上書きするため、パフォーマンス上の利点があります。クエリストアは、クエリの実行統計をキャプチャして保存し、後で表示する予定であるため、SQLServerのパフォーマンスに大きな影響はありません。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

専門家による管理、管理、構成で環境を最適化する

Rackspaceのアプリケーションサービス(RAS) 専門家は、幅広いアプリケーションポートフォリオにわたって次の専門的かつ管理されたサービスを提供します。

  • eコマースおよびデジタルエクスペリエンスプラットフォーム
  • エンタープライズリソースプランニング(ERP)
  • ビジネスインテリジェンス
  • Salesforceの顧客関係管理(CRM)
  • データベース
  • メールホスティングと生産性

お届けします:

  • 偏りのない専門知識 :私たちは、即時の価値を提供する機能に焦点を当てて、お客様の近代化の旅を簡素化し、導きます。
  • 狂信的な経験 ™:最初にプロセスを組み合わせます。テクノロジーセカンド。包括的なソリューションを提供するための専用のテクニカルサポートを備えたアプローチ。
  • 比類のないポートフォリオ :豊富なクラウドエクスペリエンスを適用して、適切なテクノロジーを適切なクラウドに選択して導入できるようにします。
  • アジャイルデリバリー :私たちはあなたがあなたの旅の途中であなたに会い、あなたの成功と一致します。

今すぐチャットして始めましょう。


  1. 既存のAlwaysOnデータベースでのMicrosoftSQLServerログ配布

    この投稿では、既存のMicrosoft®SQLServer®AlwaysOnで構成されたデータベースを使用して、ディザスタリカバリ(DR)ソリューションであるログ配布を設定する方法について説明します。 はじめに AlwaysOn可用性グループ(AG)機能は、データベースミラーリングのエンタープライズレベルの代替手段を提供する、高可用性および災害復旧ソリューションです。 SQL Server 2012(11.x)で導入されたAlwaysOn AGは、企業のユーザーデータベースのセットの可用性を最大化します。AGは、可用性データベースと呼ばれる、一緒にフェイルオーバーするユーザーデータベースの個

  2. MicrosoftSQLServerの高度な破損と回復

    このブログでは、Microsoft®SQLServer®のデータベースレベルで発生する可能性のある破損、それらを検出する方法、および高度な復元と修復の手法を使用してそれらを修正する方法について説明しています。 はじめに 現在、SQL Serverは、その高度な内部構造と優れた信頼性により、最も一般的で広く使用されているリレーショナルデータベース管理システムの1つです。多くの組織は、重要なビジネスデータを維持および保存するためにSQLServerデータベースを選択しています。 企業は、データベース管理者(DBA)がデータベースのパフォーマンス、保守、およびセキュリティを継続的に改善することを