该 events_statements_current
表包含当前语句事件。该表存储每个线程的当前状态的最新监控语句事件,因此没有系统变量来配置表大小。
在包含语句事件行的表中,events_statements_current
是最基本的。其他包含语句事件行的表是从当前事件逻辑派生的。例如,events_statements_history
和 events_statements_history_long
表是每个线程和全局跨所有线程的最新语句事件的集合,分别。
有关三个 events_statements_
事件表之间关系的更多信息,请参阅 第 29.9 节,“性能模式当前和历史事件表”。xxx
有关配置是否收集语句事件的信息,请参阅 第 29.12.6 节,“性能模式语句事件表”。
该 events_statements_current
表具有以下列:
-
THREAD_ID
,EVENT_ID
与事件关联的线程和线程当前事件号。当事件开始时。
THREAD_ID
和EVENT_ID
值组合唯一标识该行。没有两个行具有相同的对值。 -
END_EVENT_ID
该列在事件开始时设置为
NULL
,并在事件结束时更新为线程当前事件号。 -
EVENT_NAME
从中收集事件的仪器的名称。这是一个
NAME
值来自setup_instruments
表。仪器名称可能具有多个部分并形成层次结构,如 第 29.6 节,“性能模式仪器命名约定” 中所述。对于 SQL 语句,
EVENT_NAME
值最初是statement/com/Query
,直到语句被解析,然后更改为更合适的值,如 第 29.12.6 节,“性能模式语句事件表” 中所述。 -
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
。关于picoseconds作为事件时间单位和影响时间值的因素的讨论,请参阅第29.4.1节,“性能模式事件计时”。
-
LOCK_TIME
等待表锁定的时间。这值以微秒计算,但以picoseconds为单位,以便与其他性能模式计时器进行比较。
-
SQL_TEXT
SQL语句的文本。对于不与SQL语句关联的命令,值为
NULL
。语句显示的最大空间默认为1024字节。要更改此值,请在服务器启动时设置
performance_schema_max_sql_text_length
系统变量。(更改此值也会影响其他性能模式表中的列。请参阅第29.10节,“性能模式语句摘要和采样”。) -
DIGEST
语句摘要SHA-256值作为64个十六进制字符的字符串,或者如果
statements_digest
消费者是no
,则为NULL
。有关语句摘要的更多信息,请参阅第29.10节,“性能模式语句摘要和采样”。 -
DIGEST_TEXT
标准化语句摘要文本,或者如果
statements_digest
消费者是no
,则为NULL
。有关语句摘要的更多信息,请参阅第29.10节,“性能模式语句摘要和采样”。系统变量
performance_schema_max_digest_length
确定每个会话的摘要值存储的最大字节数。然而,由于语句元素(如关键字和文字值)在摘要缓冲区中的编码,所选的语句摘要值可能超过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
语句是否发生错误。该值为0如果SQLSTATE值以
00
(完成)或01
(警告)开头。该值为1如果SQLSTATE值是其他任何值。 -
WARNINGS
警告数量,从语句诊断区域。
-
ROWS_AFFECTED
语句影响的行数。有关“affected”的含义的描述,请参阅mysql_affected_rows()。
-
ROWS_SENT
语句返回的行数。
-
ROWS_EXAMINED
服务器层(不包括存储引擎内部处理)检查的行数。
-
CREATED_TMP_DISK_TABLES
与
Created_tmp_disk_tables
状态变量相同,但特定于语句。 -
CREATED_TMP_TABLES
与
Created_tmp_tables
状态变量相同,但特定于语句。 -
SELECT_FULL_JOIN
像
Select_full_join
状态变量,但特定于语句。 -
SELECT_FULL_RANGE_JOIN
像
Select_full_range_join
状态变量,但特定于语句。 -
SELECT_RANGE
像
Select_range
状态变量,但特定于语句。 -
SELECT_RANGE_CHECK
像
Select_range_check
状态变量,但特定于语句。 -
SELECT_SCAN
像
Select_scan
状态变量,但特定于语句。 -
SORT_MERGE_PASSES
像
Sort_merge_passes
状态变量,但特定于语句。 -
SORT_RANGE
像
Sort_range
状态变量,但特定于语句。 -
SORT_ROWS
像
Sort_rows
状态变量,但特定于语句。 -
SORT_SCAN
像
Sort_scan
状态变量,但特定于语句。 -
NO_INDEX_USED
如果语句执行了没有使用索引的表扫描,则为 1,否则为 0。
-
NO_GOOD_INDEX_USED
如果服务器找不到好的索引来使用语句,则为 1,否则为 0。有关更多信息,请参阅
EXPLAIN
输出的Extra
列的描述,在第 10.8.2 节,“EXPLAIN 输出格式”。 -
NESTING_EVENT_ID
,NESTING_EVENT_TYPE
,NESTING_EVENT_LEVEL
这些三列与其他列一起提供信息,如下所示,对于顶级语句和嵌套语句(在存储程序中执行)。
对于顶级语句:
OBJECT_TYPE = NULL OBJECT_SCHEMA = NULL OBJECT_NAME = NULL NESTING_EVENT_ID = the parent transaction EVENT_ID NESTING_EVENT_TYPE = 'TRANSACTION' 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
-
STATEMENT_ID
服务器在 SQL 级别维护的查询 ID。该值在服务器实例中是唯一的,因为这些 ID 是使用全局计数器生成的,该计数器以原子方式递增。
-
CPU_TIME
当前线程的 CPU 时间,以皮秒为单位。
-
MAX_CONTROLLED_MEMORY
报告语句执行期间使用的最大控制内存量。
-
MAX_TOTAL_MEMORY
报告语句执行期间使用的最大内存量。
-
EXECUTION_ENGINE
查询执行引擎。该值是
PRIMARY
或SECONDARY
。对于 MySQL HeatWave 服务和 HeatWave,PRIMARY
引擎是InnoDB
,SECONDARY
引擎是 HeatWave (RAPID
)。对于 MySQL Community Edition 服务器、MySQL Enterprise Edition 服务器(on-premise)和 MySQL HeatWave 服务没有 HeatWave,值始终是PRIMARY
。
该 events_statements_current
表具有以下索引:
-
主键在 (
THREAD_ID
,EVENT_ID
)
TRUNCATE TABLE
允许对 events_statements_current
表执行。它删除行。