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

データベース設計のアンチパターン 複数表結合,大作SQL,Blob型の乱用

データベースのアンチパターンに関して。 以前下記ブログでも書いたんですが設計のスキルに関してもう少し身に着ける必要があるとおもい、チェックします。 論理設計のグレーノウハウ サロゲートキー 論理設計の …

no image

データベースのテスト環境作成

現在作っているシステムのリリースが近づいており、本番に近い環境を作成しお客様に見てもらうことに。 こういった手順はマニュアル化しておいたほうが楽だろうと思い、自分的にメモ 1 現状運用されているデータ …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …

no image

MYSQL group_concat,cast等

実務でいろいろとトラブルがあり、データベースから在庫データを見てくれ~なんて依頼がありましたんでSQLをごりごり書いていたんですが、普段使わないようなSQLの構文を使ったのでここでちょっと紹介します。 …

アーカイブ