25.12.6.1 events_statements_currenttable
events_statements_currenttable 包含当前语句事件。该 table 在每个线程中存储一行,以显示该线程的最新受监视语句事件的当前状态,因此没有用于配置 table 大小的系统变量。
在包含语句事件行的 table 中,events_statements_current是最基本的。包含语句事件行的其他 table 在逻辑上是从当前事件派生的。例如,events_statements_history和events_statements_history_longtable 是已结束的最近语句事件的集合,每个线程的最大行数分别是所有线程的最大行数。
有关三个events_statements_xxx
事件 table 之间的关系的更多信息,请参见第 25.9 节“当前和历史事件的性能架构 table”。
有关配置是否收集语句事件的信息,请参见第 25.12.6 节“性能架构语句事件 table”。
events_statements_currenttable 具有以下列:
THREAD_ID
,EVENT_ID
与事件关联的线程以及事件开始时的线程当前事件号。 THREAD_ID
和EVENT_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_START
和TIMER_END
值指示事件计时的开始和结束时间。 TIMER_WAIT
是事件经过的时间(持续时间)。
如果事件尚未结束,则TIMER_END
是当前计时器值,而TIMER_WAIT
是到目前为止所经过的时间(TIMER_END
-TIMER_START
)。
如果事件是由具有TIMED = NO
的乐器产生的,则不会收集计时信息,并且TIMER_START
,TIMER_END
和TIMER_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。它删除行。