DBAtlas · データベース運用アトラス

現在実行中の処理: アクティブセッション、レイテンシ、ロック、トランザクション (sys.session)

MySQLパフォーマンス

コマンド

SELECT conn_id, user, db, command, state, time,
       LEFT(current_statement, 100) AS current_statement,
       statement_latency, progress, lock_latency,
       rows_examined, full_scan, tmp_disk_tables,
       trx_state, trx_latency, last_wait
FROM sys.session
WHERE command <> 'Sleep' OR trx_state = 'ACTIVE'
ORDER BY time DESC
LIMIT 25;

概要

SHOW PROCESSLIST を performance_schema のデータで補完し、実行中ステートメントのレイテンシ、進捗率、ロック待機時間、examined 行数、フルスキャン / ディスク一時テーブル情報、オープン中のトランザクション状態を 1 行で表示する。Sleep 状態だがトランザクションを開いたままのセッションも一覧表示する。

使用する場面

インシデント発生後の最初の 30 秒で、どのクエリがどれだけ実行されているか、誰がロック待ちか、どのアイドルセッションがトランザクションを開いたままかを確認する。

注意

sys.session は performance_schema に対して複数の結合を行うため、接続数が数千になるとクエリ自体に数秒かかることがある。頻繁な監視には x$ ビューと LIMIT を使用する。progress は stage インストゥルメントが有効で、ALTER など進捗を報告する操作の場合にのみ値が入る。Sleep 状態で trx_state=ACTIVE のセッションは、autocommit=0 を使用するアプリケーション / コネクションプールが放置したトランザクションであり、メタデータロックおよび purge 問題の最も一般的な原因である。

DBAtlas で開く →

関連項目