events_statements_current 表包含当前语句事件。该表为每个线程存储一行,显示线程最近监控的语句事件的当前状态,因此没有系统变量来配置表大小。
在包含语句事件行的表中,events_statements_current 是最基本的。其他包含语句事件行的表在逻辑上是根据当前事件推导出来的。例如,events_statements_history 和 events_statements_history_long 表是最近已结束的语句事件的集合,分别对应每个线程的最大行数和所有线程的全局最大行数。
有关三个 events_statements_ 事件表之间关系的更多信息,请参见 第 29.9 节,“Performance Schema 用于当前和历史事件的表”。xxx
有关配置是否收集语句事件的信息,请参见 第 29.12.6 节,“Performance Schema 语句事件表”。
events_statements_current 表包含以下列
THREAD_ID,EVENT_ID与事件关联的线程以及事件开始时线程的当前事件编号。
THREAD_ID和EVENT_ID值组合在一起可唯一标识该行。没有两行具有相同的数值对。END_EVENT_ID此列在事件开始时设置为
NULL,并在事件结束时更新为线程的当前事件编号。EVENT_NAME收集事件的仪器的名称。这是
setup_instruments表中的NAME值。如 第 29.6 节,“Performance Schema 仪器命名约定” 中所述,仪器名称可能包含多个部分并形成层次结构。对于 SQL 语句,
EVENT_NAME值最初为statement/com/Query,直到语句被解析,然后变更为更合适的值,如 第 29.12.6 节,“Performance Schema 语句事件表” 中所述。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_TEXTSQL 语句的文本。对于与 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列中选择的价值观似乎超过了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 oneSTATEMENT_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) 上的主键
TRUNCATE TABLE 允许用于 events_statements_current 表。它会删除行。