MySQL8-中文参考-五十-

MySQL8 中文参考(五十)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

30.4.2 sys 模式的表和触发器

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-tables.html

30.4.2.1 sys_config 表

30.4.2.2 sys_config_insert_set_user 触发器

30.4.2.3 sys_config_update_set_user 触发器

以下章节描述了sys 模式的表和触发器。

原文:dev.mysql.com/doc/refman/8.0/en/sys-sys-config.html

30.4.2.1 sys_config

此表包含sys模式配置选项,每个选项一行。通过更新此表进行的配置更改会跨客户端会话和服务器重启持久保存。

sys_config表具有以下列:

  • variable

    配置选项名称。

  • value

    配置选项值。

  • set_time

    最近修改行的时间戳。

  • set_by

    最近修改行的帐户。如果自sys模式安装以来未更改行,则值为NULL

为了最小化从sys_config表直接读取的次数,sys模式函数会检查具有相应名称的用户定义变量,该变量是具有相同名称加上@sys.前缀的用户定义变量。(例如,与diagnostics.include_raw选项对应的变量是@sys.diagnostics.include_raw。)如果用户定义变量存在于当前会话中且非NULL,函数会优先使用其值,而不是sys_config表中的值。否则,函数会读取并使用表中的值。在后一种情况下,调用函数通常还会将相应的用户定义变量设置为表中的值,以便同一会话中对配置选项的进一步引用使用该变量,无需再次读取表。

例如,statement_truncate_len选项控制format_statement() Function")函数返回的语句的最大长度。默认值为 64。要临时将值更改为 32 以用于当前会话,请设置相应的@sys.statement_truncate_len用户定义变量:

mysql> SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT sys.format_statement(@stmt);
+-----------------------------------+
| sys.format_statement(@stmt)       |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+

会话中后续调用format_statement() Function")将继续使用用户定义变量值(32),而不是表中存储的值(64)。

要停止使用用户定义变量并恢复使用表中的值,请在会话中将变量设置为NULL

mysql> SET @sys.statement_truncate_len = NULL;
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+

或者,结束当前会话(导致用户定义变量不再存在)并开始新会话。

sys_config表中描述的传统关系可以被利用来进行临时配置更改,这些更改在您的会话结束时结束。然而,如果您设置了一个用户定义变量,然后在同一会话中随后更改相应的表值,只要用户定义变量存在非NULL值,该会话中不会使用更改后的表值。(更改后的表值会在未分配用户定义变量的其他会话中使用。)

以下列表描述了sys_config表中的选项及相应的用户定义变量:

  • diagnostics.allow_i_s_tables@sys.diagnostics.allow_i_s_tables

    如果此选项为ON,则允许diagnostics()过程")过程在 Information Schema TABLES表上执行表扫描。如果有许多表,这可能很昂贵。默认值为OFF

  • diagnostics.include_raw@sys.diagnostics.include_raw

    如果此选项为ON,则diagnostics()过程")过程将包括从查询metrics视图获取的原始输出。默认值为OFF

  • ps_thread_trx_info.max_length@sys.ps_thread_trx_info.max_length

    ps_thread_trx_info()函数")函数生成的 JSON 输出的最大长度。默认值为 65535。

  • statement_performance_analyzer.limit@sys.statement_performance_analyzer.limit

    为没有内置限制的视图返回的最大行数。(例如,statements_with_runtimes_in_95th_percentile视图在某种意义上具有内置限制,它仅返回在第 95 百分位数中具有平均执行时间的语句。)默认值为 100。

  • statement_performance_analyzer.view@sys.statement_performance_analyzer.view

    statement_performance_analyzer() Procedure") 过程要使用的自定义查询或视图(它本身被 diagnostics() Procedure") 过程调用)。如果选项值包含空格,则将其解释为查询。否则,它必须是查询 Performance Schema events_statements_summary_by_digest 表的现有视图的名称。如果 statement_performance_analyzer.limit 配置选项大于 0,则查询或视图定义中不能有 LIMIT 子句。默认值为 NULL(未定义自定义视图)。

  • statement_truncate_len, @sys.statement_truncate_len

    format_statement() Function") 函数返回的语句的最大长度。超过此长度的语句将被截断。默认值为 64。

其他选项可以添加到 sys_config 表中。例如,diagnostics() Procedure") 和 execute_prepared_stmt() Procedure") 过程如果存在 debug 选项,则使用该选项,但默认情况下,此选项不是 sys_config 表的一部分,因为调试输出通常只是临时启用,通过设置相应的 @sys.debug 用户定义变量。要在不必在各个会话中设置该变量的情况下启用调试输出,将选项添加到表中:

mysql> INSERT INTO sys.sys_config (variable, value) VALUES('debug', 'ON');

要更改表中的调试设置,需要做两件事。首先,修改表中的值:

mysql> UPDATE sys.sys_config
       SET value = 'OFF'
       WHERE variable = 'debug';

其次,为了确保当前会话中的过程调用使用表中的更改值,将相应的用户定义变量设置为 NULL

mysql> SET @sys.debug = NULL;

原文:dev.mysql.com/doc/refman/8.0/en/sys-sys-config-insert-set-user.html

30.4.2.2 sys_config_insert_set_user 触发器

对于通过 INSERT 语句添加到 sys_config 表中的行,sys_config_insert_set_user 触发器将 set_by 列设置为当前用户。

原文:dev.mysql.com/doc/refman/8.0/en/sys-sys-config-update-set-user.html

30.4.2.3 sys_config_update_set_user 触发器

sys_config_update_set_user 触发器用于 sys_config 表,类似于 sys_config_insert_set_user 触发器,但用于 UPDATE 语句。

30.4.3 sys 模式视图

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-views.html

30.4.3.1 主机 host_summary 和 x$host_summary 视图

30.4.3.2 主机 host_summary_by_file_io 和 x$host_summary_by_file_io 视图

30.4.3.3 主机 host_summary_by_file_io_type 和 x$host_summary_by_file_io_type 视图

30.4.3.4 主机 host_summary_by_stages 和 x$host_summary_by_stages 视图

30.4.3.5 主机 host_summary_by_statement_latency 和 x$host_summary_by_statement_latency 视图

30.4.3.6 主机 host_summary_by_statement_type 和 x$host_summary_by_statement_type 视图

30.4.3.7 innodb_buffer_stats_by_schema 和 x$innodb_buffer_stats_by_schema 视图

30.4.3.8 innodb_buffer_stats_by_table 和 x$innodb_buffer_stats_by_table 视图

30.4.3.9 innodb_lock_waits 和 x$innodb_lock_waits 视图

30.4.3.10 IO 线程 io_by_thread_by_latency 和 x$io_by_thread_by_latency 视图

30.4.3.11 IO 全局 io_global_by_file_by_bytes 和 x$io_global_by_file_by_bytes 视图

30.4.3.12 IO 全局 io_global_by_file_by_latency 和 x$io_global_by_file_by_latency 视图

30.4.3.13 IO 全局 io_global_by_wait_by_bytes 和 x$io_global_by_wait_by_bytes 视图

30.4.3.14 IO 全局 io_global_by_wait_by_latency 和 x$io_global_by_wait_by_latency 视图

30.4.3.15 最新的 latest_file_io 和 x$latest_file_io 视图

30.4.3.16 主机内存 memory_by_host_by_current_bytes 和 x$memory_by_host_by_current_bytes 视图

30.4.3.17 内存 memory_by_thread_by_current_bytes 和 x$memory_by_thread_by_current_bytes 视图

30.4.3.18 用户内存 memory_by_user_by_current_bytes 和 x$memory_by_user_by_current_bytes 视图

30.4.3.19 全局内存 memory_global_by_current_bytes 和 x$memory_global_by_current_bytes 视图

30.4.3.20 全局内存 memory_global_total 和 x$memory_global_total 视图

30.4.3.21 指标 metrics 视图

30.4.3.22 进程列表 processlist 和 x$processlist 视图

30.4.3.23 ps_check_lost_instrumentation 视图

30.4.3.24 模式自增列 schema_auto_increment_columns 视图

30.4.3.25 模式索引统计 schema_index_statistics 和 x$schema_index_statistics 视图

30.4.3.26 模式对象概览 schema_object_overview 视图

30.4.3.27 schema_redundant_indexes 和 x$schema_flattened_keys 视图

30.4.3.28 schema_table_lock_waits 和 x$schema_table_lock_waits 视图

30.4.3.29 schema_table_statistics 和 x$schema_table_statistics 视图

30.4.3.30 schema_table_statistics_with_buffer 和 x$schema_table_statistics_with_buffer 视图

30.4.3.31 schema_tables_with_full_table_scans 和 x$schema_tables_with_full_table_scans 视图

30.4.3.32 schema_unused_indexes 视图

30.4.3.33 session 和 x$session 视图

30.4.3.34 session_ssl_status 视图

30.4.3.35 statement_analysis 和 x$statement_analysis 视图

30.4.3.36 statements_with_errors_or_warnings 和 x$statements_with_errors_or_warnings 视图

30.4.3.37 statements_with_full_table_scans 和 x$statements_with_full_table_scans 视图

30.4.3.38 statements_with_runtimes_in_95th_percentile 和 x$statements_with_runtimes_in_95th_percentile 视图

30.4.3.39 statements_with_sorting 和 x$statements_with_sorting 视图

30.4.3.40 statements_with_temp_tables 和 x$statements_with_temp_tables 视图

30.4.3.41 user_summary 和 x$user_summary 视图

30.4.3.42 user_summary_by_file_io 和 x$user_summary_by_file_io 视图

30.4.3.43 user_summary_by_file_io_type 和 x$user_summary_by_file_io_type 视图

30.4.3.44 user_summary_by_stages 和 x$user_summary_by_stages 视图

30.4.3.45 user_summary_by_statement_latency 和 x$user_summary_by_statement_latency 视图

30.4.3.46 user_summary_by_statement_type 和 x$user_summary_by_statement_type 视图

30.4.3.47 version 视图

30.4.3.48 wait_classes_global_by_avg_latency 和 x$wait_classes_global_by_avg_latency 视图

30.4.3.49 wait_classes_global_by_latency 和 x$wait_classes_global_by_latency 视图

30.4.3.50 waits_by_host_by_latency 和 x$waits_by_host_by_latency 视图

30.4.3.51 waits_by_user_by_latency 和 x$waits_by_user_by_latency 视图

30.4.3.52 waits_global_by_latency 和 x$waits_global_by_latency 视图

以下部分描述了sys模式视图。

sys模式包含许多视图,以各种方式总结性能模式表。其中大多数视图都是成对出现的,其中一对的名称与另一对成员的名称相同,只是多了一个x$前缀。例如,host_summary_by_file_io视图按主机分组总结文件 I/O,并显示从皮秒转换为更易读值(带单位)的延迟;

mysql> SELECT * FROM sys.host_summary_by_file_io;
+------------+-------+------------+
| host       | ios   | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s     |
| background |  3468 | 4.18 s     |
+------------+-------+------------+

x$host_summary_by_file_io视图总结了相同的数据,但显示了未格式化的皮秒延迟:

mysql> SELECT * FROM sys.x$host_summary_by_file_io;
+------------+-------+---------------+
| host       | ios   | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+

没有x$前缀的视图旨在提供更用户友好且更易读的输出。带有x$前缀的视图显示相同的原始值,更适用于其他对数据进行自己处理的工具。

没有x$前缀的视图与相应的带有x$前缀的视图有以下不同:

  • 字节计数使用format_bytes() Function")进行大小单位格式化。

  • 时间值使用format_time() Function")进行时间单位格式化。

  • SQL 语句通过format_statement() Function")进行最大显示宽度截断。

  • 路径名使用format_path() Function")进行缩短。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary.html

30.4.3.1 主机摘要和 x$host_summary 视图

这些视图按主机分组总结语句活动、文件 I/O 和连接。

host_summaryx$host_summary 视图具有以下列:

  • host

    客户端连接的主机。假定底层性能模式表中的HOST列为NULL的行是用于后台线程的,并报告为background主机名。

  • statements

    主机的总语句数。

  • statement_latency

    主机的定时语句的总等待时间。

  • statement_avg_latency

    主机的定时语句的平均等待时间。

  • table_scans

    主机的总表扫描次数。

  • file_ios

    主机的总文件 I/O 事件数。

  • file_io_latency

    主机的定时文件 I/O 事件的总等待时间。

  • current_connections

    主机的当前连接数。

  • total_connections

    主机的总连接数。

  • unique_users

    主机的不同用户数。

  • current_memory

    主机的当前分配内存量。

  • total_memory_allocated

    主机的总分配内存量。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary-by-file-io.html

30.4.3.2 host_summary_by_file_iox$host_summary_by_file_io 视图

这些视图按主机分组总结文件 I/O,默认情况下按降序总文件 I/O 延迟排序。

host_summary_by_file_iox$host_summary_by_file_io 视图具有以下列:

  • 主机

    客户端连接的主机。假设基础性能模式表中的HOST列为NULL的行是用于后台线程的,并且以background作为主机名报告。

  • ios

    主机的文件 I/O 事件总数。

  • io_latency

    主机的定时文件 I/O 事件的总等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary-by-file-io-type.html

30.4.3.3 主机按文件 I/O 类型和 x$host_summary_by_file_io_type 视图

这些视图按主机和事件类型分组汇总文件 I/O。默认情况下,行按主机和总 I/O 延迟降序排序。

host_summary_by_file_io_typex$host_summary_by_file_io_type 视图具有以下列:

  • host

    客户端连接的主机。在底层性能模式表中 HOST 列为 NULL 的行被假定为后台线程,并以 background 作为主机名报告。

  • event_name

    文件 I/O 事件名称。

  • total

    主机上文件 I/O 事件发生的总次数。

  • total_latency

    主机上文件 I/O 事件的定时发生的总等待时间。

  • max_latency

    主机上文件 I/O 事件的单个最大等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary-by-stages.html

30.4.3.4 主机 _summary_by_stages 和 x$host_summary_by_stages 视图

这些视图按主机分组总结语句阶段。默认情况下,按主机和降序总延迟排序行。

host_summary_by_stagesx$host_summary_by_stages 视图具有以下列:

  • host

    客户端连接的主机。假定底层性能模式表中的HOST列为NULL的行是用于后台线程的,并报告为background主机名。

  • event_name

    舞台事件名称。

  • total

    主机的舞台事件发生次数总数。

  • total_latency

    主机的舞台事件定时发生的总等待时间。

  • avg_latency

    主机的舞台事件每次定时发生的平均等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary-by-statement-latency.html

30.4.3.5 host_summary_by_statement_latencyx$host_summary_by_statement_latency 视图

这些视图按主机分组总结了整体语句统计信息。默认情况下,按总延迟降序排序行。

host_summary_by_statement_latencyx$host_summary_by_statement_latency 视图具有以下列:

  • host

    客户端连接的主机。假定基础性能模式表中HOST列为NULL的行是后台线程的行,并且报告的主机名为background

  • total

    主机的语句总数。

  • total_latency

    主机的定时语句的总等待时间。

  • max_latency

    主机的定时语句的最大单个等待时间。

  • lock_latency

    主机的定时语句等待锁的总时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_sent

    语句返回的主机的行总数。

  • rows_examined

    语句从存储引擎读取的主机的总行数。

  • rows_affected

    语句影响的主机的总行数。

  • full_scans

    语句对主机进行的全表扫描总数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-host-summary-by-statement-type.html

30.4.3.6 主机按语句类型和 x$host_summary_by_statement_type 视图

这些视图总结了按主机和语句类型分组执行的语句的信息。默认情况下,按主机和降序总延迟排序行。

host_summary_by_statement_typex$host_summary_by_statement_type 视图具有以下列:

  • host

    客户端连接的主机。在底层性能模式表中HOST列为NULL的行被假定为后台线程,并以background作为主机名报告。

  • statement

    语句事件名称的最终组成部分。

  • total

    主机的语句事件的总发生次数。

  • total_latency

    主机的语句事件的总等待时间。

  • max_latency

    主机的语句事件的最大单个等待时间。

  • lock_latency

    由主机的语句事件等待锁的总时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_sent

    由主机的语句事件返回的行总数。

  • rows_examined

    由主机的语句事件从存储引擎读取的行总数。

  • rows_affected

    由主机的语句事件影响的行总数。

  • full_scans

    由主机的语句事件执行的全表扫描的总数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-innodb-buffer-stats-by-schema.html

