SQL Server では実行プランを表示した際に各演算子 (イテレーター) に下図のようなコストラベルが出力されます。
クエリのチューニングを実施する際には、このコストラベルの数値が高い操作についての改善を行うことが多いかと思いますが、コストラベルだけでは判断できない情報もあります。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
SQL Server では実行プランを表示した際に各演算子 (イテレーター) に下図のようなコストラベルが出力されます。
クエリのチューニングを実施する際には、このコストラベルの数値が高い操作についての改善を行うことが多いかと思いますが、コストラベルだけでは判断できない情報もあります。
SQL Server では、「待機事象 (Wait Stats)」の情報を確認することで、インスタンスで同時実行性を低下させる問題が発生しているかの確認をするという分析手法があります。
SQL Server でクエリ実行の処理 (タスク) を実行する際には、タスクは次の状態を遷移しながら処理が行われます。
この 3 種類の状態の中で「待機状態」に入っている時間が少なければ、他の処理により同実行性を低下させることなく、処理を実行することができていることになります。
SQL Server のクエリの最適化を行うための、コンポーネントであるクエリオプティマイザーについて学習しようと思った際にはどのような資料を確認すればよいでしょうか?
公式のドキュメントや、公開されているドキュメントでかなり Deep なものがあり、この機会に公開情報をまとめておきたいと思います。
SQL Server のクエリオプティマイザーの情報というと「実行プラン」から確認するというようなイメージを持つことがあるかもしれませんが、Tree / Memo / 変換ルール というような情報を確認することで、クエリオプティマイザーに一歩踏み込んだ学習をすることができます。
2021 年に入ってからの更新です。
先日、次のような投稿を書きました。
Azure の仮想マシン (Azure VM) で SQL Server を使用する際には、SQL Server IaaS Agent 拡張機能 (IaaS エージェント) (以下、IaaS Agent) という、Azure の仮想マシン上で実行している SQL Server の管理性を向上させる機能を無償で使うことができます。
IaaS Agent をインストールすると、仮想マシンにインストールしている SQL Server を「SQL 仮想マシン」というブレードで一元管理できるようになりますので、サブスクリプション内でどのような SQL Server を使用しているかもひと目で確認でき、管理面でもいろいろと便利です。
先日の投稿では、日本語環境の SQL Server として再インストールした場合の、IaaS Agent の再導入方法と、IaaS Agent の機能の一つである、自動バックアップについて触れましたが、IaaS Agent にはこれ以外の機能も豊富に含まれており、次のような機能を利用することができます。
投稿内にも記載していますが、サブスクリプション内の現在の VM および、今後展開する VM すべてを自動登録 のように、SQL Server がインストールされている仮想マシンが存在する場合には自動的に登録を行う機能もありますので、保持しているサブスクリプションでは、有効にしておけば、IaaS Agent の登録の抜けもないかと思います。
自動登録は、仮想マシンの再起動が不要な「軽量管理モード」での導入が基本となっていますので、稼働中の SQL Server に IaaS Agent がインストールされていない場合でも、再起動のリスクはなく、導入することができます。
軽量管理モードで利用可能な機能はライセンスモデル / エディション / バージョンの変更の機能のみとなりますが、SQL 仮想マシンのブレードによる一元管理は使用できますので、軽量管理モードでインストールするだけでも管理性は向上するかと。
Azure の仮想マシンで SQL Server を実行する場合、IaaS Agent を導入することで、適切なライセンスを使用していることの宣言にもつながりますので、SQL Server を Azure 仮想マシン上で実行する際には、自動登録の機能も活用しながら、原則導入するようにしておいた方がよいかと。
本投稿では、IaaS Agent でできることを一通り記載しましたが、運用 / 構築に関してのかなりの作業の容易性が向上するための機能を無償で使用することができます。
また、本投稿は、日本で SQL Server を利用する際には設定する機会が多いと思われる、SQL Server の日本語化を SQL Server on Azure VM (インストール済みイメージ) の日本語化 (2021/1 版) の手順で実施した環境で、確認をしていますので、IaaS Agent の各機能は日本語環境でも利用することが可能です。
日本語版の SQL Server Management Studio をインストールしているにもかかわらず、英語版の SSMS が起動するようになった場合の回避方法です。
私の場合は、Azure の SQL Server インストール済み VM の展開をしていて、
というような状態になってしまい、これを修正した際の方法となります。
レジストリとファイル削除を実施していますので、本投稿を元に作業を実施される際には自己責任で対応をお願いします。
SQL Server の最大のユーザーグループであった PASS (Professional Association for SQL Server) が 2021/1/15 にクローズとなり、今年から、SQL Server の情報をキャッチアップする場所にも変化が出てくるのではないでしょうか。
PASS のクローズにより SQLSaturday もクローズとなっており、ユーザー主体のイベントの実施状況にも影響が出てくるかと思います。
sqlpass.org / pass.org / sqlsaturday.com のドメインで運営されていたものは、今回のクローズに伴い閉鎖されており、2021/1/15 以降は、これらのドメインで公開されていたコンテンツにはアクセスができなくなっています。
SQLSaturday の豊富なコンテンツが検索サイトでヒットしなくなるのは大きな痛手ですね…。
(一部のコンテンツについては、各スピーカーの方が、個別にアップロードしてくださっていたりもしますので、すべてが参照できなくなったわけではないようですが)
PASS クローズ後に、SQL Server 関連の情報をキャッチアップするためには、どのサイトを確認するのが良いかについて、まとめておきたいと思います。
2021/1/26 時点の情報ですので、今後、状況が変化する可能性があるということはご了承ください。
2021/1/29 追記
Community news: We are delighted to announce that PASS and SQLSaturday assets have been acquired by @redgate. You can check out the details here: https://t.co/9qtKPhvTg6 #sqlpass #sqlsaturday #sqlfamily pic.twitter.com/EO5byHUuOT
— Redgate (@redgate) January 28, 2021
PASS の資産ですが、Redgate が取得されたようです。
PASS が保有していたコンテンツも取得されており、これらをどのように取り扱うかは検討されているようです。
Redgate は SQL Server の製品 / コミュニティともかかわりが深い企業ですので、PASS が保有していたコンテンツの取り扱いについては、Redgate が取得されたことで一安心かなと思っています。
Redgate の PASS 関連のニュースについては Looking for PASS or SQLSaturday? に登録をしておくとメールが流れてきますので、その情報を参考にするとよいのではないでしょうか。