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
收集事件的工具的名称。这是一个
setup_instruments
表中的NAME
值。工具名称可能包含多个部分并形成层次结构,如 第 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
。有关将皮秒作为事件时间单位以及影响时间值因素的讨论,请参见第 29.4.1 节,“性能模式事件计时”。
LOCK_TIME
等待表锁花费的时间。该值以微秒计算,但为了便于与其他性能模式计时器进行比较,已将其规范化为皮秒。
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
确定每个会话可用于摘要值存储的最大字节数。但是,由于在摘要缓冲区中对语句元素(如关键字和文字值)进行编码,语句摘要的显示长度可能超过可用缓冲区大小。因此,从语句事件表DIGEST_TEXT
列中选择的 value 似乎超过了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。如果 SQLSTATE 值为其他任何内容,则该值为 1。WARNINGS
来自语句诊断区域的警告数量。
ROWS_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。有关更多信息,请参见 第 10.8.2 节,“EXPLAIN 输出格式” 中
EXPLAIN
输出的Extra
列中Range checked for each record
值的描述。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
。用于 HeatWave 服务和 HeatWave,其中PRIMARY
引擎为InnoDB
,SECONDARY
引擎为 HeatWave (RAPID
)。对于 MySQL 社区版服务器、MySQL 企业版服务器(本地)以及没有 HeatWave 的 HeatWave 服务,该值始终为PRIMARY
。
表 events_statements_current
具有以下索引
主键为 (
THREAD_ID
,EVENT_ID
)
表 events_statements_current
允许使用 TRUNCATE TABLE
。它将删除行。