30.4.3.7 innodb_buffer_stats_by_schema 和 x$innodb_buffer_stats_by_schema 视图

这些视图总结了 INFORMATION_SCHEMA INNODB_BUFFER_PAGE 表中按模式分组的信息。默认情况下,按降序缓冲区大小排序行。

警告

查询访问 INNODB_BUFFER_PAGE 表的视图可能会影响性能。除非您了解性能影响并确定其可接受,否则不要在生产系统上查询这些视图。为避免影响生产系统的性能,请在测试实例上重现要调查的问题并查询缓冲池统计信息。

innodb_buffer_stats_by_schemax$innodb_buffer_stats_by_schema 视图具有以下列:

  • object_schema

    对象的模式名称,如果表属于 InnoDB 存储引擎,则为 InnoDB System

  • allocated

    为模式分配的字节的总数。

  • data

    为模式分配的数据字节的总数。

  • pages

    为模式分配的页的总数。

  • pages_hashed

    为模式分配的散列页的总数。

  • pages_old

    为模式分配的旧页的总数。

  • rows_cached

    为模式缓存的行的总数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-innodb-buffer-stats-by-table.html

30.4.3.8 innodb_buffer_stats_by_tablex$innodb_buffer_stats_by_table视图

这些视图总结了INFORMATION_SCHEMA INNODB_BUFFER_PAGE表中的信息,按模式和表进行分组。默认情况下,按照缓冲区大小降序排序行。

警告

查询访问INNODB_BUFFER_PAGE表的视图可能会影响性能。除非您意识到性能影响并确定其可接受,否则不要在生产系统上查询这些视图。为了避免在生产系统上影响性能,重现您想要调查的问题,并在测试实例上查询缓冲池统计信息。

innodb_buffer_stats_by_tablex$innodb_buffer_stats_by_table视图具有以下列:

  • object_schema

    对象的模式名称,如果表属于InnoDB存储引擎,则为InnoDB System

  • object_name

    表名。

  • allocated

    表格分配的总字节数。

  • data

    为表分配的数据字节数。

  • pages

    表格分配的总页数。

  • pages_hashed

    为表分配的哈希页数。

  • pages_old

    为表分配的旧页数。

  • rows_cached

    表的缓存行数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-innodb-lock-waits.html

30.4.3.9 innodb_lock_waitsx$innodb_lock_waits 视图

这些视图总结了事务正在等待的InnoDB锁。默认情况下,按照锁��年龄降序排序。

innodb_lock_waitsx$innodb_lock_waits 视图具有以下列:

  • wait_started

    等待锁的开始时间。

  • wait_age

    等待锁已等待的时间,作为TIME值。

  • wait_age_secs

    等待锁已等待的时间,以秒为单位。

  • locked_table_schema

    包含锁定表的模式。

  • locked_table_name

    锁定表的名称。

  • locked_table_partition

    锁定分区的名称(如果有);否则为NULL

  • locked_table_subpartition

    锁定子分区的名称(如果有);否则为NULL

  • locked_index

    锁定索引的名称。

  • locked_type

    等待锁的类型。

  • waiting_trx_id

    等待事务的 ID。

  • waiting_trx_started

    等待事务开始的时间。

  • waiting_trx_age

    等待事务已等待的时间,作为TIME值。

  • waiting_trx_rows_locked

    等待事务锁定的行数。

  • waiting_trx_rows_modified

    等待事务修改的行数。

  • waiting_pid

    等待事务的进程列表 ID。

  • waiting_query

    等待锁的语句。

  • waiting_lock_id

    等待锁的 ID。

  • waiting_lock_mode

    等待锁的模式。

  • blocking_trx_id

    阻塞等待锁的事务的 ID。

  • blocking_pid

    阻塞事务的进程列表 ID。

  • blocking_query

    阻塞事务正在执行的语句。如果发出阻塞查询的会话变为空闲,则此字段报告为 NULL。有关更多信息,请参阅在发出会话变为空闲后识别阻塞查询。

  • blocking_lock_id

    阻塞等待锁的锁的 ID。

  • blocking_lock_mode

    阻塞等待锁的锁的模式。

  • blocking_trx_started

    阻塞事务开始的时间。

  • blocking_trx_age

    阻塞事务已执行的时间,作为TIME值。

  • blocking_trx_rows_locked

    阻塞事务锁定的行数。

  • blocking_trx_rows_modified

    阻塞事务修改的行数。

  • sql_kill_blocking_query

    需要执行的KILL语句以终止阻塞语句。

  • sql_kill_blocking_connection

    需要执行的KILL语句以终止运行阻塞语句的会话。

原文:dev.mysql.com/doc/refman/8.0/en/sys-io-by-thread-by-latency.html

30.4.3.10 io_by_thread_by_latencyx$io_by_thread_by_latency视图

这些视图总结了 I/O 消费者的信息,显示了等待 I/O 的时间,按线程分组。默认情况下,按照总 I/O 延迟降序排序行。

io_by_thread_by_latencyx$io_by_thread_by_latency视图具有以下列:

  • user

    对于前台线程,与线程关联的账户。对于后台线程,线程名称。

  • total

    线程的 I/O 事件总数。

  • total_latency

    线程的定时 I/O 事件的总等待时间。

  • min_latency

    线程的定时 I/O 事件的最小单次等待时间。

  • avg_latency

    平均每个线程的定时 I/O 事件等待时间。

  • max_latency

    线程的定时 I/O 事件的最大单次等待时间。

  • thread_id

    线程 ID。

  • processlist_id

    对于前台线程,线程的进程列表 ID。对于后台线程,NULL

原文:dev.mysql.com/doc/refman/8.0/en/sys-io-global-by-file-by-bytes.html

30.4.3.11 io_global_by_file_by_bytes 和 x$io_global_by_file_by_bytes 视图

这些视图总结了全局 I/O 消费者,以显示按文件分组的 I/O 量。默认情况下,按降序排列总 I/O(读取和写入的字节数)。

io_global_by_file_by_bytesx$io_global_by_file_by_bytes 视图具有以下列:

  • file

    文件路径名。

  • count_read

    文件的总读取事件数。

  • total_read

    从文件中读取的总字节数。

  • avg_read

    每次从文件读取的平均字节数。

  • count_write

    文件的总写入事件数。

  • total_written

    向文件写入的总字节数。

  • avg_write

    每次写入文件的平均字节数。

  • total

    文件的总读取和写入字节数。

  • write_pct

    I/O 总字节数中写入的百分比。

原文:dev.mysql.com/doc/refman/8.0/en/sys-io-global-by-file-by-latency.html

30.4.3.12 io_global_by_file_by_latency 和 x$io_global_by_file_by_latency 视图

这些视图总结了全局 I/O 消费者,以显示按文件分组的 I/O 等待时间。默认情况下,按总等待时间降序排序行。

io_global_by_file_by_latencyx$io_global_by_file_by_latency 视图具有以下列:

  • file

    文件路径名。

  • total

    文件的 I/O 事件总数。

  • total_latency

    文件的定时 I/O 事件的总等待时间。

  • count_read

    文件的总读取 I/O 事件数。

  • read_latency

    文件的定时读取 I/O 事件的总等待时间。

  • count_write

    文件的写入 I/O 事件总数。

  • write_latency

    文件的定时写入 I/O 事件的总等待时间。

  • count_misc

    文件的其他 I/O 事件总数。

  • misc_latency

    文件的定时其他 I/O 事件的总等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-io-global-by-wait-by-bytes.html

30.4.3.13 io_global_by_wait_by_bytes 和 x$io_global_by_wait_by_bytes 视图

这些视图总结了全局 I/O 消费者,显示了 I/O 量和等待 I/O 时间,按事件分组。默认情况下,按降序排列总 I/O(读取和写入的字节数)的行。

io_global_by_wait_by_bytesx$io_global_by_wait_by_bytes 视图具有以下列:

  • event_name

    去除了wait/io/file/前缀的 I/O 事件名称。

  • total

    I/O 事件的总发生次数。

  • total_latency

    I/O 事件的定时发生的总等待时间。

  • min_latency

    I/O 事件的定时发生的最小单次等待时间。

  • avg_latency

    I/O 事件的每次定时发生的平均等待时间。

  • max_latency

    I/O 事件的定时发生的最大单次等待时间。

  • count_read

    I/O 事件的读取请求次数。

  • total_read

    I/O 事件的读取字节数。

  • avg_read

    I/O 事件的每次读取的平均字节数。

  • count_write

    I/O 事件的写入请求次数。

  • total_written

    I/O 事件的写入字节数。

  • avg_written

    I/O 事件的每次写入的平均字节数。

  • total_requested

    I/O 事件的总读取和写入字节数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-io-global-by-wait-by-latency.html

30.4.3.14 io_global_by_wait_by_latency 和 x$io_global_by_wait_by_latency 视图

这些视图总结了全局 I/O 消费者,显示了 I/O 量和等待 I/O 的时间,按事件分组。默认情况下,行按总延迟降序排序。

io_global_by_wait_by_latencyx$io_global_by_wait_by_latency 视图具有以下列:

  • event_name

    I/O 事件名称,去除wait/io/file/前缀。

  • total

    I/O 事件的总发生次数。

  • total_latency

    I/O 事件的定时发生的总等待时间。

  • avg_latency

    I/O 事件的每次定时发生的平均等待时间。

  • max_latency

    I/O 事件的定时发生的最大单次等待时间。

  • read_latency

    I/O 事件的读取定时发生的总等待时间。

  • write_latency

    I/O 事件的写入定时发生的总等待时间。

  • misc_latency

    I/O 事件的其他定时发生的总等待时间。

  • count_read

    I/O 事件的读取请求数。

  • total_read

    I/O 事件的读取字节数。

  • avg_read

    I/O 事件的每次读取的平均字节数。

  • count_write

    I/O 事件的写入请求数。

  • total_written

    I/O 事件的写入字节数。

  • avg_written

    I/O 事件的每次写入的平均字节数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-latest-file-io.html

30.4.3.15 最新的文件 I/O 和 x$latest_file_io 视图

这些视图按文件和线程分组总结文件 I/O 活动。默认情况下,按最近的 I/O 排序行。

latest_file_iox$latest_file_io 视图具有以下列:

  • thread

    对于前台线程,与线程相关联的帐户(以及 TCP/IP 连接的端口号)。对于后台线程,线程名称和线程 ID。

  • file

    文件路径名。

  • latency

    文件 I/O 事件的等待时间。

  • operation

    操作类型。

  • requested

    请求的数据字节数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-memory-by-host-by-current-bytes.html

30.4.3.16 memory_by_host_by_current_bytes 和 x$memory_by_host_by_current_bytes 视图

这些视图按主机分组总结内存使用情况。默认情况下,按内存使用量降序排序行。

memory_by_host_by_current_bytesx$memory_by_host_by_current_bytes 视图具有以下列:

  • host

    客户端连接的主机。假定底层性能模式表中的 HOST 列为 NULL 的行是用于后台线程的,并且报告的主机名为 background

  • current_count_used

    尚未释放的主机的当前分配内存块数。

  • current_allocated

    尚未释放的主机的当前分配字节数。

  • current_avg_alloc

    每个主机的当前分配字节数。

  • current_max_alloc

    主机的最大单个当前内存分配(以字节为单位)。

  • total_allocated

    主机的总内存分配(以字节为单位)。

原文:dev.mysql.com/doc/refman/8.0/en/sys-memory-by-thread-by-current-bytes.html

30.4.3.17 The memory_by_thread_by_current_bytes and x$memory_by_thread_by_current_bytes Views

这些视图按线程分组总结内存使用情况。默认情况下,按内存使用量降序排序。

memory_by_thread_by_current_bytesx$memory_by_thread_by_current_bytes 视图具有以下列:

  • thread_id

    线程 ID。

  • user

    线程用户或线程名称。

  • current_count_used

    尚未释放的线程的当前分配内存块数。

  • current_allocated

    尚未释放的线程的当前分配字节数。

  • current_avg_alloc

    每个线程的内存块的当前分配字节数。

  • current_max_alloc

    线程的最大单个当前内存分配字节数。

  • total_allocated

    线程的总内存分配字节数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-memory-by-user-by-current-bytes.html

30.4.3.18 memory_by_user_by_current_bytes 和 x$memory_by_user_by_current_bytes 视图

这些视图按用户分组总结内存使用情况。默认情况下,按内存使用量降序排序行。

memory_by_user_by_current_bytesx$memory_by_user_by_current_bytes 视图具有以下列:

  • user

    客户端用户名。假定底层性能模式表中的USER列为NULL的行是后台线程的行,并且以background主机名报告。

  • current_count_used

    当前分配但尚未释放的用户内存块数量。

  • current_allocated

    当前分配但尚未释放的用户字节总数。

  • current_avg_alloc

    每个用户内存块的当前分配字节数。

  • current_max_alloc

    用户的最大单个当前内存分配字节数。

  • total_allocated

    用户的总内存分配字节数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-memory-global-by-current-bytes.html

30.4.3.19 memory_global_by_current_bytes 和 x$memory_global_by_current_bytes 视图

这些视图按分配类型(即按事件)汇总内存使用情况。默认情况下,按内存使用量降序排序行。

memory_global_by_current_bytesx$memory_global_by_current_bytes 视图具有以下列:

  • event_name

    内存事件名称。

  • current_count

    事件发生的总次数。

  • current_alloc

    为事件分配但尚未释放的当前分配字节数。

  • current_avg_alloc

    当前为事件分配的每个内存块的字节数。

  • high_count

    为事件分配的内存块数量的高水位标记。

  • high_alloc

    为事件分配的字节数的高水位标记。

  • high_avg_alloc

    平均每个内存块为事件分配的字节数的高水位标记。

原文:dev.mysql.com/doc/refman/8.0/en/sys-memory-global-total.html

30.4.3.20 memory_global_total 和 x$memory_global_total 视图

这些视图总结了服务器内的总内存使用情况。

memory_global_totalx$memory_global_total 视图具有以下列:

  • total_allocated

    服务器内分配的总字节内存。

原文:dev.mysql.com/doc/refman/8.0/en/sys-metrics.html

30.4.3.21 指标视图

此视图总结了 MySQL 服务器的指标,显示变量名称、数值、类型以及是否启用。默认情况下,按变量类型和名称排序。

metrics视图包括以下信息:

  • 来自性能模式global_status表的全局状态变量

  • 来自INFORMATION_SCHEMA INNODB_METRICS表的InnoDB指标

  • 基于性能模式内存仪表化的当前和总内存分配

  • 当前时间(人类可读和 Unix 时间戳格式)

global_statusINNODB_METRICS表之间存在一些信息重复,metrics视图消除了这种重复。

metrics视图具有以下列:

  • 变量名称

    指标名称。指标类型确定了名称的来源:

    • 对于全局状态变量:global_status表的VARIABLE_NAME

    • 对于InnoDB指标:INNODB_METRICS表的NAME

    • 对于其他指标:视图提供的描述性字符串

  • Variable_value

    指标数值。指标类型确定了数值的来源:

    • 对于全局状态变量:global_status表的VARIABLE_VALUE

    • 对于InnoDB指标:INNODB_METRICS表的COUNT

    • 对于内存指标:性能模式memory_summary_global_by_event_name表中的相关列

    • 对于当前时间:NOW(3)UNIX_TIMESTAMP(NOW(3))的值

  • 类型

    指标类型:

    • 对于全局状态变量:全局状态

    • 对于InnoDB指标:InnoDB 指标 - %,其中%INNODB_METRICS表的SUBSYSTEM列的值替换而来

    • 对于内存指标:性能模式

    • 对于当前时间:系统时间

  • 已启用

    指标是否已启用:

    • 对于全局状态变量:

    • 对于InnoDB指标:如果INNODB_METRICS表的STATUS列为enabled,则为,否则为

    • 对于内存指标:部分(目前,部分仅出现在内存指标中,表示并非所有memory/%工具都已启用;性能模式内存工具始终已启用)

    • 对于当前时间:

原文:dev.mysql.com/doc/refman/8.0/en/sys-processlist.html

