等待事件记录表
我们常常需要借助于等待事件来进行分析,找出到底数据库响应是慢在哪里。
等待事件记录表有三张,这些表记录了当前与最近在MySQL实例中发生了哪些等待事件,时间消耗是多少。
events_waits_current表:
主要可以查看:
THREAD_ID
EVENT_NAME
OPERATION
COLLECT_TIME
记录当前正在执行的等待事件的,每个线程只记录1行记录.
THREAD_ID,EVENT_ID:线程ID和当前事件ID。THREAD_ID和EVENT_ID值构成了该事件信息行的唯一标识
END_EVENT_ID:当一个事件正在执行时该列值为NULL,当事件执行结束时把该事件的ID更新到该列
EVENT_NAME:产生事件的instruments名称,该名称来自setup_instruments表的NAME字段值
SOURCE:产生该事件的instruments所在的源文件名称以及检测到该事件发生点的代码行号。如果遇到互斥锁、阻塞等,可以检查源代码查看发生这种情况的上下文环境
TIMER_START,TIMER_END,TIMER_WAIT:事件的开始、结束、经过时间,单位为皮秒。如果事件未执行完,TIMER_END=当前时间,TIMER_WAIT=TIMER_END - TIMER_START。如果采集该事件的instruments配置项TIMED = NO,则不会收集事件的时间信息,三项均为NULL
SPINS:互斥量和自旋次数。如果该列值为NULL,则表示代码中没有使用自旋或自旋没有被监控
OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE:正在被执行的对象的schema、名称和类型
OBJECT_INSTANCE_BEGIN:内存中的地址
NESTING_EVENT_ID:表示该行信息中的EVENT_ID事件嵌套在哪个事件中,即父事件的EVENT_ID
NESTING_EVENT_TYPE:父事件的事件类型,有效值有:TRANSACTION,STATEMENT,STAGE或WAIT
OPERATION:执行的操作类型,如:lock、read、write、timed_wait
NUMBER_OF_BYTES:操作读取或写入的字节数或行数。对于文件IO等待,该值表示字节数;对于表I/O等待(wait/io/table/sql/handler instruments事件),该值表示行数。如果值大于1,则表示该事件对应一个批量I/O操作。
FLAGS:留作将来使用
events_waits_history表:
记录已经执行完的最近的等待事件历史,默认每个线程只记录10行记录
events_waits_history_long表:
记录已经执行完的最近的等待事件历史,默认所有线程的总记录行数为10000行
注意:等待事件相关配置中,setup_instruments表中绝大部分的等待事件instruments都没有开启(IO相关的等待事件instruments默认大部分已开启),setup_consumers表中waits相关的consumers配置默认没有开启。
原博文地址:
https://blog.csdn.net/Hehuyi_In/article/details/105189571