25.12.6.1 events_statements_currenttable

events_statements_currenttable 包含当前语句事件。该 table 在每个线程中存储一行,以显示该线程的最新受监视语句事件的当前状态,因此没有用于配置 table 大小的系统变量。

在包含语句事件行的 table 中,events_statements_current是最基本的。包含语句事件行的其他 table 在逻辑上是从当前事件派生的。例如,events_statements_historyevents_statements_history_longtable 是已结束的最近语句事件的集合,每个线程的最大行数分别是所有线程的最大行数。

有关三个events_statements_xxx事件 table 之间的关系的更多信息,请参见第 25.9 节“当前和历史事件的性能架构 table”

有关配置是否收集语句事件的信息,请参见第 25.12.6 节“性能架构语句事件 table”

events_statements_currenttable 具有以下列:

  • THREAD_ID , EVENT_ID

与事件关联的线程以及事件开始时的线程当前事件号。 THREAD_IDEVENT_ID值一起唯一标识该行。没有两行具有相同的一对值。

  • END_EVENT_ID

事件开始时此列设置为NULL,事件结束时此列更新为线程当前事件号。

  • EVENT_NAME

收集事件的仪器的名称。这是setup_instrumentstable 中的NAME值。乐器名称可能包含多个部分,并形成一个层次结构,如第 25.6 节“性能架构工具命名约定”中所述。

对于 SQL 语句,在解析该语句之前,EVENT_NAME的值最初为statement/com/Query,然后更改为更合适的值,如第 25.12.6 节“性能架构语句事件 table”中所述。

  • SOURCE

源文件的名称,其中包含产生事件的检测代码,以及发生检测的文件中的行号。这使您可以检查源以确定确切涉及的代码。

  • TIMER_START , TIMER_END , TIMER_WAIT

事件的时间信息。这些值的单位是皮秒(万亿分之一秒)。 TIMER_STARTTIMER_END值指示事件计时的开始和结束时间。 TIMER_WAIT是事件经过的时间(持续时间)。

如果事件尚未结束,则TIMER_END是当前计时器值,而TIMER_WAIT是到目前为止所经过的时间(TIMER_END-TIMER_START)。

如果事件是由具有TIMED = NO的乐器产生的,则不会收集计时信息,并且TIMER_STARTTIMER_ENDTIMER_WAIT均为NULL

有关以皮秒为单位的事件时间和影响时间值的因素的讨论,请参阅第 25.4.1 节“性能架构事件计时”

  • LOCK_TIME

awaittable 锁所花费的时间。该值以微秒为单位计算,但归一化为皮秒,以便与其他性能模式计时器进行比较。

  • SQL_TEXT

SQL 语句的文本。对于不与 SQL 语句关联的命令,其值为NULL

默认情况下,可用于语句显示的最大空间为 1024 字节。要更改此值,请在服务器启动时设置performance_schema_max_sql_text_length系统变量。

  • DIGEST

语句将 MD5 值摘要为 32 个十六进制字符的字符串,如果statements_digest使用者是no,则返回NULL。有关语句摘要的更多信息,请参见第 25.10 节“性能模式语句摘要”

  • DIGEST_TEXT

规范化的语句摘要文本,如果statements_digest使用者是no,则返回NULL。有关语句摘要的更多信息,请参见第 25.10 节“性能模式语句摘要”

performance_schema_max_digest_length系统变量确定每个会话可用于摘要值存储的最大字节数。但是,由于摘要缓冲区中诸如关键字和 Literals 值之类的语句组件的编码,语句摘要的显示长度可能比可用缓冲区长。因此,从语句事件 table 的DIGEST_TEXT列中选择的值可能看起来超过performance_schema_max_digest_length值。

  • CURRENT_SCHEMA

语句的默认数据库,如果没有,则为NULL

  • OBJECT_SCHEMA , OBJECT_NAME , OBJECT_TYPE

对于嵌套语句(存储的程序),这些列包含有关父语句的信息。否则为NULL

  • OBJECT_INSTANCE_BEGIN

此列标识该语句。该值是对象在内存中的地址。

  • MYSQL_ERRNO

语句诊断区域中的语句错误号。

  • RETURNED_SQLSTATE

语句诊断区域中的语句 SQLSTATE 值。

  • MESSAGE_TEXT

语句诊断区域中的语句错误消息。

  • ERRORS

语句是否发生错误。如果 SQLSTATE 值以00(完成)或01(警告)开头,则值为 0.值为 1 是 SQLSTATE 值是其他任何值。

  • WARNINGS

语句诊断区域中的警告数量。

  • ROWS_AFFECTED

语句影响的行数。有关“受影响”的含义的说明,请参见第 27.7.6.1 节“ mysql_affected_rows()”

  • ROWS_SENT

语句返回的行数。

  • ROWS_EXAMINED

服务器层检查的行数(不计算存储引擎内部的任何处理)。

  • CREATED_TMP_DISK_TABLES

类似于Created_tmp_disk_tables status 变量,但特定于该语句。

  • CREATED_TMP_TABLES

类似于Created_tmp_tables status 变量,但特定于该语句。

  • SELECT_FULL_JOIN

类似于Select_full_join status 变量,但特定于该语句。

  • SELECT_FULL_RANGE_JOIN

类似于Select_full_range_join status 变量,但特定于该语句。

  • SELECT_RANGE

类似于Select_range status 变量,但特定于该语句。

  • SELECT_RANGE_CHECK

类似于Select_range_check status 变量,但特定于该语句。

  • SELECT_SCAN

类似于Select_scan status 变量,但特定于该语句。

  • SORT_MERGE_PASSES

类似于Sort_merge_passes status 变量,但特定于该语句。

  • SORT_RANGE

类似于Sort_range status 变量,但特定于该语句。

  • SORT_ROWS

类似于Sort_rows status 变量,但特定于该语句。

  • SORT_SCAN

类似于Sort_scan status 变量,但特定于该语句。

  • NO_INDEX_USED

1 如果该语句在不使用索引的情况下执行了 table 扫描,则返回 0.

  • NO_GOOD_INDEX_USED

1 如果服务器找不到用于该语句的良好索引,否则返回 0.有关其他信息,请参见第 8.8.2 节“ EXPLAIN 输出格式”Range checked for each record值的EXPLAIN输出中的Extra列的描述。

  • NESTING_EVENT_ID , NESTING_EVENT_TYPE , NESTING_EVENT_LEVEL

这三列与其他列一起使用,以提供有关顶级(未嵌套)语句和嵌套语句(在存储程序中执行)的信息,如下所示。

对于顶级语句:

OBJECT_TYPE = NULL
OBJECT_SCHEMA = NULL
OBJECT_NAME = NULL
NESTING_EVENT_ID = NULL
NESTING_EVENT_TYPE = NULL
NESTING_LEVEL = 0

对于嵌套语句:

OBJECT_TYPE = the parent statement object type
OBJECT_SCHEMA = the parent statement object schema
OBJECT_NAME = the parent statement object name
NESTING_EVENT_ID = the parent statement EVENT_ID
NESTING_EVENT_TYPE = 'STATEMENT'
NESTING_LEVEL = the parent statement NESTING_LEVEL plus one

events_statements_currenttable 允许TRUNCATE TABLE。它删除行。