30.4.3.22 The processlist and x$processlist Views

MySQL 进程列表显示服务器内执行的线程集合当前正在执行的操作。processlistx$processlist 视图总结了进程信息。它们提供的信息比 SHOW PROCESSLIST 语句和 INFORMATION_SCHEMA PROCESSLIST 表更完整,而且不会阻塞。默认情况下,行按照进程时间和等待时间降序排序。有关进程信息来源的比较,请参见 进程信息来源。

这里的列描述很简要。有关更多信息,请参阅性能模式 threads 表的描述,链接在 第 29.12.21.8 节,“The threads Table”。

processlistx$processlist 视图具有以下列:

  • thd_id

    线程 ID。

  • conn_id

    连接 ID。

  • user

    线程用户或线程名称。

  • db

    线程的默认数据库,如果没有则为NULL

  • command

    对于前台线程,线程代表客户端执行的命令类型,如果会话空闲,则为Sleep

  • state

    指示线程正在执行的操作、事件或状态。

  • time

    线程在当前状态下已经经过的秒数。

  • current_statement

    线程正在执行的语句,如果没有执行任何语句则为NULL

  • execution_engine

    查询执行引擎。该值为PRIMARYSECONDARY。用于 MySQL HeatWave 服务和 HeatWave,其中PRIMARY引擎为InnoDBSECONDARY引擎为 HeatWave(RAPID)。对于 MySQL Community Edition Server、MySQL Enterprise Edition Server(本地)和没有 HeatWave 的 MySQL HeatWave 服务,该值始终为PRIMARY。此列在 MySQL 8.0.29 中添加。

  • statement_latency

    语句执行的时间长。

  • progress

    支持进度报告的阶段完成的工作百分比。参见 第 30.3 节,“sys Schema Progress Reporting”。

  • lock_latency

    当前语句等待锁的时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_examined

    当前语句从存储引擎中读取的行数。

  • rows_sent

    当前语句返回的行数。

  • rows_affected

    当前语句影响的行数。

  • tmp_tables

    当前语句创建的内存中临时表的数量。

  • tmp_disk_tables

    当前语句创建的磁盘上临时表的数量。

  • full_scan

    当前语句执行的全表扫描次数。

  • last_statement

    线程执行的最后一条语句,如果当前没有正在执行的语句或等待。

  • last_statement_latency

    最后一条语句执行的时间。

  • current_memory

    线程分配的字节数。

  • last_wait

    线程的最近等待事件名称。

  • last_wait_latency

    线程的最近等待事件的等待时间。

  • source

    包含产生事件的受检代码的源文件和行号。

  • trx_latency

    线程的当前事务等待时间。

  • trx_state

    线程的当前事务状态。

  • trx_autocommit

    当前事务开始时是否启用了自动提交模式。

  • pid

    客户端进程 ID。

  • program_name

    客户端程序名称。

dev.mysql.com/doc/refman/8.0/en/sys-ps-check-lost-instrumentation.html

30.4.3.23 ps_check_lost_instrumentation 视图

此视图返回有关丢失的性能模式仪器的信息,以指示性能模式是否无法监视所有运行时数据。

ps_check_lost_instrumentation 视图具有以下列:

  • variable_name

    指示丢失哪种类型仪器的性能模式状态变量名称。

  • variable_value

    丢失的仪器数量。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-auto-increment-columns.html

30.4.3.24 schema_auto_increment_columns视图

此视图指示哪些表具有AUTO_INCREMENT列,并提供有关这些列的信息,例如当前值和最大列值以及使用率(已使用值与可能值的比率)。默认情况下,按降序使用率和最大列值对行进行排序。

这些模式中的表在查看输出中被排除:mysqlsysINFORMATION_SCHEMAperformance_schema

schema_auto_increment_columns视图具有以下列:

  • table_schema

    包含表的模式。

  • table_name

    包含AUTO_INCREMENT列的表。

  • column_name

    AUTO_INCREMENT列的名称。

  • data_type

    列的数据类型。

  • column_type

    列的列类型,即数据类型加上可能的其他信息。例如,对于具有bigint(20) unsigned列类型的列,数据类型只是bigint

  • is_signed

    列类型是否为有符号。

  • is_unsigned

    列类型是否为无符号。

  • max_value

    列的最大允许值。

  • auto_increment

    列的当前AUTO_INCREMENT值。

  • auto_increment_ratio

    用于列的已使用值与允许值的比率。这表示数值序列中有多少“已使用”。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-index-statistics.html

30.4.3.25 schema_index_statisticsx$schema_index_statistics 视图

这些视图提供索引统计信息。默认情况下,按照总索引延迟降序排序行。

schema_index_statisticsx$schema_index_statistics 视图具有以下列:

  • table_schema

    包含表的模式。

  • table_name

    包含索引的表。

  • index_name

    索引的名称。

  • rows_selected

    使用索引读取的总行数。

  • select_latency

    使用索引进行定时读取的总等待时间。

  • rows_inserted

    插入到索引中的总行数。

  • insert_latency

    插入到索引中的定时等待总时间。

  • rows_updated

    在索引中更新的总行数。

  • update_latency

    在索引中进行定时更新的总等待时间。

  • rows_deleted

    从索引中删除的总行数。

  • delete_latency

    从索引中删除的定时等待总时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-object-overview.html

30.4.3.26 模式对象概述视图

此视图总结了每个模式中的对象类型。默认情况下,按模式和对象类型对行进行排序。

注意

对于具有大量对象的 MySQL 实例,执行此视图可能需要很长时间。

schema_object_overview 视图具有以下列:

  • db

    模式名称。

  • object_type

    对象类型:BASE TABLEINDEX (*index_type*)EVENTFUNCTIONPROCEDURETRIGGERVIEW

  • count

    给定类型的模式中对象的数量。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-redundant-indexes.html

30.4.3.27 模式冗余索引和 x$schema_flattened_keys 视图

schema_redundant_indexes 视图显示重复其他索引或被其他索引冗余的索引。x$schema_flattened_keys 视图是schema_redundant_indexes 的辅助视图。

在以下列描述中,主导索引是使冗余索引冗余的索引。

schema_redundant_indexes 视图包含以下列:

  • table_schema

    包含表的模式。

  • table_name

    包含索引的表。

  • redundant_index_name

    冗余索引的名称。

  • redundant_index_columns

    冗余索引中列的名称。

  • redundant_index_non_unique

    冗余索引中非唯一列的数量。

  • dominant_index_name

    主导索引的名称。

  • dominant_index_columns

    主导索引中列的名称。

  • dominant_index_non_unique

    主导索引中非唯一列的数量。

  • subpart_exists

    索引是否仅索引列的一部分。

  • sql_drop_index

    执行以删除冗余索引的语句。

x$schema_flattened_keys 视图包含以下列:

  • table_schema

    包含表的模式。

  • table_name

    包含索引的表。

  • index_name

    索引名称。

  • non_unique

    索引中非唯一列的数量。

  • subpart_exists

    索引是否仅索引列的一部分。

  • index_columns

    索引中列的名称。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-table-lock-waits.html

30.4.3.28 The schema_table_lock_waits and x$schema_table_lock_waits Views

这些视图显示了哪些会话因等待元数据锁而被阻塞,以及是什么在阻塞它们。

这里的列描述很简要。有关更多信息,请参阅性能模式 metadata_locks 表的描述,链接在 Section 29.12.13.3, “The metadata_locks Table”。

schema_table_lock_waitsx$schema_table_lock_waits 视图具有以下列:

  • object_schema

    包含要锁定对象的模式。

  • object_name

    被检测对象的名称。

  • waiting_thread_id

    等待锁的线程 ID。

  • waiting_pid

    等待锁的线程的进程列表 ID。

  • waiting_account

    与等待锁的会话相关联的帐户。

  • waiting_lock_type

    等待锁的类型。

  • waiting_lock_duration

    等待锁已经等待多长时间。

  • waiting_query

    等待锁的语句。

  • waiting_query_secs

    语句等待的时间,以秒为单位。

  • waiting_query_rows_affected

    语句受影响的行数。

  • waiting_query_rows_examined

    语句从存储引擎中读取的行数。

  • blocking_thread_id

    阻塞等待锁的线程的线程 ID。

  • blocking_pid

    阻塞等待锁的线程的进程列表 ID。

  • blocking_account

    与阻塞等待锁的线程相关联的帐户。

  • blocking_lock_type

    阻塞等待锁的类型。

  • blocking_lock_duration

    阻塞锁已经持有多长时间。

  • sql_kill_blocking_query

    KILL 语句用于执行以终止阻塞语句。

  • sql_kill_blocking_connection

    KILL 语句用于执行以终止运行阻塞语句的会话。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-table-statistics.html

30.4.3.29 schema_table_statisticsx$schema_table_statistics 视图

这些视图总结了表的统计信息。默认情况下,按照总等待时间降序排序(具有最多争用的表排在前面)。

这些视图使用一个辅助视图,x$ps_schema_table_statistics_io

schema_table_statisticsx$schema_table_statistics 视图具有以下列:

  • table_schema

    包含表的模式。

  • table_name

    表名。

  • total_latency

    对表的定时 I/O 事件的总等待时间。

  • rows_fetched

    从表中读取的总行数。

  • fetch_latency

    对表的定时读取 I/O 事件的总等待时间。

  • rows_inserted

    向表中插入的总行数。

  • insert_latency

    对表的定时插入 I/O 事件的总等待时间。

  • rows_updated

    在表中更新的总行数。

  • update_latency

    对表的定时更新 I/O 事件的总等待时间。

  • rows_deleted

    从表中删除的总行数。

  • delete_latency

    对表的定时删除 I/O 事件的总等待时间。

  • io_read_requests

    对表的总读取请求次数。

  • io_read

    从表中读取的总字节数。

  • io_read_latency

    从表中读取的总等待时间。

  • io_write_requests

    对表的总写入请求次数。

  • io_write

    向表中写入的总字节数。

  • io_write_latency

    对表的写入的总等待时间。

  • io_misc_requests

    对表的杂项 I/O 请求的总数。

  • io_misc_latency

    对表的杂项 I/O 请求的总等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-table-statistics-with-buffer.html

30.4.3.30 schema_table_statistics_with_bufferx$schema_table_statistics_with_buffer视图

这些视图总结了表的统计信息,包括InnoDB缓冲池统计信息。默认情况下,按照总等待时间降序排序(最有争议的表排在前面)。

这些视图使用一个辅助视图,x$ps_schema_table_statistics_io

schema_table_statistics_with_bufferx$schema_table_statistics_with_buffer视图具有以下列:

  • table_schema

    包含表的模式。

  • table_name

    表名。

  • rows_fetched

    从表中读取的总行数。

  • fetch_latency

    表的定时读取 I/O 事件的总等待时间。

  • rows_inserted

    插入表的总行数。

  • insert_latency

    表的定时插入 I/O 事件的总等待时间。

  • rows_updated

    更新表的总行数。

  • update_latency

    表的定时更新 I/O 事件的总等待时间。

  • rows_deleted

    从表中删除的总行数。

  • delete_latency

    表的定时删除 I/O 事件的总等待时间。

  • io_read_requests

    表的读取请求总数。

  • io_read

    从表中读取的总字节数。

  • io_read_latency

    从表中读取的总等待时间。

  • io_write_requests

    为表的写入请求总数。

  • io_write

    写入表的总字节数。

  • io_write_latency

    写入表的总等待时间。

  • io_misc_requests

    表的杂项 I/O 请求总数。

  • io_misc_latency

    表的杂项 I/O 请求的总等待时间。

  • innodb_buffer_allocated

    为表分配的总InnoDB缓冲字节数。

  • innodb_buffer_data

    为表分配的总InnoDB数据字节数。

  • innodb_buffer_free

    为表分配的总InnoDB非数据字节数(innodb_buffer_allocated - innodb_buffer_data)。

  • innodb_buffer_pages

    为表分配的总InnoDB页面数。

  • innodb_buffer_pages_hashed

    为表分配的总InnoDB哈希页面数。

  • innodb_buffer_pages_old

    为表分配的总InnoDB旧页面数。

  • innodb_buffer_rows_cached

    表的总InnoDB缓存行数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-tables-with-full-table-scans.html

30.4.3.31 The schema_tables_with_full_table_scans and x$schema_tables_with_full_table_scans Views

这些视图显示了正在进行全表扫描的表。默认情况下,行按照扫描的行数降序排序。

schema_tables_with_full_table_scansx$schema_tables_with_full_table_scans 视图具有以下列:

  • 对象模式

    模式名称。

  • 对象名称

    表名称。

  • 行数全扫描

    表的全表扫描扫描的总行数。

  • 延迟

    表的全表扫描的总等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-unused-indexes.html

30.4.3.32 The schema_unused_indexes View

这些视图显示没有事件的索引,这表明它们没有被使用。默认情况下,按模式和表对行进行排序。

当服务器运行时间足够长且其工作负载具有代表性时,此视图最有用。否则,此视图中的索引存在可能没有意义。

schema_unused_indexes 视图包含以下列:

  • object_schema

    模式名称。

  • object_name

    表名称。

  • index_name

    未使用的索引名称。

原文:dev.mysql.com/doc/refman/8.0/en/sys-session.html

30.4.3.33 会话和 x$session 视图

这些视图类似于processlistx$processlist,但它们会过滤掉后台进程,仅显示用户会话。有关列的描述,请参阅 Section 30.4.3.22, “The processlist and x$processlist Views”。

原文:dev.mysql.com/doc/refman/8.0/en/sys-session-ssl-status.html

30.4.3.34 session_ssl_status 视图

对于每个连接,该视图显示 SSL 版本、密码和重用 SSL 会话的计数。

session_ssl_status 视图包含以下列:

  • thread_id

    连接的线程 ID。

  • ssl_version

    连接使用的 SSL 版本。

  • ssl_cipher

    连接使用的 SSL 密码。

  • ssl_sessions_reused

    连接中重用的 SSL 会话数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statement-analysis.html

30.4.3.35 语句分析和 x$statement_analysis 视图

这些视图列出了带有聚合统计信息的规范化语句。内容模仿了 MySQL Enterprise Monitor 查询分析视图。默认情况下,按总延迟降序排序行。

statement_analysisx$statement_analysis 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • full_scan

    由语句出现执行的全表扫描总数。

  • exec_count

    语句执行的总次数。

  • err_count

    由语句出现产生的错误总数。

  • warn_count

    由语句出现产生的警告总数。

  • total_latency

    语句定时出现的总等待时间。

  • max_latency

    定时出现的语句的最大单次等待时间。

  • avg_latency

    每次语句出现的平均等待时间。

  • lock_latency

    定时出现的语句等待锁的总时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_sent

    由语句出现返回的总行数。

  • rows_sent_avg

    每次语句出现平均返回的行数。

  • rows_examined

    由语句出现从存储引擎读取的总行数。

  • rows_examined_avg

    从存储引擎读取的平均行数。

  • rows_affected

    由语句出现影响的总行数。

  • rows_affected_avg

    每次语句出现的平均影响行数。

  • tmp_tables

    由语句出现创建的内部内存临时表的总数。

  • tmp_disk_tables

    由语句出现创建的内部磁盘临时表的总数。

  • rows_sorted

    由语句出现排序的总行数。

  • sort_merge_passes

    由语句出现的排序合并总数。

  • max_controlled_memory

    语句使用的最大受控内存量(字节)。

    该列在 MySQL 8.0.31 中添加。

  • max_total_memory

    语句使用的最大内存量(字节)。

    该列在 MySQL 8.0.31 中添加。

  • digest

    语句摘要。

  • first_seen

    语句首次出现的时间。

  • last_seen

    语句最近一次出现的时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statements-with-errors-or-warnings.html

30.4.3.36 包含错误或警告的语句和 x$statements_with_errors_or_warnings 视图

这些视图显示产生错误或警告的规范化语句。默认情况下,按照错误和警告计数降序排序。

statements_with_errors_or_warningsx$statements_with_errors_or_warnings 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • errors

    语句产生的错误总数。

  • error_pct

    产生错误的语句出现次数的百分比。

  • warnings

    语句产生的警告总数。

  • warning_pct

    产生警告的语句出现次数的百分比。

  • first_seen

    语句首次被看到的时间。

  • last_seen

    语句最近被看到的时间。

  • digest

    语句摘要。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statements-with-full-table-scans.html

