有趣的statement stack

引子

在使用events_statements_current的过程中发现,同一线程在同一时刻,可能有多条记录,与直观感觉不太一样,于是跟踪了一下内部实现,有了本文。

STATEMENT STACK的定义

STATEMENT STACK 是events_statements_current表被后用于存储当前会话执行语句堆栈的数据结构。

在MySQL8中,相关定义如下:

/** Max size of the statements stack. */ uint statement_stack_max; /** nested statement lost */ uint nested_statement_lost; struct PFS_ALIGNED PFS_thread : PFS_connection_slice { //... /** Size of @c m_events_statements_stack. */ uint m_events_statements_count; PFS_events_statements *m_statement_stack; //... }