LoginSignup
0
1

More than 3 years have passed since last update.

SQL Server 脳で学ぶ MySQL即効クエリチューニング の内容

Last updated at Posted at 2021-02-18

MySQL即効クエリチューニング ThinkIT Books を読みながら解説されている内容を SQL Server で実施するためにはどのような手法があるかを考えながら書いたものです。

ページ数も手ごろで、とても読みやすかったです!!

第 2 章より

MySQL SQL Server
スローログ 拡張イベント / SQL Server プロファイラ / クエリストア
ジェネラルログ 拡張イベント / SQL Server プロファイラ
バイナリーログ sys.fn_dblog によるログファイルの直接参照 / レプリケーションを有効にし sp_replcmds
Percona Toolkit SQL Server First Responder Kit / tigertoolbox

第 3 章より

MySQL SQL Server
EXPLAIN ステートメント SET SHOWPLAN_XML / SET SHOWPLAN_ALL / SET SHOWPLAN_TEXT
ステータス変数 セッション : sys.dm_exec_session, SET STATISTICS TIME, SET STATISTICS IO / グローバル : システム統計関数, その他 DMV
ANALYZE TABLE UPDATE STATISTICS
統計情報サンプリングページ数 UPDATE STATISTICS のサンプリング設定
EXPLAIN の解析 プラン表示の論理操作と物理操作のリファレンス

Memo

SQL Server では次のようなことはできなさそう

  • EXPLAIN で、どのインデックスが利用できるかを判断したか
    • 最終的に使われたインデックスのみが判断できる
  • IGNORE INDEX による無効にするインデックスの指定
    • INDEX ヒントでどのインデックスを使用するかは指定できるが、無効にするインデックスについてのヒントはない (はず)
    • 変換ルールの調整でインデックス全体を使用しないようにすることはできるかもしれないが通常運用では実施しない

第 4 章より

MySQL SQL Server
PMP (Percona Monigoring Plugins) データコレクション / SSMS のレポート機能 / SQL Live Monitor

Memo

現在の状況を表示するツール / ユーティリティはあるが、 for Cacti / for Zabbix / for Nagios のような監視ソリューションとの連携が行える機能が含まれるツールは知らない。
SCOM であれば Management Pack、Azure Monitoring Agent で SQL Server 関連の項目を連携し、Azure Monitor で監視ということはできる。
各社の監視ソリューションで SQL Server 向けのプラグインは出ているので、PMP for xxxx のような、情報を取得するソリューション起点での連携が考慮されていなくても大体はできるかと思うが。

第 5 章より

MySQL SQL Server
innotop 利用状況モニター

Memo

CUI で SQL Server の状況を確認するツール、何かあった気がするけど忘れた…。
スクリプトから、収集クエリを連続実行して、コンソールに出力して、状況を確認することはよくやる。
SQL Server 管理は、GUI が基本なので、SSMS / Azure Data Studio で状況をウォッチすることが多いのではないか。
(監視ソリューションのソフトも基本的には、SQL Server のクエリを定期的に実行して、メトリクスを取得しているので)

第 6 章より

MySQL SQL Server
SHOW PROFILE ライブクエリ統計 / 軽量クエリプロファイリング

Memo

実行中のクエリに対してのアプローチであれば、軽量クエリプロファイリングで状況を確認することで、クエリの動作のトレースをとることも可能
Logical Tree, Physical Tree , Memo Structure でオプティマイザトレースのような、クエリ最適化を覗くことはできるが、各処理の時間の観点ではないので、クエリプロファイリング系の方が用途は近そう。

第 7 章より

MySQL SQL Server
Performance Schema DMV / sys.dm_os_performance_counters / クエリストア / データコレクション
sys sys (DMV / システムビューは sys スキーマ配下)

Memo

SQL Server では、最新バージョンでも、データコレクションは明示的に有効にしないといけないため、運用環境で有効化されていない可能性は高い。
SQL Database では、クエリストアはデフォルトで有効だが、SQL Server はデフォルトでは有効になっていないため、クエリストアについても明示的に設定が必要。
DMV については、情報の取得は自動的に行われる (無効にできない) ため、DMV については、どの環境でも使用することはできる。

軽量なクエリプロファイリングについては、SQL Server 2016 SP1 以降で有効にすることができ、2019 / SQL Database ではデフォルトで有効であるため、初期環境でも使用できる。

MySQL のように情報取得の細かな設定の調整はできない

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1