30.4.3.37 statements_with_full_table_scans 和 x$statements_with_full_table_scans 视图

这些视图显示了执行全表扫描的规范化语句。默认情况下,按照全表扫描所占时间的百分比和总延迟时间降序排序。

statements_with_full_table_scansx$statements_with_full_table_scans 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • total_latency

    语句事件的计时等待时间。

  • no_index_used_count

    未使用索引扫描表的总次数。

  • no_good_index_used_count

    未使用良好索引扫描表的总次数。

  • no_index_used_pct

    未使用索引扫描表的时间百分比。

  • rows_sent

    从表返回的总行数。

  • rows_examined

    从存储引擎读取的表的总行数。

  • rows_sent_avg

    从表返回的平均行数。

  • rows_examined_avg

    从存储引擎读取的表的平均行数。

  • first_seen

    语句首次出现的时间。

  • last_seen

    语句最近出现的时间。

  • digest

    语句摘要。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statements-with-runtimes-in-95th-percentile.html

30.4.3.38 statements_with_runtimes_in_95th_percentilex$statements_with_runtimes_in_95th_percentile 视图

这些视图列出了运行时间处于第 95 百分位数的语句。默认情况下,按照平均延迟降序排序行。

这两个视图使用两个辅助视图,x$ps_digest_avg_latency_distributionx$ps_digest_95th_percentile_by_avg_us

statements_with_runtimes_in_95th_percentilex$statements_with_runtimes_in_95th_percentile 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • full_scan

    语句执行的全表扫描总次数。

  • exec_count

    语句执行的总次数。

  • err_count

    语句执行产生的错误总数。

  • warn_count

    语句执行产生的警告总数。

  • total_latency

    语句定时执行的总等待时间。

  • max_latency

    语句定时执行的最大单次等待时间。

  • avg_latency

    每次定时执行语句的平均等待时间。

  • rows_sent

    语句执行返回的总行数。

  • rows_sent_avg

    每次语句执行返回的平均行数。

  • rows_examined

    语句执行从存储引擎读取的总行数。

  • rows_examined_avg

    每次语句执行从存储引擎读取的平均行数。

  • first_seen

    首次出现语句的时间。

  • last_seen

    语句最近一次出现的时间。

  • digest

    语句摘要。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statements-with-sorting.html

30.4.3.39 statements_with_sorting 和 x$statements_with_sorting 视图

这些视图列出了执行排序操作的规范化语句。默认情况下,按总延迟降序排序行。

statements_with_sortingx$statements_with_sorting 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • total_latency

    该语句定时出现的总等待时间。

  • sort_merge_passes

    通过语句出现的总排序合并次数。

  • avg_sort_merges

    每次语句出现的平均排序合并次数。

  • sorts_using_scans

    通过语句出现的表扫描进行排序的总次数。

  • sort_using_range

    通过语句出现的范围访问进行排序的总次数。

  • rows_sorted

    通过语句出现的总排序行数。

  • avg_rows_sorted

    每次语句出现的平均排序行数。

  • first_seen

    该语句首次出现的时间。

  • last_seen

    语句最近一次出现的时间。

  • digest

    语句摘要。

原文:dev.mysql.com/doc/refman/8.0/en/sys-statements-with-temp-tables.html

30.4.3.40 语句 _with_temp_tables 和 x$statements_with_temp_tables 视图

这些视图列出了使用临时表的规范化语句。默认情况下,按照使用的磁盘临时表数量和内存临时表数量降序排序行。

statements_with_temp_tablesx$statements_with_temp_tables 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • total_latency

    语句定时发生的总等待时间。

  • memory_tmp_tables

    由语句发生创建的内存中临时表的总数。

  • disk_tmp_tables

    由该语句发生创建的内部磁盘临时表的总数。

  • avg_tmp_tables_per_query

    每次语句发生时创建的内部临时表的平均数量。

  • tmp_tables_to_disk_pct

    将内存中临时表转换为磁盘表的百分比。

  • first_seen

    语句首次出现的时间。

  • last_seen

    语句最近出现的时间。

  • digest

    陈述摘要。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary.html

30.4.3.41 用户摘要和 x$user_summary 视图

这些视图总结了语句活动、文件 I/O 和连接,按用户分组。默认情况下,按总延迟降序排序行。

user_summaryx$user_summary 视图具有以下列:

  • user

    客户端用户名。在底层性能模式表中USER列为NULL的行被认为是后台线程,并以background主机名报告。

  • statements

    用户的语句总数。

  • statement_latency

    用户的定时语句的总等待时间。

  • statement_avg_latency

    用户的每个定时语句的平均等待时间。

  • table_scans

    用户的表扫描总数。

  • file_ios

    用户的文件 I/O 事件总数。

  • file_io_latency

    用户的定时文件 I/O 事件的总等待时间。

  • current_connections

    用户的当前连接数。

  • total_connections

    用户的总连接数。

  • unique_hosts

    用户发起连接的不同主机数量。

  • current_memory

    用户的当前分配内存量。

  • total_memory_allocated

    用户的总分配内存量。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary-by-file-io.html

30.4.3.42 user_summary_by_file_iox$user_summary_by_file_io视图

这些视图按用户分组总结文件 I/O。默认情况下,按降序总文件 I/O 延迟排序行。

user_summary_by_file_iox$user_summary_by_file_io视图具有以下列:

  • user

    客户端用户名。假定底层性能模式表中USER列为NULL的行是用于后台线程,并且以主机名background报告。

  • ios

    用户的文件 I/O 事件总数。

  • io_latency

    用户的定时文件 I/O 事件的总等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary-by-file-io-type.html

30.4.3.43 用户按文件 I/O 类型和 x$user_summary_by_file_io_type 视图

这些视图按用户和事件类型对文件 I/O 进行汇总。默认情况下,按用户和降序总延迟排序行。

user_summary_by_file_io_typex$user_summary_by_file_io_type视图具有以下列:

  • 用户

    客户端用户名。基础性能模式表中USER列为NULL的行被假定为后台线程,并以background主机名报告。

  • 事件名称

    文件 I/O 事件名称。

  • 用户文件 I/O 事件的总发生次数。

  • 延迟

    用户文件 I/O 事件定时发生的总等待时间。

  • 最大延迟

    用户文件 I/O 事件定时发生的最大单个等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary-by-stages.html

30.4.3.44 用户 _summary_by_stages 和 x$user_summary_by_stages 视图

这些视图按用户分组总结阶段。默认情况下,按用户和降序总阶段延迟排序。

user_summary_by_stagesx$user_summary_by_stages 视图具有以下列:

  • user

    客户端用户名。在底层性能模式表中 USER 列为 NULL 的行被假定为后台线程,并以 background 主机名报告。

  • event_name

    阶段事件名称。

  • total

    用户的阶段事件发生总次数。

  • total_latency

    用户的阶段事件定时发生的总等待时间。

  • avg_latency

    用户的阶段事件定时发生的平均等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary-by-statement-latency.html

30.4.3.45 用户 _summary_by_statement_latency 和 x$user_summary_by_statement_latency 视图

这些视图总结了按用户分组的整体语句统计信息。默认情况下,按总延迟降序排序行。

user_summary_by_statement_latencyx$user_summary_by_statement_latency 视图具有以下列:

  • user

    客户端用户名。假定底层性能模式表中的 USER 列为 NULL 的行是后台线程的行,并报告为 background 主机名。

  • total

    用户的语句总数。

  • total_latency

    用户的定时语句的总等待时间。

  • max_latency

    用户的定时语句的最大单个等待时间。

  • lock_latency

    用户的定时语句等待锁的总时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_sent

    用户语句返回的行数总数。

  • rows_examined

    用户语句从存储引擎读取的行数总数。

  • rows_affected

    用户语句影响的行数总数。

  • full_scans

    用户语句的全表扫描总数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-user-summary-by-statement-type.html

30.4.3.46 用户汇总按语句类型和 x$user_summary_by_statement_type 视图

这些视图总结了按用户和语句类型分组执行的语句信息。默认情况下,按用户和降序总延迟排序行。

user_summary_by_statement_typex$user_summary_by_statement_type 视图具有以下列:

  • user

    客户端用户名。在底层性能模式表中 USER 列为 NULL 的行被假定为后台线程,并报告为主机名 background

  • statement

    语句事件名称的最终组成部分。

  • total

    用户语句事件的总发生次数。

  • total_latency

    用户语句事件的总等待时间。

  • max_latency

    用户语句事件的最大单个等待时间。

  • lock_latency

    用户语句事件的总等待锁时间。

  • cpu_latency

    当前线程在 CPU 上花费的时间。

  • rows_sent

    用户语句事件返回的总行数。

  • rows_examined

    用户语句事件从存储引擎读取的总行数。

  • rows_affected

    语句事件对用户影响的总行数。

  • full_scans

    用户语句事件的总表全表扫描次数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-version.html

30.4.3.47 版本视图

这个视图提供了当前的sys模式和 MySQL 服务器版本。

注意

截至 MySQL 8.0.18 版本,此视图已被弃用,并可能在未来的 MySQL 版本中被移除。使用它的应用程序应迁移到使用其他替代方法。例如,使用VERSION()函数来检索 MySQL 服务器版本。

version视图包含以下列:

  • sys_version

    sys模式版本。

  • mysql_version

    MySQL 服务器版本。

原文:dev.mysql.com/doc/refman/8.0/en/sys-wait-classes-global-by-avg-latency.html

30.4.3.48 wait_classes_global_by_avg_latencyx$wait_classes_global_by_avg_latency 视图

这些视图按事件类别分组总结等待类别的平均延迟。默认情况下,按降序平均延迟排序行。空闲事件将被忽略。

事件类别是通过从事件名称中去除第一个三个组件之后的所有内容来确定的。例如,wait/io/file/sql/slow_log 的类别是 wait/io/file

wait_classes_global_by_avg_latencyx$wait_classes_global_by_avg_latency 视图具有以下列:

  • event_class

    事件类别。

  • total

    事件类别中事件发生的总次数。

  • total_latency

    事件类别中定时发生事件的总等待时间。

  • min_latency

    事件类别中定时发生事件的最小单次等待时间。

  • avg_latency

    事件类别中事件的平均等待时间。

  • max_latency

    事件类别中定时发生事件的最大单次等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-wait-classes-global-by-latency.html

30.4.3.49 wait_classes_global_by_latency 和 x$wait_classes_global_by_latency 视图

这些视图按事件类别分组总结等待类别总延迟。默认情况下,按降序总延迟排序行。空闲事件被忽略。

事件类别由事件名称中第一个三个组件之后的所有内容剥离而确定。例如,wait/io/file/sql/slow_log的类别是wait/io/file

wait_classes_global_by_latencyx$wait_classes_global_by_latency视图具有以下列:

  • event_class

    事件类别。

  • total

    事件类别中事件发生的总次数。

  • total_latency

    事件类别中定时事件的总等待时间。

  • min_latency

    事件类别中定时事件的最小单个等待时间。

  • avg_latency

    事件类别中每个定时事件的平均等待时间。

  • max_latency

    事件类别中定时事件的最大单个等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-waits-by-host-by-latency.html

30.4.3.50 waits_by_host_by_latency 和 x$waits_by_host_by_latency 视图

这些视图按主机和事件分组总结等待事件。默认情况下,按主机和降序总延迟排序行。空闲事件被忽略。

waits_by_host_by_latencyx$waits_by_host_by_latency 视图具有以下列:

  • host

    连接来源主机。

  • event

    事件名称。

  • total

    主机的事件发生总次数。

  • total_latency

    主机的事件定时发生的总等待时间。

  • avg_latency

    主机的事件每次定时发生的平均等待时间。

  • max_latency

    主机的事件定时发生的最大单个等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-waits-by-user-by-latency.html

30.4.3.51 waits_by_user_by_latency 和 x$waits_by_user_by_latency 视图

这些视图按用户和事件分组总结等待事件。默认情况下,按用户和降序总延迟排序。空闲事件将被忽略。

waits_by_user_by_latencyx$waits_by_user_by_latency 视图具有以下列:

  • 用户

    与连接相关联的用户。

  • 事件

    事件名称。

  • 总数

    用户的事件发生次数的总数。

  • 总延迟

    用户事件发生的总等待时间。

  • 平均延迟

    用户每次事件发生的平均等待时间。

  • 最大延迟

    用户事件发生的单次最大等待时间。

原文:dev.mysql.com/doc/refman/8.0/en/sys-waits-global-by-latency.html

30.4.3.52 waits_global_by_latency 和 x$waits_global_by_latency 视图

这些视图按事件分组总结等待事件。默认情况下,按总延迟降序排序行。空闲事件将被忽略。

waits_global_by_latencyx$waits_global_by_latency 视图包含以下列:

  • events

    事件名称。

  • total

    事件发生的总次数。

  • total_latency

    事件定时发生的总等待时间。

  • avg_latency

    事件定时发生的平均等待时间。

  • max_latency

    事件定时发生的最长等待时间。

30.4.4 sys Schema 存储过程

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-procedures.html

30.4.4.1 create_synonym_db() 过程

30.4.4.2 diagnostics() 过程

30.4.4.3 execute_prepared_stmt() 过程

30.4.4.4 ps_setup_disable_background_threads() 过程

30.4.4.5 ps_setup_disable_consumer() 过程

30.4.4.6 ps_setup_disable_instrument() 过程

30.4.4.7 ps_setup_disable_thread() 过程

30.4.4.8 ps_setup_enable_background_threads() 过程

30.4.4.9 ps_setup_enable_consumer() 过程

30.4.4.10 ps_setup_enable_instrument() 过程

30.4.4.11 ps_setup_enable_thread() 过程

30.4.4.12 ps_setup_reload_saved() 过程

30.4.4.13 ps_setup_reset_to_default() 过程

30.4.4.14 ps_setup_save() 过程

30.4.4.15 ps_setup_show_disabled() 过程

30.4.4.16 ps_setup_show_disabled_consumers() 过程

30.4.4.17 ps_setup_show_disabled_instruments() 过程

30.4.4.18 ps_setup_show_enabled() 过程

30.4.4.19 ps_setup_show_enabled_consumers() 过程

30.4.4.20 ps_setup_show_enabled_instruments() 过程

30.4.4.21 ps_statement_avg_latency_histogram() 过程

30.4.4.22 ps_trace_statement_digest() 过程

30.4.4.23 ps_trace_thread() 过程

30.4.4.24 ps_truncate_all_tables() 过程

30.4.4.25 statement_performance_analyzer() 过程

30.4.4.26 table_exists() 过程

以下各节描述sys模式存储过程。

原文:dev.mysql.com/doc/refman/8.0/en/sys-create-synonym-db.html

30.4.4.1 create_synonym_db() 过程

给定一个模式名称,此过程将创建一个包含引用原始模式中所有表和视图的视图的同义词模式。例如,可以使用此方法创建一个更短的名称来引用具有长名称的模式(例如使用info而不是INFORMATION_SCHEMA)。

参数
  • in_db_name VARCHAR(64): 要创建同义词的模式的名称。

  • in_synonym VARCHAR(64): 用于同义词模式的名称。此模式不能已经存在。

示例
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
mysql> CALL sys.create_synonym_db('INFORMATION_SCHEMA', 'info');
+---------------------------------------+
| summary                               |
+---------------------------------------+
| Created 63 views in the info database |
+---------------------------------------+
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
mysql> SHOW FULL TABLES FROM info;
+---------------------------------------+------------+
| Tables_in_info                        | Table_type |
+---------------------------------------+------------+
| character_sets                        | VIEW       |
| collation_character_set_applicability | VIEW       |
| collations                            | VIEW       |
| column_privileges                     | VIEW       |
| columns                               | VIEW       |
...

原文:dev.mysql.com/doc/refman/8.0/en/sys-diagnostics.html

30.4.4.2 The diagnostics() Procedure

为诊断目的创建当前服务器状态报告。

此过程在执行期间通过操纵sql_log_bin系统变量的会话值来禁用二进制日志记录。这是一项受限制的操作,因此该过程需要具有足够权限设置受限制会话变量的权限。请参阅第 7.1.9.1 节,“系统变量权限”。

