先週の金曜日に、Plan Explorer 3.0、新機能、およびPROエディションを廃止し、すべての機能を無料で提供することにした理由についてのウェビナーを行いました。 。見逃した方は、こちらのウェビナーをご覧ください:
たくさんの素晴らしい質問が寄せられました。ここでそれらに対処しようと思います。また、プレゼンテーションのさまざまな時点でいくつかの独自の質問をしましたが、ユーザーから詳細を尋ねられたので、調査の質問から始めます。参加者は502名をピークに、各質問に回答した人数を下のグラフで示します。ウェビナーが技術的に開始される前に最初の質問が行われたため、少数の人々がそれに答えました。
聴衆の質問
Q:コードサンプルは利用できますか?
A: はい、デモに使用した3つのセッションファイルはこちらから入手できます:
これらはPlanExplorerの最新ビルドで開くことができますが、クエリのいずれかをローカルで再度実行する場合は、AdventureWorks2014(Jonathan Kehayiasの拡大スクリプトを使用)または新しいWideWorldImportersサンプルデータベースが必要です。
Q:では、今日表示されているものはすべて、新しい統合された無料のプランエクスプローラーに含まれていますか?もしそうなら、あなたの会社の新しい収益モデルは何ですか?A: 私たちが提供しているのはプランエクスプローラーだけだと思っている人に出くわすと、いつも驚いています(私はこれらを直接見て、グレッグのブログ投稿にも同様のコメントがいくつかありました)。私たちの本当のパンとバターは私たちの監視プラットフォームにあり、プランエクスプローラーでのあなたの前向きな経験が私たちの他のソリューションも試すようになることを願っています。
Q:SQL Server 2008をまだ使用しています。PEとSSMSを使用するメリットはありますか?A: はい、一部の機能(Live Query Profileなど)を見逃すことはありますが、SSMSと比較して利用できる情報がはるかに多く、特定の問題をより発見しやすくするために努力しています。
Q:ライブクエリプロファイルはSQL Server 2014で機能しますか?A: はい。ServicePack1が適用されている限り、この機能はSQL Server2014SP1で追加されたDMVに依存しているためです。
Q:SQL Server 2012に関する制限は何ですか?このツールを使用できますか?A: 絶対。 SQL Server 2012以下に関するウェビナーで私が提起した制限は、ライブクエリプロファイルデータをキャプチャできないことです。
Q:データはSQL Server 2014以降でのみ収集されますか? SQL Server 2014がインストールされているが、互換性が2012に設定されている場合はどうなりますか?A: はい、ライブクエリプロファイル(およびリソースチャート)は、SQL Server 2014(少なくともSP1を含む)、SQL Server 2016、およびAzureSQLデータベースで機能します。互換性レベルの影響を受けません。
Q:待機統計情報を取得するには、どのバージョンのSQL Serverが必要ですか?
A: 待機統計収集は拡張イベントセッションに依存しているため、SQL Server 2008以降に対して実行し、ユーザーのコンテキストで実行するか、拡張イベントセッションを作成および削除するのに十分な権限を持つログイン(CONTROL SERVER
SQL Server2008および2008R2、およびALTER ANY EVENT SESSION
SQL Server 2012以降)。
A: これらの2つの質問には多くのバリエーションがあり、その音から、人々はウェビナー中に新しいバージョンで積極的に遊んでおり、インデックス分析データもライブクエリプロファイルデータも表示していませんでした。 SSMSまたは以前のバージョンのPlanExplorerからキャプチャした既存のプランがある場合、表示する情報はありません。
インデックス分析を収集するため データについては、推定または実際の計画を生成する必要があります プランエクスプローラー内から。列とインデックスグリッドを表示するには、[インデックス分析]タブの上部にあるドロップダウンで[選択した操作:]を選択する必要があります。
ライブクエリプロファイルを収集するため データについては、実際の計画を生成する必要があります プランエクスプローラー内から、2014SP1以降に対して実行します。また、[ライブクエリプロファイルあり]オプション(右の画像を参照)が選択されていることを確認し、クエリの実行が終了するのを待ってからグラフをレンダリングする必要があります。将来のバージョンでは、グラフはリアルタイムでレンダリングされますが、このリリースでは、すべてのデータが収集された後にレンダリングします。
Q:ライブクエリプロファイルは、SQL Server 2014 SP2のクローンデータベースに対して機能しますか?A: はい、これは機能しますが、クローンデータベースが空であるため、多くの情報は提供されません。計画には正しい見積もりが表示されますが、実際はすべて0になるため、実行時の指標は現実的なものではありません。または意味のあるボトルネック。 Erin Stellatoが以前の投稿で宣伝しているように、クローンに代替データを入力する場合を除きます。また、クエリプランに実際の本番データのサイズを反映させる場合は、すべての形式の自動統計がオフになっていることを確認する必要があります。オフにしないと、クエリの実行時に更新され、すべての推定値が0になります。
Q:新しいバージョンのPlanExplorerはSQLServer 2016で動作しますか?A: はい。すべての新しいSQLServer2016プランオペレーターとその他のショープランの変更をサポートし(私の投稿「SQLServer 2016のプランエクスプローラーサポート」を参照)、アドインは最新バージョンのSSMSでも機能します(私の投稿を参照してください。 「SSMS2016のPlanExplorerアドインサポートの発表」)。
Q:つまり、SSMSの実際の実行計画でさえ、推定というラベルが付けられています。 費用は?A: はい、そうです。ライブクエリプロファイルデータをキャプチャすると、すべてのオペレーターのコストパーセンテージを変更できます。これは、各操作で実行された実際の作業量が非常に正確にわかっているためです(ただし、クエリはしきい値より長く実行する必要があります)。これは、I / Oの問題のトラブルシューティングを行う場合に特に役立ちます。これは、見積もりでI/Oのボトルネックが考慮されていないように見えるためです。次の図は、元の見積もり(SSMSが通知した内容を常に表示できます)、再原価計算後の実績、および再原価計算とコストの「I/O別」への変更後の実績および線幅を次のように循環させます。 「データサイズ別」:
Q:以前はSSMSによって作成されたプランをプランエクスプローラーで開きましたが、アーロンが示した内容から、プランエクスプローラーから(チューニング中に)クエリを実行する必要があることを正しく理解しましたか?
A: ウェビナーでこの質問に答えましたが、明確にするために、クエリの進化には2つのステップがあると思います。(1)正しい結果を保証することと(2)パフォーマンスを最適化することです。私は、現在、(1)にはSSMSを使用し、(2)にはPlanExplorerを使用する必要があると強く信じています。私は長い間、人々が正しい結果を確信したら、実際のを生成して調整する必要があることを宣伝してきました。 プランエクスプローラー内からの実行プラン。これは、より多くのランタイム情報を収集するためです。この実行時情報は、すべてのメトリックと潜在的なボトルネックをより明確にするため、Q&Aサイトで計画を共有する場合に特に役立ちます。
Q:演算子より下のパーセンテージは何パーセントですか?たとえば、関数より2,885%下ですか?A: そのパーセンテージはコストではなく、見積もりと比較して実際に処理された行の割合です。この場合、SQL Serverは関数が10,000行を返すと推定しましたが、実行時に300,000行近くを返しました。その%の数値のみにカーソルを合わせるとツールチップが表示され、オペレーターのツールチップまたはトップオペレーションなどの他のグリッドで行数の見積もりの違いを確認できます(関数は現在とは異なる行数を返します)デモ中):
Q:リプレイ部分を最小化または非表示にして、プラン自体のスペースを増やすことはできますか?
A: はい、すべてのパネルは調整可能です。多くの場合、静的と自動非表示を切り替えるプッシュピンがあり、ほとんどのパネルはドラッグできます(Visual Studio、SSMSなどの場合と同様)。特に、再生パネルの上部中央には小さな矢印があり、すばやく表示/非表示にするには:
Q:問題のあるコードブロックを計画から直接確認できますか?
A: 質問を正しく解釈しているかどうかはわかりませんが、すべてのパネルは状況に応じて変化し、現在検討中の計画のステートメントは、ステートメントグリッドとテキストデータパネルの両方に表示されます。
長さが原因でステートメントテキストが完全に表示されない場合は、いつでもそのセルを右クリックして[ステートメントをコマンドテキストコピーにコピー]を選択し、そのタブに切り替えることができます。または、[コマンドテキスト]タブの現在の内容を上書きしたくない場合は、[コピー]> [セル]を選択して、新しいセッション、SSMS、または別のエディターに貼り付けます。
Q:誤って1時間のクエリを開始した場合、「実際の計画を取得する」を停止するにはどうすればよいですか?A: クエリが現在実行中の場合は、左下のステータスバーに[停止]ボタンがあります:
Q:最初にインデックスを削除して新しいインデックスを作成する代わりに、DROP_EXISTING =ONを使用する方がよいのではないでしょうか?
A: 将来的には、DROP_EXISTINGやONLINEなどのオプションを含め、インデックススクリプトをより堅牢にする計画があります。
Q:これはSentryOneと結びついていますか?A: Plan Explorerのすべての機能は、SentryOneクライアントでも利用できます。クライアントがあれば、技術的にはPlan Explorerをインストールする必要はありません。ただし、更新は別のスケジュールでプッシュされるため、多くの場合、両方をインストールするのが理にかなっています。
サーバーに対して実行されているすべてのクエリの実際の計画を収集するコストが高いため、監視アクティビティ中に収集する計画は推定計画であることに注意してください。これは、クライアントで収集されたプランにドリルダウンした場合、インデックス分析やライブクエリプロファイルデータなどの追加情報がないことを意味します。追加のランタイムデータを取得するために、いつでもインタラクティブにクエリを再実行できます。
Q:これらの新機能のパフォーマンスオーバーヘッドはどのくらいですか?A: 収集する情報のほとんどは、同じクエリを実行し、Management Studioから同じランタイムデータを収集した場合(たとえば、SHOWPLAN、STATISTICS TIME、およびSTATISTICS IOをオンにした場合)よりも高価ではありません。ただし、これの多くは、結果を破棄するデフォルトの動作によって相殺されるため、結果をアプリケーションに送信するためにサーバーに負担をかけることはありません。
非常に複雑なスキーマと多数のインデックスを持つデータベースに対して実行される非常に複雑なプランの場合、インデックスと統計の収集は効率が低下する可能性がありますが、既存のワークロードに目立った影響を与える可能性はほとんどありません。これは、行の数の影響を受けません。 この質問の1つのバリエーションで言及された表で。
非常に長時間実行されるクエリやリソースを大量に消費するクエリの場合、私の最大の関心事はLiveQueryProfileコレクションです。これに役立つ2つの設定があります。デフォルトですべての実際のプラン生成にライブクエリプロファイルを含めるかどうか、およびDMVからデータを収集する間隔です。このコレクションのオーバーヘッドがクエリ自体のオーバーヘッドの近くに来ることは決してないはずですが、これらの設定を微調整して、コレクションの攻撃性を下げることができます。
とはいえ、すべてを適度に行う必要があるという免責事項があるため、データ収集のオーバーヘッドに関連する問題は確認されておらず、本番インスタンスに対して全機能を使用することを躊躇しません。
Q:フィルター処理されたインデックスの作成に役立つものはありますか?A: 現在、フィルタリングされたインデックスを推奨する機能はありませんが、間違いなく私たちのレーダーにあります。
Q:クエリプラン比較機能をプランエクスプローラーに追加する予定はありますか?A: はい、これは、この機能がSSMSに導入されるずっと前から、確かにロードマップに含まれています。 :-)時間をかけて、期待どおりの機能セットを構築します。
Q:SSISパッケージを使用して、パッケージのパフォーマンスを把握できますか?A: サーバーに対してT-SQLを介してパッケージまたはジョブを呼び出す場合は可能だと思います(Plan ExplorerにはSSISパッケージなどを直接起動する機能がありません)。ただし、アプリケーションはSQL Serverを介して表示されるパフォーマンスの側面のみを表示します。SSISパッケージ内にSQLServerに対する実行に関連しない非効率性がある場合(たとえば、スクリプトタスクの無限ループ)、可視性がなく、コード分析を実行していないため、これらを取得することはできません。
Q:デッドロック分析機能の使用方法を簡単に説明できますか?A: ウェビナーでこの質問を見逃しましたが、デモキットでこの機能について話します。JonathanKehayiasがここでブログを書き、Steve WrightがYouTubeでこの機能についてのビデオを公開しています。公式ドキュメントは、PEユーザーガイドで確認できます。
Q:これはプロファイラーのように使用できますか?ワークロード全体を分析できますか?A: Plan Explorerは、個々のクエリとその実行プランの分析に役立つように設計されています。広範囲にわたる取り組みのためのフル機能の監視プラットフォームがあり、サードパーティのワークロード分析ツールもいくつかあります。
Q:クエリチューニングは初めてです。理解を深めるためのツールや記事を提案していただけますか?A: クエリの調整を改善するためのリソースはたくさんあります:
- Itzik Ben-Gan、Grant Fritchey、またはBenjaminNevarezによるT-SQLの本。
- PaulWhiteまたはRobFarleyによるブログ投稿。
- ここのanswers.sqlperformance.comまたはdba.stackexchange.comのQ&A;
- YouTubeでチューニング動画をクエリします。
- デモキット(新しいバージョンが間もなく登場します!);と、
- 練習 。真剣に。必要なすべての本や記事を読むことができますが、実際の実践的な作業のトラブルシューティングと、実際のパフォーマンスの問題を伴う問題のあるクエリの改善がなければ、専門家になるのは困難です。私見。
概要
ウェビナーにご参加いただきありがとうございます。また、すばらしい質問をありがとうございました。申し訳ありませんが、すべてに対応できませんでしたが、それでもお役に立てば幸いです。上記で取り上げていない質問がある場合は、[email protected]まで直接お問い合わせください。