地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

ロングトランザクションを見つける

cousmersとinstrumentsを有効化する

UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME = 'transaction';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_transactions_history_long';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_history_long';

有効化したらevents_transactions_history_longとevents_statements_history_longをジョインすることでクエリの中身を見つつトランザクションの内容を確認することができる

  SELECT 
    transactions.thread_id,
    transactions.event_id,
    transactions.nesting_event_id,
    sys.format_time(transactions.timer_wait),
    statements.nesting_event_id,
    statements.sql_text
  FROM
    performance_schema.events_transactions_history_long AS transactions
  JOIN
    performance_schema.events_statements_history_long AS statements ON transactions.event_id = statements.nesting_event_id
  WHERE transactions.timer_wait > 10000000000000;