diagnostics() Procedure")收集的数据包括以下信息:

  • 来自metrics视图的信息(参见第 30.4.3.21 节,“The metrics View”)

  • 来自其他相关sys模式视图的信息,例如确定第 95 百分位数中的查询的视图

  • 如果 MySQL 服务器是 NDB Cluster 的一部分,则包括来自ndbinfo模式的信息

  • 复制状态(源和副本)

一些 sys 模式视图被计算为初始(可选)、总体和增量值:

  • 初始视图是diagnostics() Procedure")过程开始时视图的内容。此输出与用于增量视图的开始值相同。如果diagnostics.include_raw配置选项为ON,则包括初始视图。

  • 总体视图是diagnostics() Procedure")过程结束时视图的内容。此输出与用于增量视图的结束值相同。总体视图始终包括在内。

  • 增量视图是过程执行开始到结束的差异。最小值和最大值分别是结束视图中的最小值和最大值。它们不一定反映监控期间的最小值和最大值。除了metrics视图外,增量仅在第一个和最后一个输出之间计算。

参数
  • in_max_runtime INT UNSIGNED: 数据收集的最大时间,单位为秒。使用NULL以收集默认的 60 秒的数据。否则,使用大于 0 的值。

  • in_interval INT UNSIGNED: 数据收集之间的睡眠时间,单位为秒。使用NULL以睡眠默认的 30 秒。否则,使用大于 0 的值。

  • in_auto_config ENUM('current', 'medium', 'full'): 要使用的性能模式配置。允许的值为:

    • current: 使用当前仪器和消费者设置。

    • medium: 启用一些仪器和消费者。

    • full:启用所有仪器和消费者。

    注意

    启用的仪器和消费者越多,对 MySQL 服务器性能的影响就越大。要小心使用medium设置,尤其是full设置,对性能影响很大。

    使用mediumfull设置需要SUPER特权。

    如果选择的设置不是current,则在过程结束时将恢复当前设置。

配置选项

diagnostics() Procedure")操作可以使用以下配置选项或其对应的用户定义变量进行修改(参见 Section 30.4.2.1, “The sys_config Table”):

  • debug@sys.debug

    如果此选项为ON,则生成调试输出。默认为OFF

  • diagnostics.allow_i_s_tables@sys.diagnostics.allow_i_s_tables

    如果此选项为ON,则允许diagnostics() Procedure")过程在 Information Schema TABLES表上执行表扫描。如果表很多,这可能会很昂贵。默认为OFF

  • diagnostics.include_raw@sys.diagnostics.include_raw

    如果此选项为ON,则diagnostics() Procedure")过程的输出包括查询metrics视图的原始输出。默认为OFF

  • statement_truncate_len@sys.statement_truncate_len

    format_statement() Function")函数返回的语句的最大长度。超过此长度的语句将被截断。默认为 64。

示例

创建一个诊断报告,每 30 秒开始一次迭代,最多运行 120 秒,使用当前的 Performance Schema 设置:

mysql> CALL sys.diagnostics(120, 30, 'current');

要在运行时将diagnostics()过程的输出捕获到文件中,请使用mysql客户端的tee filename``和notee命令(参见 Section 6.5.1.2, “mysql Client Commands”):

mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;

原文:dev.mysql.com/doc/refman/8.0/en/sys-execute-prepared-stmt.html

30.4.4.3 execute_prepared_stmt() 过程

给定一个作为字符串的 SQL 语句,将其作为准备好的语句执行。执行后,准备好的语句将被取消分配,因此不会被重用。因此,此过程主要用于一次性执行动态语句。

此过程使用sys_execute_prepared_stmt作为准备好的语句名称。如果在调用过程时存在该语句名称,则其先前的内容将被销毁。

参数
  • in_query LONGTEXT CHARACTER SET utf8mb3:要执行的语句字符串。
配置选项

execute_prepared_stmt() Procedure") 操作可以使用以下配置选项或其对应的用户定义变量进行修改(参见 Section 30.4.2.1, “The sys_config Table”):

  • debug@sys.debug

    如果此选项为ON,则生成调试输出。默认为OFF

示例
mysql> CALL sys.execute_prepared_stmt('SELECT COUNT(*) FROM mysql.user');
+----------+
| COUNT(*) |
+----------+
|       15 |
+----------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-disable-background-threads.html

30.4.4.4 ps_setup_disable_background_threads() 过程

禁用性能模式对所有后台线程的仪器化。生成一个结果集,指示禁用了多少个后台线程。已经禁用的线程不计入其中。

参数

无。

示例
mysql> CALL sys.ps_setup_disable_background_threads();
+--------------------------------+
| summary                        |
+--------------------------------+
| Disabled 24 background threads |
+--------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-disable-consumer.html

30.4.4.5 ps_setup_disable_consumer() 存储过程

禁用包含指定参数的 Performance Schema 消费者。返回一个结果集,指示禁用了多少个消费者。已经禁用的消费者不计入其中。

参数
  • consumer VARCHAR(128): 用于匹配消费者名称的值,可以使用 %consumer% 作为 LIKE 模式匹配的操作数来识别消费者名称。

    值为 '' 匹配所有消费者。

示例

禁用所有语句消费者:

mysql> CALL sys.ps_setup_disable_consumer('statement');
+----------------------+
| summary              |
+----------------------+
| Disabled 4 consumers |
+----------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-disable-instrument.html

30.4.4.6 ps_setup_disable_instrument() 过程

禁用包含参数的性能模式仪器名称。生成一个结果集,指示禁用了多少个仪器。已禁用的仪器不计入其中。

参数
  • in_pattern VARCHAR(128): 用于匹配仪器名称的值,通过在LIKE模式匹配中使用%in_pattern%作为操作数来识别。

    ''的值匹配所有仪器。

示例

禁用特定仪器:

mysql> CALL sys.ps_setup_disable_instrument('wait/lock/metadata/sql/mdl');
+-----------------------+
| summary               |
+-----------------------+
| Disabled 1 instrument |
+-----------------------+

禁用所有互斥仪器:

mysql> CALL sys.ps_setup_disable_instrument('mutex');
+--------------------------+
| summary                  |
+--------------------------+
| Disabled 177 instruments |
+--------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-disable-thread.html

30.4.4.7 ps_setup_disable_thread() 过程

给定连接 ID,禁用线程的性能模式仪表。生成一个结果集,指示禁用了多少个线程。已禁用的线程不计入其中。

参数
  • in_connection_id BIGINT:连接 ID。这是性能模式 threads 表中 PROCESSLIST_ID 列或 SHOW PROCESSLIST 输出中 Id 列中给定类型的值。
示例

通过连接 ID 禁用特定连接:

mysql> CALL sys.ps_setup_disable_thread(225);
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+

禁用当前连接:

mysql> CALL sys.ps_setup_disable_thread(CONNECTION_ID());
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-enable-background-threads.html

30.4.4.8 ps_setup_enable_background_threads() 过程

启用性能模式对所有后台线程进行仪器化。生成一个结果集,指示启用了多少个后台线程。已经启用的线程不计入其中。

参数

无。

示例
mysql> CALL sys.ps_setup_enable_background_threads();
+-------------------------------+
| summary                       |
+-------------------------------+
| Enabled 24 background threads |
+-------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-enable-consumer.html

30.4.4.9 ps_setup_enable_consumer() 过程

启用包含参数的性能模式消费者名称。生成一个结果集,指示启用了多少个消费者。已经启用的消费者不计入其中。

参数
  • consumer VARCHAR(128): 用于匹配消费者名称的值,通过在LIKE模式匹配中使用%consumer%作为操作数来识别。

    值为''匹配所有消费者。

示例

启用所有语句消费者:

mysql> CALL sys.ps_setup_enable_consumer('statement');
+---------------------+
| summary             |
+---------------------+
| Enabled 4 consumers |
+---------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-enable-instrument.html

30.4.4.10 ps_setup_enable_instrument()过程

启用包含参数的性能模式仪器的名称。生成一个结果集,指示启用了多少个仪器。已启用的仪器不计入其中。

参数
  • in_pattern VARCHAR(128): 用于匹配仪器名称的值,通过在LIKE模式匹配中使用%in_pattern%作为操作数来识别。

    一个值为''匹配所有仪器。

示例

启用特定仪器:

mysql> CALL sys.ps_setup_enable_instrument('wait/lock/metadata/sql/mdl');
+----------------------+
| summary              |
+----------------------+
| Enabled 1 instrument |
+----------------------+

启用所有互斥仪器:

mysql> CALL sys.ps_setup_enable_instrument('mutex');
+-------------------------+
| summary                 |
+-------------------------+
| Enabled 177 instruments |
+-------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-enable-thread.html

30.4.4.11 ps_setup_enable_thread() 过程

给定连接 ID,为线程启用性能模式仪器。生成一个结果集,指示启用了多少个线程。已经启用的线程不计入其中。

参数
  • in_connection_id BIGINT: 连接 ID。这是性能模式threads表中PROCESSLIST_ID列或SHOW PROCESSLIST输出中的Id列中给定类型的值。
示例

通过连接 ID 启用特定连接:

mysql> CALL sys.ps_setup_enable_thread(225);
+------------------+
| summary          |
+------------------+
| Enabled 1 thread |
+------------------+

启用当前连接:

mysql> CALL sys.ps_setup_enable_thread(CONNECTION_ID());
+------------------+
| summary          |
+------------------+
| Enabled 1 thread |
+------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-reload-saved.html

30.4.4.12 ps_setup_reload_saved() 过程

使用ps_setup_save() Procedure")在同一会话中重新加载先前保存的性能模式配置。有关更多信息,请参阅ps_setup_save() Procedure")的描述。

在执行此过程期间,通过操纵sql_log_bin系统变量的会话值来禁用二进制日志记录。这是一项受限制的操作,因此该过程需要具有足够权限以设置受限制会话变量的权限。请参阅 Section 7.1.9.1, “System Variable Privileges”。

参数

无。

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-reset-to-default.html

30.4.4.13 ps_setup_reset_to_default() 过程

将性能模式配置重置为默认设置。

参数
  • in_verbose BOOLEAN: 是否在过程执行期间显示有关每个设置阶段的信息。这包括执行的 SQL 语句。
示例
mysql> CALL sys.ps_setup_reset_to_default(TRUE)\G
*************************** 1\. row ***************************
status: Resetting: setup_actors
DELETE
FROM performance_schema.setup_actors
WHERE NOT (HOST = '%' AND USER = '%' AND ROLE = '%')

*************************** 1\. row ***************************
status: Resetting: setup_actors
INSERT IGNORE INTO performance_schema.setup_actors
VALUES ('%', '%', '%')

...

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-save.html

30.4.4.14 ps_setup_save() 过程

保存当前性能模式配置。这使您可以暂时更改配置以进行调试或其他目的,然后通过调用ps_setup_reload_saved() 过程")过程将其恢复到先前状态。

为了防止其他同时调用保存配置的操作,ps_setup_save() 过程")通过调用GET_LOCK()函数获取名为sys.ps_setup_save的咨询锁。ps_setup_save() 过程")接受一个超时参数,指示如果锁已经存在(表示其他会话有一个未完成的保存配置),等待多少秒。如果超时时间到期而未获得锁,则ps_setup_save() 过程")会失败。

同一个会话中稍后调用ps_setup_reload_saved() 过程")是有意义的,因为配置保存在TEMPORARY表中。ps_setup_save() 过程")会删除临时表并释放锁。如果您在不调用ps_setup_save() 过程")的情况下结束会话,表和锁会自动消失。

此过程通过操纵sql_log_bin系统变量的会话值,在执行期间禁用二进制日志记录。这是一项受限制的操作,因此该过程需要具有足够权限以设置受限制会话变量的权限。请参阅 Section 7.1.9.1, “System Variable Privileges”。

参数
  • in_timeout INT:等待获取sys.ps_setup_save锁的秒数。负超时值表示无限超时。
示例
mysql> CALL sys.ps_setup_save(10);

... *make Performance Schema configuration changes* ...

mysql> CALL sys.ps_setup_reload_saved();

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-disabled.html

30.4.4.15 ps_setup_show_disabled() 过程

显示当前所有已禁用的性能模式配置。

参数
  • in_show_instruments BOOLEAN: 是否显示已禁用的工具。这可能是一个很长的列表。

  • in_show_threads BOOLEAN: 是否显示已禁用的线程。

示例
mysql> CALL sys.ps_setup_show_disabled(TRUE, TRUE);
+----------------------------+
| performance_schema_enabled |
+----------------------------+
|                          1 |
+----------------------------+

+---------------+
| enabled_users |
+---------------+
| '%'@'%'       |
+---------------+

+-------------+----------------------+---------+-------+
| object_type | objects              | enabled | timed |
+-------------+----------------------+---------+-------+
| EVENT       | mysql.%              | NO      | NO    |
| EVENT       | performance_schema.% | NO      | NO    |
| EVENT       | information_schema.% | NO      | NO    |
| FUNCTION    | mysql.%              | NO      | NO    |
| FUNCTION    | performance_schema.% | NO      | NO    |
| FUNCTION    | information_schema.% | NO      | NO    |
| PROCEDURE   | mysql.%              | NO      | NO    |
| PROCEDURE   | performance_schema.% | NO      | NO    |
| PROCEDURE   | information_schema.% | NO      | NO    |
| TABLE       | mysql.%              | NO      | NO    |
| TABLE       | performance_schema.% | NO      | NO    |
| TABLE       | information_schema.% | NO      | NO    |
| TRIGGER     | mysql.%              | NO      | NO    |
| TRIGGER     | performance_schema.% | NO      | NO    |
| TRIGGER     | information_schema.% | NO      | NO    |
+-------------+----------------------+---------+-------+

...

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-disabled-consumers.html

30.4.4.16 ps_setup_show_disabled_consumers() 过程

显示当前所有已禁用的性能模式消费者。

参数

无。

示例
mysql> CALL sys.ps_setup_show_disabled_consumers();
+----------------------------------+
| disabled_consumers               |
+----------------------------------+
| events_stages_current            |
| events_stages_history            |
| events_stages_history_long       |
| events_statements_history        |
| events_statements_history_long   |
| events_transactions_history      |
| events_transactions_history_long |
| events_waits_current             |
| events_waits_history             |
| events_waits_history_long        |
+----------------------------------+

dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-disabled-instruments.html

30.4.4.17 ps_setup_show_disabled_instruments() 过程

显示当前所有禁用的性能模式仪器。这可能是一个很长的列表。

参数

无。

示例
mysql> CALL sys.ps_setup_show_disabled_instruments()\G
*************************** 1\. row ***************************
disabled_instruments: wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc
               timed: NO
*************************** 2\. row ***************************
disabled_instruments: wait/synch/mutex/sql/THD::LOCK_query_plan
               timed: NO
*************************** 3\. row ***************************
disabled_instruments: wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit
               timed: NO
...

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-enabled.html

30.4.4.18 ps_setup_show_enabled() 过程

显示当前所有已启用的性能模式配置。

参数
  • in_show_instruments BOOLEAN: 是否显示已启用的仪器。这可能是一个很长的列表。

  • in_show_threads BOOLEAN: 是否显示已启用的线程。

示例
mysql> CALL sys.ps_setup_show_enabled(FALSE, FALSE);
+----------------------------+
| performance_schema_enabled |
+----------------------------+
|                          1 |
+----------------------------+
1 row in set (0.01 sec)

+---------------+
| enabled_users |
+---------------+
| '%'@'%'       |
+---------------+
1 row in set (0.01 sec)

+-------------+---------+---------+-------+
| object_type | objects | enabled | timed |
+-------------+---------+---------+-------+
| EVENT       | %.%     | YES     | YES   |
| FUNCTION    | %.%     | YES     | YES   |
| PROCEDURE   | %.%     | YES     | YES   |
| TABLE       | %.%     | YES     | YES   |
| TRIGGER     | %.%     | YES     | YES   |
+-------------+---------+---------+-------+
5 rows in set (0.02 sec)

+-----------------------------+
| enabled_consumers           |
+-----------------------------+
| events_statements_current   |
| events_statements_history   |
| events_transactions_current |
| events_transactions_history |
| global_instrumentation      |
| statements_digest           |
| thread_instrumentation      |
+-----------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-enabled-consumers.html

