skillup

技術ブログ

Database

DB負荷調査のセオリー

投稿日:2021年12月30日 更新日:

DB負荷などで見ておきたいことのまとめなど。(今のプロジェクトではSQLServerを使っていますが、他のデータベースでも同じかと思います。)

参考URL

SQLServer: 現在実行中クエリのリアルタイムトラブルシューティング

現在進行形のSQLを確認

現在発行されているSQLの一覧とその状態を見るクエリです。

見るべきポイントなど

メインで見ているテーブルのデータは以下のURLを参考に。

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-requests-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sql-text-transact-sql?view=sql-server-ver15

  • spid・・セッションID
  • elapsed_sec(=time_sec)・・SQLの実行されている時間(単位:秒)
  • status・・現在のクエリの状態
  • command_text・・実行されているSQL
  • wait_time・・ブロックされているときの待ち時間
  • granted_query_memory・・キロバイト

検索条件は

となっているので、実行中で1秒以上実行されているSQL(あとは任意のSQLの検索語句)を抽出します。

コネクションの数

どの場所からどれくらいつながれているかのチェック

あまりにも多い場合、余計なSQLが発行されすぎていないか、プログラム側でcloseをつけているかなどのチェックが必要ですね・・・

メモリ消費量のの高いSQLを見る方法など

負荷の高いSQL(現在進行中ではなく、累積)

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?view=sql-server-ver15

  • total_worker_time・・前回数分の実行時間
  • execution_count・・実行回数

一定の保存期間で単純に累積のSQLの実行時間などを見ていくSQLです。

SQL Server で実行された SQL を SQL で取得する方法

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

HAVING句の活用 発展編

今回からはまたまたHAVING句です。 下記のようなテーブル(teams)があり、全員が待機状態のチーム(全員がそろっている)を求めます。 member | team_id | status &#82 …

no image

データベースアンチパターン・グレーパターンまとめ

本で勉強したものと自分で個人的に経験したことのまとめ Contents1 値渡しと参照渡しの混同2 型の制約が弱い3 変更していいデータ、していけないデータ4 参照系と履歴系のデータを区別する5 リレ …

no image

論理設計のグレーノウハウ サロゲートキー

前回まではアンチパターンやバッドノウハウについて学習してきましたが、今回はグレーノウハウについて特集します。 グレーノウハウとは読んで字のごとくホワイトともブラックとも言えないという手法ですね。 つま …

no image

JPAでの多対多のリレーション

以前、このエントリーでJPAのリレーションについて説明しました。 今回は多対多について説明します。 Contents1 テーブル構成2 ソース2.1 CDのエンティティ2.2 Artistのエンティテ …

no image

EXISTSと集合

前回に引き続きEXISTSの問題です。 下記のようなテーブル(projects)があり、 project_id | step_nbr | status ———&#8 …

アーカイブ