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

実行中/直近の SQL をリアルタイムで監視

Oracle

SET LONG 1000000 LONGCHUNKSIZE 1000000 LINESIZE 250 PAGESIZE 0
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id=>'&sql_id', type=>'TEXT') AS report FROM dual;
-- or: SELECT sql_id, status, elapsed_time FROM v$sql_monitor WHERE status='EXECUTING';

Real-Time SQL Monitoring は長時間/並列のクエリをリアルタイムで表示する(Tuning Pack)。

PostgreSQL

SELECT pid, now()-query_start AS dur, state, wait_event, query
FROM pg_stat_activity WHERE state='active' ORDER BY query_start;

auto_explain を使用すると、遅いクエリの実行計画を自動的にログに記録できる。

MySQL

SELECT thread_id, event_name, timer_wait/1e9 AS ms, sql_text
FROM performance_schema.events_statements_current;

events_statements_current は現在実行中の文を示す。

SQL Server

SELECT r.session_id, r.status, r.wait_type, r.percent_complete, t.text
FROM sys.dm_exec_requests r JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.is_user_process = 1;

SSMS の「Live Query Statistics」は実行計画の進捗をリアルタイムで表示する。

MongoDB

db.currentOp({ active: true, secs_running: { $gt: 1 } })

長時間実行中の操作をリアルタイムで表示する。killOp で終了できる。

Redis

MONITOR

すべてのコマンドをリアルタイムでストリーミングする — 本番環境では性能に影響するため、短時間のみ使用すること。代わりに SLOWLOG を推奨する。

Elasticsearch

GET _tasks?detailed=true&group_by=parents

実行中のタスクをリアルタイムで表示する。長いタスクは POST _tasks/<id>/_cancel でキャンセルする。

DBAtlas で開く →