30.4.4.19 ps_setup_show_enabled_consumers() 过程

显示当前所有已启用的性能模式消费者。

参数

无。

示例
mysql> CALL sys.ps_setup_show_enabled_consumers();
+-----------------------------+
| enabled_consumers           |
+-----------------------------+
| events_statements_current   |
| events_statements_history   |
| events_transactions_current |
| events_transactions_history |
| global_instrumentation      |
| statements_digest           |
| thread_instrumentation      |
+-----------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-setup-show-enabled-instruments.html

30.4.4.20 ps_setup_show_enabled_instruments() 过程

显示当前启用的所有性能模式仪器。这可能是一个很长的列表。

参数

无。

示例
mysql> CALL sys.ps_setup_show_enabled_instruments()\G
*************************** 1\. row ***************************
enabled_instruments: wait/io/file/sql/map
              timed: YES
*************************** 2\. row ***************************
enabled_instruments: wait/io/file/sql/binlog
              timed: YES
*************************** 3\. row ***************************
enabled_instruments: wait/io/file/sql/binlog_cache
              timed: YES
...

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-statement-avg-latency-histogram.html

30.4.4.21 ps_statement_avg_latency_histogram() 过程

显示跨所有在性能模式中跟踪的标准化语句中的平均延迟值的文本直方图图表events_statements_summary_by_digest表。

此过程可用于显示在此 MySQL 实例中运行的语句的延迟分布的非常高级别的图像。

参数

无。

示例

直方图输出以语句单位为单位。例如,在直方图图例中,* = 2 units 表示每个 * 字符代表 2 个语句。

mysql> CALL sys.ps_statement_avg_latency_histogram()\G
*************************** 1\. row ***************************
Performance Schema Statement Digest Average Latency Histogram:

  . = 1 unit
  * = 2 units
  # = 3 units

(0 - 66ms)     88  | #############################
(66 - 133ms)   14  | ..............
(133 - 199ms)  4   | ....
(199 - 265ms)  5   | **
(265 - 332ms)  1   | .
(332 - 398ms)  0   |
(398 - 464ms)  1   | .
(464 - 531ms)  0   |
(531 - 597ms)  0   |
(597 - 663ms)  0   |
(663 - 730ms)  0   |
(730 - 796ms)  0   |
(796 - 863ms)  0   |
(863 - 929ms)  0   |
(929 - 995ms)  0   |
(995 - 1062ms) 0   |

  Total Statements: 114; Buckets: 16; Bucket Size: 66 ms;

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-trace-statement-digest.html

30.4.4.22 ps_trace_statement_digest() 过程

跟踪特定语句摘要的所有性能模式仪表板。

如果在性能模式events_statements_summary_by_digest表中找到感兴趣的语句,请将其DIGEST列的 MD5 值指定给该过程,并指示轮询持续时间和间隔。结果是在该间隔内跟踪的性能模式中的所有统计信息报告。

该过程还尝试在间隔期间执行EXPLAIN以解释摘要中运行时间最长的示例。这次尝试可能会失败,因为性能模式会截断较长的SQL_TEXT值。因此,由于解析错误,EXPLAIN失败。

该过程通过操纵sql_log_bin系统变量的会话值,在执行过程中禁用二进制日志记录。这是一个受限操作,因此该过程需要具有足够权限设置受限会话变量的权限。请参阅 Section 7.1.9.1, “System Variable Privileges”。

参数
  • in_digest VARCHAR(32):要分析的语句摘要标识符。

  • in_runtime INT:分析运行的持续时间,单位为秒。

  • in_interval DECIMAL(2,2):尝试在秒内(可以是小数)进行快照的分析间隔。

  • in_start_fresh BOOLEAN:是否在开始之前截断性能模式events_statements_history_longevents_stages_history_long表。

  • in_auto_enable BOOLEAN:是否自动启用所需的消费者。

示例
mysql> CALL sys.ps_trace_statement_digest('891ec6860f98ba46d89dd20b0c03652c', 10, 0.1, TRUE, TRUE);
+--------------------+
| SUMMARY STATISTICS |
+--------------------+
| SUMMARY STATISTICS |
+--------------------+
1 row in set (9.11 sec)

+------------+-----------+-----------+-----------+---------------+------------+------------+
| executions | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scans |
+------------+-----------+-----------+-----------+---------------+------------+------------+
|         21 | 4.11 ms   | 2.00 ms   |         0 |            21 |          0 |          0 |
+------------+-----------+-----------+-----------+---------------+------------+------------+
1 row in set (9.11 sec)

+------------------------------------------+-------+-----------+
| event_name                               | count | latency   |
+------------------------------------------+-------+-----------+
| stage/sql/statistics                     |    16 | 546.92 us |
| stage/sql/freeing items                  |    18 | 520.11 us |
| stage/sql/init                           |    51 | 466.80 us |
...
| stage/sql/cleaning up                    |    18 | 11.92 us  |
| stage/sql/executing                      |    16 | 6.95 us   |
+------------------------------------------+-------+-----------+
17 rows in set (9.12 sec)

+---------------------------+
| LONGEST RUNNING STATEMENT |
+---------------------------+
| LONGEST RUNNING STATEMENT |
+---------------------------+
1 row in set (9.16 sec)

+-----------+-----------+-----------+-----------+---------------+------------+-----------+
| thread_id | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scan |
+-----------+-----------+-----------+-----------+---------------+------------+-----------+
|    166646 | 618.43 us | 1.00 ms   |         0 |             1 |          0 |         0 |
+-----------+-----------+-----------+-----------+---------------+------------+-----------+
1 row in set (9.16 sec)

# Truncated for clarity...
+-----------------------------------------------------------------+
| sql_text                                                        |
+-----------------------------------------------------------------+
| select hibeventhe0_.id as id1382_, hibeventhe0_.createdTime ... |
+-----------------------------------------------------------------+
1 row in set (9.17 sec)

+------------------------------------------+-----------+
| event_name                               | latency   |
+------------------------------------------+-----------+
| stage/sql/init                           | 8.61 us   |
| stage/sql/init                           | 331.07 ns |
...
| stage/sql/freeing items                  | 30.46 us  |
| stage/sql/cleaning up                    | 662.13 ns |
+------------------------------------------+-----------+
18 rows in set (9.23 sec)

+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
| id | select_type | table        | type  | possible_keys | key       | key_len | ref         | rows | Extra |
+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
|  1 | SIMPLE      | hibeventhe0_ | const | fixedTime     | fixedTime | 775     | const,const |    1 | NULL  |
+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
1 row in set (9.27 sec)

Query OK, 0 rows affected (9.28 sec)

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-trace-thread.html

30.4.4.23 ps_trace_thread() 过程

将一个被仪器化线程的所有性能模式数据转储到一个.dot格式的图形文件(用于 DOT 图形描述语言)。每个从该过程返回的结果集应用于一个完整的图形。

该过程在执行过程中通过操纵sql_log_bin系统变量的会话值来禁用二进制日志记录。这是一个受限操作,因此该过程需要具有足够权限来设置受限会话变量。参见 Section 7.1.9.1, “System Variable Privileges”。

参数
  • in_thread_id INT: 要跟踪的线程。

  • in_outfile VARCHAR(255): 用于.dot输出文件的名称。

  • in_max_runtime DECIMAL(20,2): 收集数据的最大秒数(可以是小数)。使用NULL来收集默认的 60 秒数据。

  • in_interval DECIMAL(20,2): 在数据收集之间休眠的秒数(可以是小数)。使用NULL来休眠默认的 1 秒。

  • in_start_fresh BOOLEAN: 是否在跟踪之前重置所有性能模式数据。

  • in_auto_setup BOOLEAN: 是否禁用所有其他线程并启用所有仪器和消费者。这也会在运行结束时重置设置。

  • in_debug BOOLEAN: 是否在图中包含file:lineno信息。

示例
mysql> CALL sys.ps_trace_thread(25, CONCAT('/tmp/stack-', REPLACE(NOW(), ' ', '-'), '.dot'), NULL, NULL, TRUE, TRUE, TRUE);
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+
1 row in set (0.00 sec)

+---------------------------------------------+
| Info                                        |
+---------------------------------------------+
| Data collection starting for THREAD_ID = 25 |
+---------------------------------------------+
1 row in set (0.03 sec)

+-----------------------------------------------------------+
| Info                                                      |
+-----------------------------------------------------------+
| Stack trace written to /tmp/stack-2014-02-16-21:18:41.dot |
+-----------------------------------------------------------+
1 row in set (60.07 sec)

+-------------------------------------------------------------------+
| Convert to PDF                                                    |
+-------------------------------------------------------------------+
| dot -Tpdf -o /tmp/stack_25.pdf /tmp/stack-2014-02-16-21:18:41.dot |
+-------------------------------------------------------------------+
1 row in set (60.07 sec)

+-------------------------------------------------------------------+
| Convert to PNG                                                    |
+-------------------------------------------------------------------+
| dot -Tpng -o /tmp/stack_25.png /tmp/stack-2014-02-16-21:18:41.dot |
+-------------------------------------------------------------------+
1 row in set (60.07 sec)

+------------------+
| summary          |
+------------------+
| Enabled 1 thread |
+------------------+
1 row in set (60.32 sec)

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-truncate-all-tables.html

30.4.4.24 ps_truncate_all_tables() 过程

截断所有性能模式摘要表,重置所有聚合仪表作为快照的指令。生成一个结果集,指示截断了多少个表。

参数
  • in_verbose BOOLEAN:是否在执行之前显示每个TRUNCATE TABLE语句。
示例
mysql> CALL sys.ps_truncate_all_tables(FALSE);
+---------------------+
| summary             |
+---------------------+
| Truncated 49 tables |
+---------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-statement-performance-analyzer.html

30.4.4.25 statement_performance_analyzer()过程

创建一个报告,显示服务器上正在运行的语句。视图是基于整体和/或增量活动计算的。

在执行此过程期间,通过操纵sql_log_bin系统变量的会话值来禁用二进制日志记录。这是一个受限制的操作,因此该过程需要具有足够权限以设置受限制会话变量的权限。请参阅第 7.1.9.1 节,“系统变量权限”。

参数
  • in_action ENUM('snapshot', 'overall', 'delta', 'create_tmp', 'create_table', 'save', 'cleanup'): 执行的操作。允许使用以下数值:

    • snapshot: 存储一个快照。默认情况下,会对性能模式events_statements_summary_by_digest表的当前内容进行快照。通过设置in_table,可以覆盖为复制指定表的内容。快照存储在sys模式下的tmp_digests临时表中。

    • overall: 基于由in_table指定的表的内容生成分析。对于整体分析,in_table可以是NOW()以使用最新快照。这会覆盖现有快照。对于in_tableNULL的情况,使用现有快照。如果in_tableNULL且不存在快照,则会创建一个新的快照。in_views参数和statement_performance_analyzer.limit配置选项会影响此过程的操作。

    • delta: 生成增量分析。增量是在由in_table指定的参考表和必须存在的快照之间计算的。此操作使用sys模式下的tmp_digests_delta临时表。in_views参数和statement_performance_analyzer.limit配置选项会影响此过程的操作。

    • create_table: 创建一个适合存储快照以供以后使用的常规表(例如,用于计算增量)。

    • create_tmp: 创建一个适合存储快照以供以后使用的临时表(例如,用于计算增量)。

    • save: 将快照保存在由in_table指定的表中。表必须存在并具有正确的结构。如果不存在快照,则会创建一个新的快照。

    • cleanup: 删除用于快照和增量的临时表。

  • in_table VARCHAR(129): 用于由 in_action 参数指定的某些操作的表参数。使用格式 db_name.tbl_nametbl_name,不使用任何反引号 (```sql) identifier-quoting characters. Periods (.) are not supported in database and table names.

    The meaning of the in_table value for each in_action value is detailed in the individual in_action value descriptions.

  • in_views SET ('with_runtimes_in_95th_percentile', 'analysis', 'with_errors_or_warnings', 'with_full_table_scans', 'with_sorting', 'with_temp_tables', 'custom'): Which views to include. This parameter is a SET value, so it can contain multiple view names, separated by commas. The default is to include all views except custom. The following values are permitted:

    • with_runtimes_in_95th_percentile: Use the statements_with_runtimes_in_95th_percentile view.

    • analysis: Use the statement_analysis view.

    • with_errors_or_warnings: Use the statements_with_errors_or_warnings view.

    • with_full_table_scans: Use the statements_with_full_table_scans view.

    • with_sorting: Use the statements_with_sorting view.

    • with_temp_tables: Use the statements_with_temp_tables view.

    • custom: Use a custom view. This view must be specified using the statement_performance_analyzer.view configuration option to name a query or an existing view.

Configuration Options

statement_performance_analyzer() Procedure") operation can be modified using the following configuration options or their corresponding user-defined variables (see Section 30.4.2.1, “The sys_config Table”):

  • debug, @sys.debug

    If this option is ON, produce debugging output. The default is OFF.

  • statement_performance_analyzer.limit, @sys.statement_performance_analyzer.limit

    The maximum number of rows to return for views that have no built-in limit. The default is 100.

  • statement_performance_analyzer.view, @sys.statement_performance_analyzer.view

    The custom query or view to be used. If the option value contains a space, it is interpreted as a query. Otherwise, it must be the name of an existing view that queries the Performance Schema events_statements_summary_by_digest table. There cannot be any LIMIT clause in the query or view definition if the statement_performance_analyzer.limit configuration option is greater than 0. If specifying a view, use the same format as for the in_table parameter. The default is NULL (no custom view defined).

Example

To create a report with the queries in the 95th percentile since the last truncation of events_statements_summary_by_digest and with a one-minute delta period:

  1. Create a temporary table to store the initial snapshot.

  2. Create the initial snapshot.

  3. Save the initial snapshot in the temporary table.

  4. Wait one minute.

  5. Create a new snapshot.

  6. Perform analysis based on the new snapshot.

  7. Perform analysis based on the delta between the initial and new snapshots.


mysql> 调用 sys.statement_performance_analyzer('create_tmp', 'mydb.tmp_digests_ini', NULL);

查询成功,0 行受影响 (0.08 秒)

mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);

查询成功,0 行受影响 (0.02 秒)

mysql> 调用 sys.statement_performance_analyzer('save', 'mydb.tmp_digests_ini', NULL);

查询成功,0 行受影响 (0.00 秒)

mysql> 休眠 60 秒;

查询成功,0 行受影响 (1 分 0.00 秒)

mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);

查询成功,0 行受影响 (0.02 秒)

mysql> 调用 sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile');

+-----------------------------------------+

| 下一个输出                             |
| --- |

+-----------------------------------------+

| 运行时间在第 95 百分位数的查询 |
| --- |

+-----------------------------------------+

1 行受影响 (0.05 秒)

...

mysql> 调用 sys.statement_performance_analyzer('delta', 'mydb.tmp_digests_ini', 'with_runtimes_in_95th_percentile');

+-----------------------------------------+

| 下一个输出                             |
| --- |

+-----------------------------------------+

| 运行时间在第 95 百分位数的查询 |
| --- |

+-----------------------------------------+

1 行受影响 (0.03 秒)

...

```sql

Create an overall report of the 95th percentile queries and the top 10 queries with full table scans:

mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);

查询成功,0 行受影响 (0.01 秒)

mysql> 设�� @sys.statement_performance_analyzer.limit = 10;

查询成功,0 行受影响 (0.00 秒)

mysql> 调用 sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile,with_full_table_scans');

+-----------------------------------------+

下一个输出

+-----------------------------------------+

运行时间在第 95 百分位数的查询

+-----------------------------------------+

1 行受影响 (0.01 秒)

...

+-------------------------------------+

下一个输出

+-------------------------------------+

具有全表扫描的前 10 个查询

+-------------------------------------+

1 行受影响 (0.09 秒)

...


Use a custom view showing the top 10 queries sorted by total execution time, refreshing the view every minute using the **watch** command in Linux:

mysql> 创建或替换视图 mydb.my_statements AS

SELECT sys.format_statement(DIGEST_TEXT) AS query,

        SCHEMA_NAME AS db,

        COUNT_STAR AS exec_count,

        sys.format_time(SUM_TIMER_WAIT) AS total_latency,

        sys.format_time(AVG_TIMER_WAIT) AS avg_latency,

        ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg,

        ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg,

        ROUND(IFNULL(SUM_ROWS_AFFECTED / NULLIF(COUNT_STAR, 0), 0)) AS rows_affected_avg,

        DIGEST AS digest

    FROM performance_schema.events_statements_summary_by_digest

按 SUM_TIMER_WAIT 降序排列;

查询成功,0 行受影响 (0.10 秒)

mysql> 调用 sys.statement_performance_analyzer('create_table', 'mydb.digests_prev', NULL);

Query OK, 0 rows affected (0.10 sec)

$> watch -n 60 "mysql sys --table -e "

SET @sys.statement_performance_analyzer.view = 'mydb.my_statements';

SET @sys.statement_performance_analyzer.limit = 10;

CALL statement_performance_analyzer('snapshot', NULL, NULL);

CALL statement_performance_analyzer('delta', 'mydb.digests_prev', 'custom');

CALL statement_performance_analyzer('save', 'mydb.digests_prev', NULL);

""

每隔 60.0 秒: mysql sys --table -e " ... Mon Dec 22 10:58:51 2014

+----------------------------------+

下一个输出

+----------------------------------+

前 10 个使用自定义视图的查询

+----------------------------------+

+-------------------+-------+------------+---------------+-------------+---------------+-------------------+-------------------+----------------------------------+

查询 数据库 执行次数 总延迟 平均延迟 平均发送行数 平均检查行数 平均影响行数 摘要

+-------------------+-------+------------+---------------+-------------+---------------+-------------------+-------------------+----------------------------------+

...



> 原文:[`dev.mysql.com/doc/refman/8.0/en/sys-table-exists.html`](https://dev.mysql.com/doc/refman/8.0/en/sys-table-exists.html)

#### 30.4.4.26 table_exists() 过程

测试给定表是否存在为常规表、`TEMPORARY`表或视图。过程将表类型返回到一个`OUT`参数中。如果同名的临时表和永久表都存在,则返回`TEMPORARY`。

##### 参数

+   `in_db VARCHAR(64)`: 要检查表存在性的数据库名。

+   `in_table VARCHAR(64)`: 要检查存在性的表名。

+   `out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY')`: 返回值。这是一个`OUT`参数,因此必须是一个可以存储表类型的变量。当过程返回时,变量具有以下值之一,指示表是否存在:

    +   `''`: 表名不存在为基本表、`TEMPORARY`表或视图。

    +   `BASE TABLE`: 表名存在为基本(永久)表。

    +   `VIEW`: 表名存在为视图。

    +   `TEMPORARY`: 表名存在为`TEMPORARY`表。

##### 示例

```sql
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)

mysql> USE db1;
Database changed

mysql> CREATE TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.03 sec)

mysql> CREATE TABLE t2 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)

mysql> CREATE view v_t1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)

+-----------+
| @exists   |
+-----------+
| TEMPORARY |
+-----------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+------------+
| @exists    |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+---------+
| @exists |
+---------+
| VIEW    |
+---------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
Query OK, 0 rows affected (0.00 sec)

+---------+
| @exists |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

30.4.5 sys Schema 存储函数

原文:dev.mysql.com/doc/refman/8.0/en/sys-schema-functions.html

30.4.5.1 extract_schema_from_file_name() 函数

30.4.5.2 extract_table_from_file_name() 函数

30.4.5.3 format_bytes() 函数

30.4.5.4 format_path() 函数

30.4.5.5 format_statement() 函数

30.4.5.6 format_time() 函数

30.4.5.7 list_add() 函数

30.4.5.8 list_drop() 函数

30.4.5.9 ps_is_account_enabled() 函数

30.4.5.10 ps_is_consumer_enabled() 函数

30.4.5.11 ps_is_instrument_default_enabled() 函数

30.4.5.12 ps_is_instrument_default_timed() 函数

30.4.5.13 ps_is_thread_instrumented() 函数

30.4.5.14 ps_thread_account() 函数

30.4.5.15 ps_thread_id() 函数

30.4.5.16 ps_thread_stack() 函数

30.4.5.17 ps_thread_trx_info() 函数

30.4.5.18 quote_identifier() 函数

30.4.5.19 sys_get_config() 函数

30.4.5.20 version_major() 函数

30.4.5.21 version_minor() 函数

30.4.5.22 version_patch() 函数

以下章节描述 sys schema 存储函数。

原文:dev.mysql.com/doc/refman/8.0/en/sys-extract-schema-from-file-name.html

30.4.5.1 extract_schema_from_file_name() 函数

给定文件路径名,返回表示模式名称的路径组件。此函数假定文件名位于模式目录中。因此,它不适用于使用其自己的DATA_DIRECTORY表选项定义的分区或表。

此函数在从包含文件路径名的性能模式中提取文件 I/O 信息时非常有用。它提供了一种方便的方式来显示模式名称,这比完整路径名更容易理解,并且可以用于与对象模式名称进行连接。

参数
  • path VARCHAR(512): 数据文件的完整路径,用于提取模式名称。
返回值

一个VARCHAR(64)值。

示例
mysql> SELECT sys.extract_schema_from_file_name('/usr/local/mysql/data/world/City.ibd');
+---------------------------------------------------------------------------+
| sys.extract_schema_from_file_name('/usr/local/mysql/data/world/City.ibd') |
+---------------------------------------------------------------------------+
| world                                                                     |
+---------------------------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-format-bytes.html

30.4.5.3 format_bytes() 函数

注意

截至 MySQL 8.0.16 版本,format_bytes()`` 函数") 已被弃用,并可能在未来的 MySQL 版本中移除。使用该函数的应用程序应迁移到使用内置的 FORMAT_BYTES()` 函数。参见 Section 14.21, “Performance Schema Functions”

给定一个字节计数,将其转换为人类可读的格式,并返回一个由值和单位指示器组成的字符串。根据值的大小,单位部分可以是 bytesKiB(kibibytes)、MiB(mebibytes)、GiB(gibibytes)、TiB(tebibytes)或 PiB(pebibytes)。

参数
  • bytes TEXT:要格式化的字节计数。
返回值

一个 TEXT 值。

示例
mysql> SELECT sys.format_bytes(512), sys.format_bytes(18446644073709551615);
+-----------------------+----------------------------------------+
| sys.format_bytes(512) | sys.format_bytes(18446644073709551615) |
+-----------------------+----------------------------------------+
| 512 bytes             | 16383.91 PiB                           |
+-----------------------+----------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-format-path.html

30.4.5.4 format_path()函数

给定一个路径名,返回在按顺序替换以下系统变量的值匹配的子路径后的修改路径名:

datadir
tmpdir
slave_load_tmpdir or replica_load_tmpdir
innodb_data_home_dir
innodb_log_group_home_dir
innodb_undo_directory
basedir

与系统变量sysvar的值匹配的值将被替换为字符串@@GLOBAL.*sysvar*

参数
  • path VARCHAR(512): 要格式化的路径名。
返回数值

一个VARCHAR(512) CHARACTER SET utf8mb3的数值。

示例
mysql> SELECT sys.format_path('/usr/local/mysql/data/world/City.ibd');
+---------------------------------------------------------+
| sys.format_path('/usr/local/mysql/data/world/City.ibd') |
+---------------------------------------------------------+
| @@datadir/world/City.ibd                                |
+---------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-format-statement.html

30.4.5.5 The format_statement() Function

给定一个字符串(通常表示一个 SQL 语句),将其缩短到statement_truncate_len配置选项指定的长度,并返回结果。如果字符串短于statement_truncate_len,则不会进行截断。否则,字符串的中间部分将被省略号(...)替换。

此函数对从性能模式表中检索的可能较长的语句进行格式化,使其达到已知的固定最大长度。

参数
  • statement LONGTEXT:需要格式化的语句。
配置选项

format_statement() Function") 操作可以使用以下配置选项或其对应的用户定义变量进行修改(参见第 30.4.2.1 节,“sys_config 表”):

  • statement_truncate_len@sys.statement_truncate_len

    format_statement() Function") 函数返回的语句的最大长度。超过此长度的语句将被截断至此长度。默认值为 64。

返回值

一个LONGTEXT值。

示例

默认情况下,format_statement() Function") 将语句截断为不超过 64 个字符。设置@sys.statement_truncate_len会改变当前会话的截断长度:

mysql> SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql> SELECT sys.format_statement(@stmt);
+----------------------------------------------------------+
| sys.format_statement(@stmt)                              |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT sys.format_statement(@stmt);
+-----------------------------------+
| sys.format_statement(@stmt)       |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-format-time.html

30.4.5.6 format_time() 函数

注意

从 MySQL 8.0.16 开始,format_time() Function") 已被弃用,并将在未来的 MySQL 版本中移除。使用它的应用程序应该迁移到使用内置的 FORMAT_PICO_TIME() 函数。参见 Section 14.21, “Performance Schema Functions”

给定一个以皮秒为单位的性能模式延迟或等待时间,将其转换为人类可读的格式,并返回一个由值和单位指示器组成的字符串。根据值的大小,单位部分可以是 ps(皮秒)、ns(纳秒)、us(微秒)、ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)或 w(周)。

参数
  • picoseconds TEXT:要格式化的皮秒值。
返回值

一个 TEXT 值。

示例
mysql> SELECT sys.format_time(3501), sys.format_time(188732396662000);
+-----------------------+----------------------------------+
| sys.format_time(3501) | sys.format_time(188732396662000) |
+-----------------------+----------------------------------+
| 3.50 ns               | 3.15 m                           |
+-----------------------+----------------------------------+

dev.mysql.com/doc/refman/8.0/en/sys-list-add.html

30.4.5.7 list_add()函数

将一个值添加到逗号分隔的值列表中并返回结果。

这个函数和list_drop() Function")对于操作系统变量的值非常有用,比如sql_modeoptimizer_switch,它们接受一个逗号分隔的值列表。

参数
  • in_list TEXT:需要修改的列表。

  • in_add_value TEXT:要添加到列表中的值。

返回值

一个TEXT值。

示例
mysql> SELECT @@sql_mode;
+----------------------------------------+
| @@sql_mode                             |
+----------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES |
+----------------------------------------+
mysql> SET @@sql_mode = sys.list_add(@@sql_mode, 'NO_ENGINE_SUBSTITUTION');
mysql> SELECT @@sql_mode;
+---------------------------------------------------------------+
| @@sql_mode                                                    |
+---------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------------+
mysql> SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
mysql> SELECT @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-list-drop.html

30.4.5.8 list_drop() 函数

从逗号分隔的值列表中删除一个值并返回结果。更多信息,请参阅 `list_add()`` 函数") 的描述。

参数
  • in_list TEXT: 要修改的列表。

  • in_drop_value TEXT: 要从列表中删除的值。

返回值

一个 TEXT 值。

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-is-account-enabled.html

30.4.5.9 ps_is_account_enabled() 函数

返回 YESNO 表示给定账户的性能模式仪器是否已启用。

参数
  • in_host VARCHAR(60): 要检查的账户的主机名。

  • in_user VARCHAR(32): 要检查的账户的用户名。

返回值

一个 ENUM('YES','NO') 值。

示例
mysql> SELECT sys.ps_is_account_enabled('localhost', 'root');
+------------------------------------------------+
| sys.ps_is_account_enabled('localhost', 'root') |
+------------------------------------------------+
| YES                                            |
+------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-is-consumer-enabled.html

30.4.5.10 ps_is_consumer_enabled() 函数

返回YESNO以指示给定的性能模式消费者是否已启用,如果参数为NULL,则返回NULL。如果参数不是有效的消费者名称,则会发生错误。(在 MySQL 8.0.18 之前,如果参数不是有效的消费者名称,则函数将返回NULL。)

该函数考虑了消费者层次结构,因此除非所有依赖的消费者也处于启用状态,否则不会被视为已启用。有关消费者层次结构的信息,请参见第 29.4.7 节,“按消费者进行预过滤”。

参数
  • in_consumer VARCHAR(64): 要检查的消费者的名称。
返回值

一个ENUM('YES','NO')值。

示例
mysql> SELECT sys.ps_is_consumer_enabled('thread_instrumentation');
+------------------------------------------------------+
| sys.ps_is_consumer_enabled('thread_instrumentation') |
+------------------------------------------------------+
| YES                                                  |
+------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-is-instrument-default-enabled.html

30.4.5.11 ps_is_instrument_default_enabled()函数

返回YESNO,指示给定的性能模式工具是否默认启用。

参数
  • in_instrument VARCHAR(128): 要检查的工具的名称。
返回值

一个ENUM('YES','NO')值。

示例
mysql> SELECT sys.ps_is_instrument_default_enabled('memory/innodb/row_log_buf');
+-------------------------------------------------------------------+
| sys.ps_is_instrument_default_enabled('memory/innodb/row_log_buf') |
+-------------------------------------------------------------------+
| NO                                                                |
+-------------------------------------------------------------------+
mysql> SELECT sys.ps_is_instrument_default_enabled('statement/sql/alter_user');
+------------------------------------------------------------------+
| sys.ps_is_instrument_default_enabled('statement/sql/alter_user') |
+------------------------------------------------------------------+
| YES                                                              |
+------------------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-is-instrument-default-timed.html

30.4.5.12 ps_is_instrument_default_timed()函数

返回YESNO,指示给定的性能模式工具是否默认计时。

参数
  • in_instrument VARCHAR(128): 要检查的工具的名称。
返回值

一个ENUM('YES','NO')值。

示例
mysql> SELECT sys.ps_is_instrument_default_timed('memory/innodb/row_log_buf');
+-----------------------------------------------------------------+
| sys.ps_is_instrument_default_timed('memory/innodb/row_log_buf') |
+-----------------------------------------------------------------+
| NO                                                              |
+-----------------------------------------------------------------+
mysql> SELECT sys.ps_is_instrument_default_timed('statement/sql/alter_user');
+----------------------------------------------------------------+
| sys.ps_is_instrument_default_timed('statement/sql/alter_user') |
+----------------------------------------------------------------+
| YES                                                            |
+----------------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-is-thread-instrumented.html

30.4.5.13 ps_is_thread_instrumented()函数

返回YESNO以指示给定连接 ID 的性能模式仪器是否启用,如果 ID 未知则返回UNKNOWN,如果 ID 为NULL则返回NULL

参数
  • in_connection_id BIGINT UNSIGNED:连接 ID。这是性能模式threads表中PROCESSLIST_ID列或SHOW PROCESSLIST输出中Id列中给定类型的值。
返回值

一个ENUM('YES','NO','UNKNOWN')值。

示例
mysql> SELECT sys.ps_is_thread_instrumented(43);
+-----------------------------------+
| sys.ps_is_thread_instrumented(43) |
+-----------------------------------+
| UNKNOWN                           |
+-----------------------------------+
mysql> SELECT sys.ps_is_thread_instrumented(CONNECTION_ID());
+------------------------------------------------+
| sys.ps_is_thread_instrumented(CONNECTION_ID()) |
+------------------------------------------------+
| YES                                            |
+------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-thread-account.html

30.4.5.14 ps_thread_account()函数

给定一个性能模式线程 ID,返回与该线程关联的*user_name*@*host_name*账户。

参数
  • in_thread_id BIGINT UNSIGNED:要返回账户的线程 ID。该值应与某些性能模式threads表行的THREAD_ID列匹配。
返回值

一个TEXT值。

示例
mysql> SELECT sys.ps_thread_account(sys.ps_thread_id(CONNECTION_ID()));
+----------------------------------------------------------+
| sys.ps_thread_account(sys.ps_thread_id(CONNECTION_ID())) |
+----------------------------------------------------------+
| root@localhost                                           |
+----------------------------------------------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-thread-id.html

30.4.5.15 ps_thread_id()函数

注意

截至 MySQL 8.0.16,ps_thread_id() Function")已被弃用,并将在未来的 MySQL 版本中移除。使用它的应用程序应该迁移到使用内置的PS_THREAD_ID()PS_CURRENT_THREAD_ID()函数。参见第 14.21 节,“性能模式函数”

返回给定连接 ID 分配的性能模式线程 ID,如果连接 ID 为NULL,则返回当前连接的线程 ID。

参数
  • in_connection_id BIGINT UNSIGNED: 要返回线程 ID 的连接的 ID。这是性能模式threads表中PROCESSLIST_ID列中给定类型的值,或SHOW PROCESSLIST输出中的Id列。
返回值

一个BIGINT UNSIGNED值。

示例
mysql> SELECT sys.ps_thread_id(260);
+-----------------------+
| sys.ps_thread_id(260) |
+-----------------------+
|                   285 |
+-----------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-thread-stack.html

30.4.5.16 ps_thread_stack() 函数

返回给定线程 ID 的性能模式中所有语句、阶段和事件的 JSON 格式堆栈。

参数
  • in_thread_id BIGINT: 要跟踪的线程的 ID。该值应与某些性能模式threads表行的THREAD_ID列匹配。

  • in_verbose BOOLEAN: 是否在事件中包含file:lineno信息。

返回值

一个LONGTEXT CHARACTER SET latin1值。

示例
mysql> SELECT sys.ps_thread_stack(37, FALSE) AS thread_stack\G
*************************** 1\. row ***************************
thread_stack: {"rankdir": "LR","nodesep": "0.10",
"stack_created": "2014-02-19 13:39:03", "mysql_version": "8.0.2-dmr-debug-log",
"mysql_user": "root@localhost","events": [{"nesting_event_id": "0",
"event_id": "10", "timer_wait": 256.35, "event_info": "sql/select",
"wait_info": "select @@version_comment limit 1\nerrors: 0\nwarnings: 0\nlock time:
...

原文:dev.mysql.com/doc/refman/8.0/en/sys-ps-thread-trx-info.html

30.4.5.17 The ps_thread_trx_info() Function

返回一个包含有关给定线程信息的 JSON 对象。该信息包括当前事务以及它已经执行的语句,从性能模式events_transactions_currentevents_statements_history表中获取的。(这些表的消费者必须启用才能在 JSON 对象中获取完整数据。)

如果输出超过截断长度(默认为 65535),将返回一个 JSON 错误对象,例如:

{ "error": "Trx info truncated: Row 6 was cut by GROUP_CONCAT()" }

在函数执行期间引发的其他警告和异常会返回类似的错误对象。

参数
  • in_thread_id BIGINT UNSIGNED:要返回事务信息的线程 ID。该值应与某些性能模式threads表行的THREAD_ID列匹配。
配置选项

ps_thread_trx_info() Function") 操作可以使用以下配置选项或它们对应的用户定义变量进行修改(参见第 30.4.2.1 节,“sys_config 表”):

  • ps_thread_trx_info.max_length@sys.ps_thread_trx_info.max_length

    输出的最大长度。默认为 65535。

返回值

一个LONGTEXT值。

示例
mysql> SELECT sys.ps_thread_trx_info(48)\G
*************************** 1\. row ***************************
sys.ps_thread_trx_info(48): [
  {
    "time": "790.70 us",
    "state": "COMMITTED",
    "mode": "READ WRITE",
    "autocommitted": "NO",
    "gtid": "AUTOMATIC",
    "isolation": "REPEATABLE READ",
    "statements_executed": [
      {
        "sql_text": "INSERT INTO info VALUES (1, \'foo\')",
        "time": "471.02 us",
        "schema": "trx",
        "rows_examined": 0,
        "rows_affected": 1,
        "rows_sent": 0,
        "tmp_tables": 0,
        "tmp_disk_tables": 0,
        "sort_rows": 0,
        "sort_merge_passes": 0
      },
      {
        "sql_text": "COMMIT",
        "time": "254.42 us",
        "schema": "trx",
        "rows_examined": 0,
        "rows_affected": 0,
        "rows_sent": 0,
        "tmp_tables": 0,
        "tmp_disk_tables": 0,
        "sort_rows": 0,
        "sort_merge_passes": 0
      }
    ]
  },
  {
    "time": "426.20 us",
    "state": "COMMITTED",
    "mode": "READ WRITE",
    "autocommitted": "NO",
    "gtid": "AUTOMATIC",
    "isolation": "REPEATABLE READ",
    "statements_executed": [
      {
        "sql_text": "INSERT INTO info VALUES (2, \'bar\')",
        "time": "107.33 us",
        "schema": "trx",
        "rows_examined": 0,
        "rows_affected": 1,
        "rows_sent": 0,
        "tmp_tables": 0,
        "tmp_disk_tables": 0,
        "sort_rows": 0,
        "sort_merge_passes": 0
      },
      {
        "sql_text": "COMMIT",
        "time": "213.23 us",
        "schema": "trx",
        "rows_examined": 0,
        "rows_affected": 0,
        "rows_sent": 0,
        "tmp_tables": 0,
        "tmp_disk_tables": 0,
        "sort_rows": 0,
        "sort_merge_passes": 0
      }
    ]
  }
]

原文:dev.mysql.com/doc/refman/8.0/en/sys-quote-identifier.html

30.4.5.18 quote_identifier()函数

给定一个字符串参数,此函数生成一个适合包含在 SQL 语句中的带引号标识符。当要用作标识符的值是保留字或包含反引号时,这将非常有用。

mysql> SELECT sys.quote_identifier('plain');

+-------------------------------+

sys.quote_identifier('plain')

+-------------------------------+

plain

+-------------------------------+

mysql> SELECT sys.quote_identifier('trick`ier');

+-----------------------------------+

sys.quote_identifier('trick`ier')

+-----------------------------------+

trick``ier

+-----------------------------------+

mysql> SELECT sys.quote_identifier('integer');

+---------------------------------+

sys.quote_identifier('integer')

+---------------------------------+

integer

+---------------------------------+



> 原文:[`dev.mysql.com/doc/refman/8.0/en/sys-sys-get-config.html`](https://dev.mysql.com/doc/refman/8.0/en/sys-sys-get-config.html)

#### 30.4.5.19 sys_get_config()函数

给定配置选项名称,从`sys_config`表中返回选项值,如果该选项在表中不存在,则返回提供的默认值(可能为`NULL`)。

如果`sys_get_config()`函数")返回默认值且该值为`NULL`,则期望调用者能够处理给定配置选项的`NULL`。

按照惯例,调用`sys_get_config()`函数")的例程首先检查相应的用户定义变量是否存在且非`NULL`。如果是,则例程使用变量值而不读取`sys_config`表中的选项值。如果变量不存在或为`NULL`,则例程从表中读取选项值并将用户定义变量设置为该值。有关配置选项及其相应用户定义变量之间关系的更多信息,请参见第 30.4.2.1 节,“sys_config 表”。

如果要检查配置选项是否已设置,并在没有设置时使用`sys_get_config()`的返回值,可以使用`IFNULL(...)`(见后面的示例)。但是,这不应该在循环内执行(例如,在结果集中的每一行),因为对于需要在第一次迭代中才需要赋值的重复调用,使用`IFNULL(...)`预计比使用`IF (...) THEN ... END IF;`块要慢得多(见后面的示例)。

##### 参数

+   `in_variable_name VARCHAR(128)`: 要返回值的配置选项的名称。

+   `in_default_value VARCHAR(128)`: 如果在`sys_config`表中找不到配置选项,则返回的默认值。

##### 返回值

一个`VARCHAR(128)`值。

##### 示例

从`sys_config`表中获取配置值,如果该选项在表中不存在,则返回默认值 128:

```sql
mysql> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value;
+-------+
| Value |
+-------+
| 64    |
+-------+

一行示例:检查选项是否已设置;如果没有,则分配IFNULL(...)结果(使用sys_config表中的值):

mysql> SET @sys.statement_truncate_len =
       IFNULL(@sys.statement_truncate_len,
              sys.sys_get_config('statement_truncate_len', 64));

IF (...) THEN ... END IF;块示例:检查选项是否已设置;如果没有,则分配sys_config表中的值:

IF (@sys.statement_truncate_len IS NULL) THEN
  SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len', 64);
END IF;

dev.mysql.com/doc/refman/8.0/en/sys-version-major.html

30.4.5.20 version_major()函数

此函数返回 MySQL 服务器的主要版本。

参数

无。

返回值

一个TINYINT UNSIGNED值。

示例
mysql> SELECT VERSION(), sys.version_major();
+--------------+---------------------+
| VERSION()    | sys.version_major() |
+--------------+---------------------+
| 8.0.26-debug |                   8 |
+--------------+---------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-version-minor.html

30.4.5.21 版本次要() 函数

此函数返回 MySQL 服务器的次要版本。

参数

无。

返回值

一个 TINYINT UNSIGNED 值。

示例
mysql> SELECT VERSION(), sys.version_minor();
+--------------+---------------------+
| VERSION()    | sys.version_minor() |
+--------------+---------------------+
| 8.0.26-debug |                   0 |
+--------------+---------------------+

原文:dev.mysql.com/doc/refman/8.0/en/sys-version-patch.html

30.4.5.22 版本 _patch() 函数

此函数返回 MySQL 服务器的补丁发布版本。

参数

无。

返回值

一个TINYINT UNSIGNED值。

示例
mysql> SELECT VERSION(), sys.version_patch();
+--------------+---------------------+
| VERSION()    | sys.version_patch() |
+--------------+---------------------+
| 8.0.26-debug |                  26 |
+--------------+---------------------+

第三十一章 连接器和 API

原文:dev.mysql.com/doc/refman/8.0/en/connectors-apis.html

目录

31.1 MySQL Connector/C++

31.2 MySQL Connector/J

31.3 MySQL Connector/NET

31.4 MySQL Connector/ODBC

31.5 MySQL Connector/Python

31.6 MySQL Connector/Node.js

31.7 MySQL C API

31.8 MySQL PHP API

31.9 MySQL Perl API

31.10 MySQL Python API

31.11 MySQL Ruby APIs

31.11.1 MySQL/Ruby API

31.11.2 Ruby/MySQL API

31.12 MySQL Tcl API

31.13 MySQL Eiffel Wrapper

MySQL 连接器为客户端程序提供了与 MySQL 服务器的连接。API 使用经典的 MySQL 协议或 X 协议提供对 MySQL 资源的低级访问。连接器和 API 都使您能够从另一种语言或环境连接和执行 MySQL 语句,包括 ODBC、Java(JDBC)、C++、Python、Node.js、PHP、Perl、Ruby 和 C。

MySQL 连接器

Oracle 开发了许多连接器:

  • Connector/C++ 使 C++应用程序能够连接到 MySQL。

  • Connector/J 提供了驱动程序支持,用于使用标准的 Java 数据库连接(JDBC)API 从 Java 应用程序连接到 MySQL。

  • Connector/NET 使开发人员能够创建连接到 MySQL 的.NET 应用程序。Connector/NET 实现了完全功能的 ADO.NET 接口,并提供了与 ADO.NET 感知工具一起使用的支持。使用 Connector/NET 的应用程序可以用任何支持的.NET 语言编写。

  • Connector/ODBC 提供了驱动程序支持,用于使用开放数据库连接(ODBC)API 连接到 MySQL。支持从 Windows、Unix 和 macOS 平台进行 ODBC 连接。

  • Connector/Python 提供了驱动程序支持,用于使用符合Python DB API version 2.0的 API 从 Python 应用程序连接到 MySQL。不需要额外的 Python 模块或 MySQL 客户端库。

  • Connector/Node.js提供了一个异步 API,用于使用 X 协议从 Node.js 应用程序连接到 MySQL。Connector/Node.js 支持管理数据库会话和模式,处理 MySQL 文档存储集合,并使用原始 SQL 语句。

MySQL C API

要直接在 C 应用程序中使用 MySQL,C API 通过libmysqlclient客户端库提供了对 MySQL 客户端/服务器协议的低级访问。这是连接到 MySQL 服务器实例的主要方法,被 MySQL 命令行客户端和这里详细介绍的许多 MySQL 连接器和第三方 API 所使用。

libmysqlclient包含在 MySQL 发行版中。

另请参阅 MySQL C API 实现。

要从 C 应用程序访问 MySQL,或者为本章中未支持的语言构建与 MySQL 的接口,C API 是起点。有许多程序员工具可用于帮助处理此过程;请参阅第 6.7 节,“程序开发工具”。

第三方 MySQL API

本章描述的其余 API 提供了从特定应用程序语言到 MySQL 的接口。这些第三方解决方案并非由 Oracle 开发或支持。这里仅提供它们的使用和能力的基本信息供参考。

所有第三方语言 API 都是使用两种方法之一开发的,使用libmysqlclient或通过实现本机驱动程序。这两种解决方案提供不同的好处:

  • 使用libmysqlclient完全兼容 MySQL,因为它使用与 MySQL 客户端应用程序相同的库。但是,功能集仅限于通过libmysqlclient公开的实现和接口,性能可能较低,因为数据在本机语言和 MySQL API 组件之间进行复制。

  • 本机驱动程序是完全在主机语言或环境中实现 MySQL 网络协议的驱动程序。本机驱动程序速度快,因为在组件之间的数据复制较少,并且可以提供标准 MySQL API 无法提供的高级功能。本机驱动程序也更容易供最终用户构建和部署,因为构建本机驱动程序组件不需要 MySQL 客户端库的副本。

表 31.1,“MySQL API 和接口”列出了许多可用于 MySQL 的库和接口。

表 31.1 MySQL API 和接口

环境 API 类型 备注
Ada GNU Ada MySQL 绑定 libmysqlclient 请参阅GNU Ada 的 MySQL 绑定
C C API libmysqlclient 请参阅 MySQL 8.0 C API 开发人员指南。
C++ 连接器/C++ libmysqlclient 请参阅 MySQL Connector/C++ 8.3 开发人员指南。
MySQL++ libmysqlclient 请参阅MySQL++网站
MySQL wrapped libmysqlclient 查看MySQL wrapped
Cocoa MySQL-Cocoa libmysqlclient 与 Objective-C Cocoa 环境兼容。查看mysql-cocoa.sourceforge.net/
D D 的 MySQL libmysqlclient 查看D 的 MySQL
Eiffel Eiffel MySQL libmysqlclient 查看第 31.13 节,“MySQL Eiffel 包装器”。
Erlang erlang-mysql-driver libmysqlclient 查看erlang-mysql-driver
Haskell Haskell MySQL 绑定 本地驱动程序 查看Brian O'Sullivan 的纯 Haskell MySQL 绑定
hsql-mysql libmysqlclient 查看Haskell 的 MySQL 驱动程序
Java/JDBC Connector/J 本地驱动程序 查看 MySQL Connector/J 8.0 开发者指南。
Kaya MyDB libmysqlclient 查看MyDB
Lua LuaSQL libmysqlclient 查看LuaSQL
.NET/Mono Connector/NET 本地驱动程序 查看 MySQL Connector/NET 开发者指南。
Objective Caml Objective Caml MySQL 绑定 libmysqlclient 查看Objective Caml 的 MySQL 绑定
Octave GNU Octave 的数据库绑定 libmysqlclient 查看GNU Octave 的数据库绑定
ODBC Connector/ODBC libmysqlclient 查看 MySQL Connector/ODBC 开发者指南。
Perl DBI/DBD::mysql libmysqlclient 查看第 31.9 节,“MySQL Perl API”。
Net::MySQL 本地驱动程序 查看Net::MySQL在 CPAN 上。
PHP mysqlext/mysql接口(已弃用) libmysqlclient 查看 MySQL 和 PHP。
mysqliext/mysqli接口 libmysqlclient 查看 MySQL 和 PHP。
PDO_MYSQL libmysqlclient 查看 MySQL 和 PHP。
PDO mysqlnd 本地驱动程序
Python Connector/Python 本地驱动程序 查看 MySQL Connector/Python 开发者指南。
Python Connector/Python C 扩展 libmysqlclient 查看 MySQL Connector/Python 开发者指南。
MySQLdb libmysqlclient 查看第 31.10 节,“MySQL Python API”。
Ruby mysql2 libmysqlclient 使用libmysqlclient。查看第 31.11 节,“MySQL Ruby APIs”。
Scheme Myscsh libmysqlclient 查看Myscsh
SPL sql_mysql libmysqlclient 查看SPL 中的sql_mysql
Tcl MySQLtcl libmysqlclient 查看第 31.12 节,“MySQL Tcl API”。
环境 API 类型 备注
posted @ 2024-06-23 16:29  绝不原创的飞龙  阅读(0)  评论(0编辑  收藏  举报