第27章MySQL sys Schema

目录

27.1使用sys Schema的先决条件
27.2使用sys Schema
27.3 sys Schema Progress Reporting
27.4 sys Schema对象参考
27.4.1 sys Schema Object Index
27.4.2 sys架构表和触发器
27.4.3 sys Schema Views
27.4.4 sys Schema存储过程
27.4.5 sys Schema存储函数

MySQL 8.0包含 sys 模式,这是一组对象,可帮助DBA和开发人员解释性能模式收集的数据。 sys 模式对象可用于典型的调优和诊断用例。 此架构中的对象包括:

对于新安装, sys 如果将 mysqld --initialize or --initialize-insecure 选项 一起 使用 ,则 在数据目录初始化期间默认安装模式 如果不需要,可以 sys 在初始化后手动 删除 架构(如果不需要)。

如果 sys 存在模式但没有 version 视图, 则MySQL升级过程会产生错误 ,前提是缺少此视图表示用户创建的 sys 模式。 要在这种情况下升级,请先删除或重命名现有 sys 架构。

sys 架构对象有一个 DEFINER 'mysql.sys'@'localhost' 使用专用 mysql.sys 帐户可避免DBA重命名或删除 root 帐户时 出现的问题

27.1使用sys Schema的先决条件

在使用 sys 模式 之前 ,必须满足本节中描述的先决条件。

由于 sys 架构提供了访问性能架构的替代方法,因此必须启用性能架构才能使 sys 架构正常工作。 请参见 第26.3节“性能模式启动配置”

要完全访问 sys 架构,用户必须具有以下权限:

还必须拥有 sys 架构对象 底层 对象的 权限

必须启用某些性能架构工具和使用者,并且(对于仪器)需要定时以充分利用 sys 架构功能:

  • 所有 wait 乐器

  • 所有 stage 乐器

  • 所有 statement 乐器

  • xxx_current xxx_history_long 所有活动的消费者

您可以使用 sys 模式本身来启用所有其他工具和使用者:

CALL sys.ps_setup_enable_instrument('wait');
CALL sys.ps_setup_enable_instrument('stage');
CALL sys.ps_setup_enable_instrument('statement');
CALL sys.ps_setup_enable_consumer('current');
CALL sys.ps_setup_enable_consumer('history_long');
注意

对于 sys 模式的 许多用途 ,默认的性能模式足以用于数据收集。 启用刚刚提到的所有仪器和消费者会对性能产生影响,因此最好只启用所需的其他配置。 另外,请记住,如果启用其他配置,则可以轻松恢复默认配置,如下所示:

CALL sys.ps_setup_reset_to_default(TRUE);

27.2使用sys Schema

您可以将 sys 模式设置为默认模式,以便不需要使用模式名称限定对其对象的引用:

MySQL的> USE sys;
数据库已更改
MySQL的> SELECT * FROM version;
+ ------------- + --------------- +
| sys_version | mysql_version |
+ ------------- + --------------- +
| 2.0.0 | 8.0.13-debug |
+ ------------- + --------------- +

(该 version 视图显示了 sys 架构和MySQL服务器版本。)

sys 在不同的模式是默认模式(或简单地显式)时 访问 模式对象,请使用模式名称限定对象引用:

MySQL的> SELECT * FROM sys.version;
+ ------------- + --------------- +
| sys_version | mysql_version |
+ ------------- + --------------- +
| 2.0.0 | 8.0.13-debug |
+ ------------- + --------------- +

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

MySQL的> SELECT * FROM sys.host_summary_by_file_io;
+ ------------ + ------- + ------------ +
| 主持人| ios | io_latency |
+ ------------ + ------- + ------------ +
| localhost | 67570 | 5.38 s |
| 背景| 3468 | 4.18 s |
+ ------------ + ------- + ------------ +

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

MySQL的> SELECT * FROM sys.x$host_summary_by_file_io;
+ ------------ + ------- + -------- +
| 主持人| ios | io_latency |
+ ------------ + ------- + -------- +
| localhost | 67574 | 5380678125144 |
| 背景| 3474 | 4758696829416 |
+ ------------ + ------- + -------- +

没有 x$ 前缀 的视图 旨在提供更加用户友好且易于人类阅读的输出。 具有 x$ 以原始形式显示相同值 前缀 的视图 更适合与对数据执行自己处理的其他工具一起使用。 有关非 视图 x$ x$ 视图 之间差异的其他信息 ,请参见 第27.4.3节“sys模式视图”

要检查 sys 模式对象定义,请使用适当的 SHOW 语句或 INFORMATION_SCHEMA 查询。 例如,要检查 session 视图和 format_bytes() 函数 的定义 ,请使用以下语句:

mysql> SHOW CREATE VIEW sys.session;
mysql>SHOW CREATE FUNCTION sys.format_bytes;

但是,这些语句以相对无格式的形式显示定义。 要以更易读的格式查看对象定义,请访问 架构开发网站 https://github.com/mysql/mysql-sys上 .sql 提供 的各个 文件 sys

默认情况下, mysqldump mysqlpump 不会 转储 sys 模式。 要生成转储文件,请 sys 使用以下任一命令在命令行上显式 命名该 架构:

mysqldump --databases --routines sys> sys_dump.sql
mysqlpump sys> sys_dump.sql

要从转储文件重新安装架构,请使用以下命令:

mysql <sys_dump.sql

27.3 sys Schema Progress Reporting

以下 sys 架构视图为长时间运行的事务提供进度报告:

PROCESSLIST
会议
X $ PROCESSLIST
X $会议

假设启用了所需的工具和使用者 progress ,这些视图 列显示了支持进度报告的阶段完成的工作百分比。

阶段进度报告要求 events_stages_current 启用消费者,以及需要进度信息的工具。 这些阶段的工具目前支持进度报告:

stage / sql /复制到tmp表
stage / innodb / alter table(结束)
stage / innodb / alter table(flush)
stage / innodb / alter table(insert)
stage / innodb / alter table(日志应用索引)
stage / innodb / alter table(日志应用表)
stage / innodb / alter table(合并排序)
stage / innodb / alter table(读取PK和内部排序)
stage / innodb / buffer pool load

对于不支持估计和完成的工作报告的阶段,或者如果未启用所需的工具或消费者,则 progress 列为 NULL

27.4 sys Schema对象参考

sys 模式包括表和触发器,视图以及存储过程和函数。 以下部分提供了每个对象的详细信息。

27.4.1 sys Schema Object Index

下表列出了 sys 架构对象,并提供了每个对象的简短描述。

表27.1 sys架构表和触发器

表或触发器名称 描述
sys_config sys 架构配置选项
sys_config_insert_set_user sys_config 插入触发器
sys_config_update_set_user sys_config 更新触发器

表27.2 sys架构视图

查看名称 描述
host_summary x$host_summary 按主机分组的语句活动,文件I / O和连接
host_summary_by_file_io x$host_summary_by_file_io 文件I / O,按主机分组
host_summary_by_file_io_type x$host_summary_by_file_io_type 文件I / O,按主机和事件类型分组
host_summary_by_stages x$host_summary_by_stages 声明阶段,按主机分组
host_summary_by_statement_latency x$host_summary_by_statement_latency 语句统计信息,按主机分组
host_summary_by_statement_type x$host_summary_by_statement_type 执行的语句,按主机和语句分组
innodb_buffer_stats_by_schema x$innodb_buffer_stats_by_schema InnoDB 缓冲区信息,按模式分组
innodb_buffer_stats_by_table x$innodb_buffer_stats_by_table InnoDB 缓冲区信息,按模式和表格分组
innodb_lock_waits x$innodb_lock_waits InnoDB 锁定信息
io_by_thread_by_latency x$io_by_thread_by_latency I / O使用者,按线程分组
io_global_by_file_by_bytes x$io_global_by_file_by_bytes 全局I / O使用者,按文件和字节分组
io_global_by_file_by_latency x$io_global_by_file_by_latency 全局I / O使用者,按文件和延迟分组
io_global_by_wait_by_bytes x$io_global_by_wait_by_bytes 全局I / O使用者,按字节分组
io_global_by_wait_by_latency x$io_global_by_wait_by_latency 全局I / O使用者,按延迟分组
latest_file_io x$latest_file_io 最新的I / O,按文件和线程分组
memory_by_host_by_current_bytes x$memory_by_host_by_current_bytes 内存使用,按主机分组
memory_by_thread_by_current_bytes x$memory_by_thread_by_current_bytes 内存使用,按线程分组
memory_by_user_by_current_bytes x$memory_by_user_by_current_bytes 内存使用,按用户分组
memory_global_by_current_bytes x$memory_global_by_current_bytes 内存使用,按分配类型分组
memory_global_total x$memory_global_total 总内存使用量
metrics 服务器指标
processlist x$processlist 处理列表信息
ps_check_lost_instrumentation 失去乐器的变量
schema_auto_increment_columns AUTO_INCREMENT 栏目信息
schema_index_statistics x$schema_index_statistics 指数统计
schema_object_overview 每个模式中的对象类型
schema_redundant_indexes 重复或冗余索引
schema_table_lock_waits x$schema_table_lock_waits 等待元数据锁定的会话
schema_table_statistics x$schema_table_statistics 表统计
schema_table_statistics_with_buffer x$schema_table_statistics_with_buffer 表统计信息,包括 InnoDB 缓冲池统计信息
schema_tables_with_full_table_scans x$schema_tables_with_full_table_scans 正在使用完整扫描访问的表
schema_unused_indexes 索引未处于活动状态
session x$session 用户会话的进程列表信息
session_ssl_status 连接SSL信息
statement_analysis x$statement_analysis 声明汇总统计
statements_with_errors_or_warnings x$statements_with_errors_or_warnings 产生错误或警告的陈述
statements_with_full_table_scans x$statements_with_full_table_scans 已完成全表扫描的语句
statements_with_runtimes_in_95th_percentile x$statements_with_runtimes_in_95th_percentile 平均运行时间最高的语句
statements_with_sorting x$statements_with_sorting 执行排序的语句
statements_with_temp_tables x$statements_with_temp_tables 使用临时表的语句
user_summary x$user_summary 用户声明和连接活动
user_summary_by_file_io x$user_summary_by_file_io 文件I / O,按用户分组
user_summary_by_file_io_type x$user_summary_by_file_io_type 文件I / O,按用户和事件分组
user_summary_by_stages x$user_summary_by_stages 按用户分组的舞台活动
user_summary_by_statement_latency x$user_summary_by_statement_latency 语句统计信息,按用户分组
user_summary_by_statement_type x$user_summary_by_statement_type 执行的语句,按用户和语句分组
version 当前 sys 架构和MySQL服务器版本
wait_classes_global_by_avg_latency x$wait_classes_global_by_avg_latency 等待类平均延迟,按事件类分组
wait_classes_global_by_latency x$wait_classes_global_by_latency 等待类总延迟,按事件类分组
waits_by_host_by_latency x$waits_by_host_by_latency 等待事件,按主机和事件分组
waits_by_user_by_latency x$waits_by_user_by_latency 等待事件,按用户和事件分组
waits_global_by_latency x$waits_global_by_latency 等待事件,按事件分组
x$ps_digest_95th_percentile_by_avg_us 帮助者查看第95百分位视图
x$ps_digest_avg_latency_distribution 帮助者查看第95百分位视图
x$ps_schema_table_statistics_io 表统计视图的帮助器视图
x$schema_flattened_keys 帮助者视图 schema_redundant_indexes

表27.3 sys Schema存储过程

程序名称 描述
create_synonym_db() 为schema创建同义词
diagnostics() 收集系统诊断信息
execute_prepared_stmt() 执行准备好的声明
ps_setup_disable_background_threads() 禁用后台线程检测
ps_setup_disable_consumer() 禁用消费者
ps_setup_disable_instrument() 禁用乐器
ps_setup_disable_thread() 禁用线程的检测
ps_setup_enable_background_threads() 启用后台线程检测
ps_setup_enable_consumer() 启用消费者
ps_setup_enable_instrument() 启用仪器
ps_setup_enable_thread() 启用线程检测
ps_setup_reload_saved() 重新加载已保存的性能架构配置
ps_setup_reset_to_default() 重置已保存的性能架构配置
ps_setup_save() 保存性能架构配置
ps_setup_show_disabled() 显示已禁用的性能架构配置
ps_setup_show_disabled_consumers() 显示已禁用的Performance Schema使用者
ps_setup_show_disabled_instruments() 显示已禁用的性能架构工具
ps_setup_show_enabled() 显示启用的性能架构配置
ps_setup_show_enabled_consumers() 显示启用的Performance Schema使用者
ps_setup_show_enabled_instruments() 显示启用的性能架构工具
ps_statement_avg_latency_histogram() 显示语句延迟直方图
ps_trace_statement_digest() 用于摘要的跟踪性能模式检测
ps_trace_thread() 转储线程的性能架构数据
ps_truncate_all_tables() 截断性能架构摘要表
statement_performance_analyzer() 在服务器上运行的语句的报告
table_exists() 表是否存在

表27.4 sys Schema存储函数

功能名称 描述
extract_schema_from_file_name() 从文件路径名中提取模式名称
extract_table_from_file_name() 从文件路径名中提取表名
format_bytes() 将字节数转换为带单位的值
format_path() 使用符号值替换路径名中的数据和临时文件目录
format_statement() 截断长语句到固定长度
format_time() 将皮秒值转换为单位值
list_add() 添加项目到列表
list_drop() 从列表中删除项目
ps_is_account_enabled() 检查帐户检测是否已启用
ps_is_consumer_enabled() 检查是否启用了使用者
ps_is_instrument_default_enabled() 检查仪器是否已启用
ps_is_instrument_default_timed() 检查仪器是否定时
ps_is_thread_instrumented() 检查线程是否已检测
ps_thread_account() 返回线程ID的帐户
ps_thread_id() 返回连接ID的线程ID
ps_thread_stack() 返回线程ID的事件信息
ps_thread_trx_info() 返回线程ID的事务信息
quote_identifier() 返回字符串作为引用标识符
sys_get_config() 返回 sys 架构配置选项
version_major() MySQL服务器主要版本号
version_minor() MySQL服务器次要版本号
version_patch() MySQL服务器补丁发布版本号

27.4.2 sys架构表和触发器

以下部分描述了 sys 模式表和触发器。

27.4.2.1 sys_config表

此表包含 sys 架构配置选项,每个选项一行。 通过更新此表所做的配置更改在客户端会话和服务器重新启动之间保持不变。

sys_config 表包含以下列:

  • variable

    配置选项名称。

  • value

    配置选项值。

  • set_time

    最近修改行的时间戳。

  • set_by

    对该行进行最近修改的帐户。 值是 NULL 指自 sys 安装架构后 未更改行

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

例如,该 statement_truncate_len 选项控制 format_statement() 函数 返回的语句的最大长度 默认值为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变量,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() 会话内的 后续调用 继续使用用户定义的变量值(32),而不是存储在表(64)中的值。

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

mysql> SET @sys.statement_truncate_len = NULL;
mysql>SELECT sys.format_statement(@stmt);
+ ------------------------------------------------- --------- +
| sys.format_statement(@stmt)|
+ ------------------------------------------------- --------- +
| SELECT变量,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() (过程本身调用 diagnostics() )。 如果选项值包含空格,则将其解释为查询。 否则,它必须是查询Performance Schema events_statements_summary_by_digest 的现有视图的名称 LIMIT 如果 statement_performance_analyzer.limit 配置选项大于0 ,则查询或视图定义中 不能有任何 子句 。默认为 NULL (未定义自定义视图)。

  • statement_truncate_len @sys.statement_truncate_len

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

其他选项可以添加到 sys_config 表中。 例如, diagnostics() execute_prepared_stmt() 过程使用该 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;

27.4.2.2 sys_config_insert_set_user触发器

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

27.4.2.3 sys_config_update_set_user触发器

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

27.4.3 sys Schema Views

27.4.3.1 host_summary和x $ host_summary视图
27.4.3.2 host_summary_by_file_io和x $ host_summary_by_file_io视图
27.4.3.3 host_summary_by_file_io_type和x $ host_summary_by_file_io_type视图
27.4.3.4 host_summary_by_stages和x $ host_summary_by_stages视图
27.4.3.5 host_summary_by_statement_latency和x $ host_summary_by_statement_latency视图
27.4.3.6 host_summary_by_statement_type和x $ host_summary_by_statement_type视图
27.4.3.7 innodb_buffer_stats_by_schema和x $ innodb_buffer_stats_by_schema视图
27.4.3.8 innodb_buffer_stats_by_table和x $ innodb_buffer_stats_by_table视图
27.4.3.9 innodb_lock_waits和x $ innodb_lock_waits视图
27.4.3.10 io_by_thread_by_latency和x $ io_by_thread_by_latency视图
27.4.3.11 io_global_by_file_by_bytes和x $ io_global_by_file_by_bytes视图
27.4.3.12 io_global_by_file_by_latency和x $ io_global_by_file_by_latency视图
27.4.3.13 io_global_by_wait_by_bytes和x $ io_global_by_wait_by_bytes视图
27.4.3.14 io_global_by_wait_by_latency和x $ io_global_by_wait_by_latency视图
27.4.3.15 latest_file_io和x $ latest_file_io视图
27.4.3.16 memory_by_host_by_current_bytes和x $ memory_by_host_by_current_bytes视图
27.4.3.17 memory_by_thread_by_current_bytes和x $ memory_by_thread_by_current_bytes视图
27.4.3.18 memory_by_user_by_current_bytes和x $ memory_by_user_by_current_bytes视图
27.4.3.19 memory_global_by_current_bytes和x $ memory_global_by_current_bytes视图
27.4.3.20 memory_global_total和x $ memory_global_total视图
27.4.3.21指标视图
27.4.3.22 processlist和x $ processlist视图
27.4.3.23 ps_check_lost_instrumentation视图
27.4.3.24 schema_auto_increment_columns视图
27.4.3.25 schema_index_statistics和x $ schema_index_statistics视图
27.4.3.26 schema_object_overview视图
27.4.3.27 schema_redundant_indexes和x $ schema_flattened_keys视图
27.4.3.28 schema_table_lock_waits和x $ schema_table_lock_waits视图
27.4.3.29 schema_table_statistics和x $ schema_table_statistics视图
27.4.3.30 schema_table_statistics_with_buffer和x $ schema_table_statistics_with_buffer视图
27.4.3.31 schema_tables_with_full_table_scans和x $ schema_tables_with_full_table_scans视图
27.4.3.32 schema_unused_indexes视图
27.4.3.33会话和x $会话视图
27.4.3.34 session_ssl_status视图
27.4.3.35 statement_analysis和x $ statement_analysis视图
27.4.3.36 statements_with_errors_or_warnings和x $ statements_with_errors_or_warnings视图
27.4.3.37 statements_with_full_table_scans和x $ statements_with_full_table_scans视图
27.4.3.38 statements_with_runtimes_in_95th_percentile和x $ statements_with_runtimes_in_95th_percentile视图
27.4.3.39 statements_with_sorting和x $ statements_with_sorting视图
27.4.3.40 statements_with_temp_tables和x $ statements_with_temp_tables视图
27.4.3.41 user_summary和x $ user_summary视图
27.4.3.42 user_summary_by_file_io和x $ user_summary_by_file_io视图
27.4.3.43 user_summary_by_file_io_type和x $ user_summary_by_file_io_type视图
27.4.3.44 user_summary_by_stages和x $ user_summary_by_stages视图
27.4.3.45 user_summary_by_statement_latency和x $ user_summary_by_statement_latency视图
27.4.3.46 user_summary_by_statement_type和x $ user_summary_by_statement_type视图
27.4.3.47版本视图
27.4.3.48 wait_classes_global_by_avg_latency和x $ wait_classes_global_by_avg_latency视图
27.4.3.49 wait_classes_global_by_latency和x $ wait_classes_global_by_latency视图
27.4.3.50 waits_by_host_by_latency和x $ waits_by_host_by_latency视图
27.4.3.51 waits_by_user_by_latency和x $ waits_by_user_by_latency视图
27.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;
+ ------------ + ------- + ------------ +
| 主持人| ios | io_latency |
+ ------------ + ------- + ------------ +
| localhost | 67570 | 5.38 s |
| 背景| 3468 | 4.18 s |
+ ------------ + ------- + ------------ +

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

MySQL的> SELECT * FROM sys.x$host_summary_by_file_io;
+ ------------ + ------- + -------- +
| 主持人| ios | io_latency |
+ ------------ + ------- + -------- +
| localhost | 67574 | 5380678125144 |
| 背景| 3474 | 4758696829416 |
+ ------------ + ------- + -------- +

没有 x$ 前缀 的视图 旨在提供更加用户友好且更易于阅读的输出。 具有 x$ 以原始形式显示相同值 前缀 的视图 更适合与对数据执行自己处理的其他工具一起使用。

没有 x$ 前缀的 x$ 视图与这些方式中 的相应 视图不同:

27.4.3.1 host_summary和x $ host_summary视图

这些视图汇总了按主机分组的语句活动,文件I / O和连接。

host_summary x$host_summary 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • statements

    主机的语句总数。

  • statement_latency

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

  • statement_avg_latency

    主机每个timed语句的平均等待时间。

  • table_scans

    主机的表扫描总数。

  • file_ios

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

  • file_io_latency

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

  • current_connections

    主机的当前连接数。

  • total_connections

    主机的连接总数。

  • unique_users

    主机的不同用户数。

  • current_memory

    当前为主机分配的内存量。

  • total_memory_allocated

    主机分配的内存总量。

27.4.3.2 host_summary_by_file_io和x $ host_summary_by_file_io视图

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

host_summary_by_file_io x$host_summary_by_file_io 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • ios

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

  • io_latency

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

27.4.3.3 host_summary_by_file_io_type和x $ host_summary_by_file_io_type视图

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

host_summary_by_file_io_type x$host_summary_by_file_io_type 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • event_name

    文件I / O事件名称。

  • total

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

  • total_latency

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

  • max_latency

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

27.4.3.4 host_summary_by_stages和x $ host_summary_by_stages视图

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

host_summary_by_stages x$host_summary_by_stages 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • event_name

    舞台活动名称。

  • total

    主机的stage事件的总发生次数。

  • total_latency

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

  • avg_latency

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

27.4.3.5 host_summary_by_statement_latency和x $ host_summary_by_statement_latency视图

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

host_summary_by_statement_latency x$host_summary_by_statement_latency 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • total

    主机的语句总数。

  • total_latency

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

  • max_latency

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

  • lock_latency

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

  • rows_sent

    主机语句返回的总行数。

  • rows_examined

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

  • rows_affected

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

  • full_scans

    按主机语句的全表扫描总数。

27.4.3.6 host_summary_by_statement_type和x $ host_summary_by_statement_type视图

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

host_summary_by_statement_type x$host_summary_by_statement_type 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • statement

    语句事件名称的最后一个组成部分。

  • total

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

  • total_latency

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

  • max_latency

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

  • lock_latency

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

  • rows_sent

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

  • rows_examined

    通过发生主机的语句事件从存储引擎读取的总行数。

  • rows_affected

    受主机的语句事件发生影响的总行数。

  • full_scans

    按主机的语句事件发生的全表扫描总数。

27.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_schema x$innodb_buffer_stats_by_schema 意见有这些列:

  • object_schema

    对象的模式名称,或者 InnoDB System 表是否属于 InnoDB 存储引擎。

  • allocated

    为架构分配的总字节数。

  • data

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

  • pages

    为架构分配的总页数。

  • pages_hashed

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

  • pages_old

    为架构分配的旧页面总数。

  • rows_cached

    架构的缓存行总数。

27.4.3.8 innodb_buffer_stats_by_table和x $ innodb_buffer_stats_by_table视图

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

警告

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

innodb_buffer_stats_by_table x$innodb_buffer_stats_by_table 意见有这些列:

  • object_schema

    对象的模式名称,或者 InnoDB System 表是否属于 InnoDB 存储引擎。

  • object_name

    表名。

  • allocated

    为表分配的总字节数。

  • data

    为表分配的数据字节数。

  • pages

    为表分配的总页数。

  • pages_hashed

    为表分配的散列页数。

  • pages_old

    为表分配的旧页数。

  • rows_cached

    表的缓存行数。

27.4.3.9 innodb_lock_waits和x $ innodb_lock_waits视图

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

innodb_lock_waits x$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 要执行 语句,以终止运行阻塞语句的会话。

27.4.3.10 io_by_thread_by_latency和x $ io_by_thread_by_latency视图

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

io_by_thread_by_latency x$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

27.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_bytes x$io_global_by_file_by_bytes 意见有这些列:

  • file

    文件路径名。

  • count_read

    文件的读取事件总数。

  • total_read

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

  • avg_read

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

  • count_write

    文件的写事件总数。

  • total_written

    写入文件的总字节数。

  • avg_write

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

  • total

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

  • write_pct

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

27.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_latency x$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事件的总等待时间。

27.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_bytes x$io_global_by_wait_by_bytes 意见有这些列:

  • event_name

    I / O事件名称, wait/io/file/ 前缀已剥离。

  • 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事件读取和写入的总字节数。

27.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_latency x$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事件的每次写入的平均字节数。

27.4.3.15 latest_file_io和x $ latest_file_io视图

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

latest_file_io x$latest_file_io 意见有这些列:

  • thread

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

  • file

    文件路径名。

  • latency

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

  • operation

    操作类型。

  • requested

    为文件I / O事件请求的数据字节数。

27.4.3.16 memory_by_host_by_current_bytes和x $ memory_by_host_by_current_bytes视图

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

memory_by_host_by_current_bytes x$memory_by_host_by_current_bytes 意见有这些列:

  • host

    客户端连接的主机。 假定 HOST 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • current_count_used

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

  • current_allocated

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

  • current_avg_alloc

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

  • current_max_alloc

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

  • total_allocated

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

27.4.3.17 memory_by_thread_by_current_bytes和x $ memory_by_thread_by_current_bytes视图

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

memory_by_thread_by_current_bytes x$memory_by_thread_by_current_bytes 意见有这些列:

  • thread_id

    线程ID。

  • user

    线程用户或线程名称。

  • current_count_used

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

  • current_allocated

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

  • current_avg_alloc

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

  • current_max_alloc

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

  • total_allocated

    线程的总内存分配(以字节为单位)。

27.4.3.18 memory_by_user_by_current_bytes和x $ memory_by_user_by_current_bytes视图

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

memory_by_user_by_current_bytes x$memory_by_user_by_current_bytes 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • current_count_used

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

  • current_allocated

    尚未为用户释放的当前已分配字节数。

  • current_avg_alloc

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

  • current_max_alloc

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

  • total_allocated

    用户的总内存分配(以字节为单位)。

27.4.3.19 memory_global_by_current_bytes和x $ memory_global_by_current_bytes视图

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

memory_global_by_current_bytes x$memory_global_by_current_bytes 意见有这些列:

  • event_name

    内存事件名称。

  • current_count

    事件的总发生次数。

  • current_alloc

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

  • current_avg_alloc

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

  • high_count

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

  • high_alloc

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

  • high_avg_alloc

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

27.4.3.20 memory_global_total和x $ memory_global_total视图

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

memory_global_total x$memory_global_total 意见有这些列:

  • total_allocated

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

27.4.3.21指标视图

此视图总结了MySQL服务器度量标准,以显示变量名称,值,类型以及是否已启用它们。 默认情况下,行按变量类型和名称排序。

metrics 视图包含以下信息:

  • Performance Schema global_status 表中的 全局状态变量

  • InnoDB INFORMATION_SCHEMA INNODB_METRICS 表中的 指标

  • 当前和总内存分配,基于性能模式内存检测

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

global_status INNODB_METRICS 之间存在一些信息重复, metrics 视图消除了这些信息。

metrics 视图包含以下列:

  • Variable_name

    度量标准名称。 度量标准类型确定从中获取名称的来源:

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

    • 对于 InnoDB 指标: 表格 NAME INNODB_METRICS

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

  • Variable_value

    指标值。 度量标准类型确定从中获取值的源:

  • Type

    指标类型:

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

    • 对于 InnoDB 指标: InnoDB Metrics - % ,其中 % 替换 SUBSYSTEM INNODB_METRICS 的值

    • 对于内存指标: Performance Schema

    • 目前的时间: System Time

  • Enabled

    是否启用了指标:

    • 对于全局状态变量: YES

    • InnoDB 指标: YES 如果 STATUS 所述的列 INNODB_METRICS 表是 enabled NO 否则

    • 对于内存指标: NO ,, YES PARTIAL (当前 PARTIAL 仅针对内存指标发生,表示并非所有 memory/% 仪器都已启用;性能模式内存仪器始终启用)

    • 目前的时间: YES

27.4.3.22 processlist和x $ processlist视图

这些视图总结了进程列表信息。 它们提供比 SHOW PROCESSLIST 声明和 INFORMATION_SCHEMA PROCESSLIST 表格 更完整的信息 ,并且也是非阻塞的。 默认情况下,行按降序处理时间和降序等待时间排序。

这里的列描述很简短。 有关其他信息,请参见 第26.12.17.5节“线程表” 中的性能模式 threads 的说明

processlist x$processlist 意见有这些列:

  • thd_id

    线程ID。

  • conn_id

    连接ID。

  • user

    线程用户或线程名称。

  • db

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

  • command

    对于前台线程,线程代表客户端执行的命令类型,或者 Sleep 会话是否空闲。

  • state

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

  • time

    线程处于当前状态的时间(以秒为单位)。

  • current_statement

    线程正在执行的语句,或者 NULL 它是否正在执行任何语句。

  • statement_latency

    声明执行了多长时间。

  • progress

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

  • lock_latency

    当前语句等待锁定所花费的时间。

  • 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

    客户端程序名称。

27.4.3.23 ps_check_lost_instrumentation视图

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

ps_check_lost_instrumentation 视图包含以下列:

  • variable_name

    Performance Schema状态变量名称,指示丢失了哪种类型的仪器。

  • variable_value

    丢失的工具数量。

27.4.3.24 schema_auto_increment_columns视图

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

在这些模式中的表被排除在视图输出: mysql sys INFORMATION_SCHEMA performance_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

    列的已使用值与允许值的比率。 这表明有多少值的序列被 用完了”。

27.4.3.25 schema_index_statistics和x $ schema_index_statistics视图

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

schema_index_statistics x$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

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

27.4.3.26 schema_object_overview视图

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

注意

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

schema_object_overview 视图包含以下列:

  • db

    架构名称。

  • object_type

    对象类型: BASE TABLE INDEX (index_type) EVENT FUNCTION PROCEDURE TRIGGER VIEW

  • count

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

27.4.3.27 schema_redundant_indexes和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

    索引中列的名称。

27.4.3.28 schema_table_lock_waits和x $ schema_table_lock_waits视图

这些视图显示阻止等待元数据锁定的会话以及阻止它们的内容。

这里的列描述很简短。 有关其他信息,请参见 第26.12.12.3节“metadata_locks表” 中的性能模式 metadata_locks 的说明。

schema_table_lock_waits x$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 要执行 语句,以终止运行阻塞语句的会话。

27.4.3.29 schema_table_statistics和x $ schema_table_statistics视图

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

这些视图使用帮助器视图 x$ps_schema_table_statistics_io

schema_table_statistics x$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请求的总等待时间。

27.4.3.30 schema_table_statistics_with_buffer和x $ schema_table_statistics_with_buffer视图

这些视图汇总了表统计信息,包括 InnoDB 缓冲池统计信息。 默认情况下,行按降序总等待时间排序(具有最多争用的表)。

这些视图使用帮助器视图 x$ps_schema_table_statistics_io

schema_table_statistics_with_buffer x$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 缓存行 总数

27.4.3.31 schema_tables_with_full_table_scans和x $ schema_tables_with_full_table_scans视图

这些视图显示使用全表扫描访问哪些表。 默认情况下,行按扫描的下行进行排序。

schema_tables_with_full_table_scans x$schema_tables_with_full_table_scans 意见有这些列:

  • object_schema

    架构名称。

  • object_name

    表名。

  • rows_full_scanned

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

  • latency

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

27.4.3.32 schema_unused_indexes视图

这些视图显示没有事件的索引,表示它们未被使用。 默认情况下,行按架构和表排序。

当服务器启动并处理足够长的时间以使其工作负载具有代表性时,此视图最有用。 否则,此视图中存在索引可能没有意义。

schema_unused_indexes 视图包含以下列:

  • object_schema

    架构名称。

  • object_name

    表名。

  • index_name

    未使用的索引名称。

27.4.3.33会话和x $会话视图

这些视图与 processlist 类似 x$processlist ,但它们会过滤掉后台进程以仅显示用户会话。 有关列的说明,请参见 第27.4.3.22节“processlist和x $ processlist视图”

27.4.3.34 session_ssl_status视图

For each connection, this view displays the SSL version, cipher, and count of reused SSL sessions.

The session_ssl_status view has these columns:

  • thread_id

    The thread ID for the connection.

  • ssl_version

    The version of SSL used for the connection.

  • ssl_cipher

    The SSL cipher used for the connection.

  • ssl_sessions_reused

    连接的重用SSL会话数。

27.4.3.35 statement_analysis和x $ statement_analysis视图

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

statement_analysis x$statement_analysis 意见有这些列:

  • query

    规范化的语句字符串。

  • db

    语句的缺省数据库, NULL 如果没有,则为 缺省数据库

  • full_scan

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

  • exec_count

    语句执行的总次数。

  • err_count

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

  • warn_count

    声明出现时产生的警告总数。

  • total_latency

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

  • max_latency

    语句定时发生的最大单个等待时间。

  • avg_latency

    每次定时发生的平均等待时间。

  • lock_latency

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

  • 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

    排序合并的总数除以语句的出现次数。

  • digest

    声明摘要。

  • first_seen

    首次看到该陈述的时间。

  • last_seen

    最近看到该陈述的时间。

27.4.3.36 statements_with_errors_or_warnings和x $ statements_with_errors_or_warnings视图

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

statements_with_errors_or_warnings x$statements_with_errors_or_warnings 意见有这些列:

  • query

    规范化的语句字符串。

  • db

    语句的缺省数据库, NULL 如果没有,则为 缺省数据库

  • exec_count

    语句执行的总次数。

  • errors

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

  • error_pct

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

  • warnings

    声明出现时产生的警告总数。

  • warning_pct

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

  • first_seen

    首次看到该陈述的时间。

  • last_seen

    最近看到该陈述的时间。

  • digest

    声明摘要。

27.4.3.37 statements_with_full_table_scans和x $ statements_with_full_table_scans视图

这些视图显示已执行全表扫描的规范化语句。 默认情况下,行按完整扫描的下降百分比和总延迟下降进行排序。

statements_with_full_table_scans x$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

    声明摘要。

27.4.3.38 statements_with_runtimes_in_95th_percentile和x $ statements_with_runtimes_in_95th_percentile视图

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

两个视图都使用两个帮助器视图, x$ps_digest_avg_latency_distribution x$ps_digest_95th_percentile_by_avg_us

statements_with_runtimes_in_95th_percentile x$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

    声明摘要。

27.4.3.39 statements_with_sorting和x $ statements_with_sorting视图

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

statements_with_sorting x$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

    声明摘要。

27.4.3.40 statements_with_temp_tables和x $ statements_with_temp_tables视图

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

statements_with_temp_tables x$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

    声明摘要。

27.4.3.41 user_summary和x $ user_summary视图

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

user_summary x$user_summary 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • statements

    用户的语句总数。

  • statement_latency

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

  • statement_avg_latency

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

  • table_scans

    用户的表扫描总数。

  • file_ios

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

  • file_io_latency

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

  • current_connections

    用户的当前连接数。

  • total_connections

    用户的连接总数。

  • unique_hosts

    用户连接所源自的不同主机的数量。

  • current_memory

    当前为用户分配的内存量。

  • total_memory_allocated

    为用户分配的内存总量。

27.4.3.42 user_summary_by_file_io和x $ user_summary_by_file_io视图

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

user_summary_by_file_io x$user_summary_by_file_io 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • ios

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

  • io_latency

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

27.4.3.43 user_summary_by_file_io_type和x $ user_summary_by_file_io_type视图

这些视图汇总了按用户和事件类型分组的文件I / O. 默认情况下,行按用户排序并降低总延迟。

user_summary_by_file_io_type x$user_summary_by_file_io_type 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • event_name

    文件I / O事件名称。

  • total

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

  • latency

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

  • max_latency

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

27.4.3.44 user_summary_by_stages和x $ user_summary_by_stages视图

这些视图汇总了按用户分组的阶段。 默认情况下,行按用户排序并降低总阶段延迟。

user_summary_by_stages x$user_summary_by_stages 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • event_name

    舞台活动名称。

  • total

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

  • total_latency

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

  • avg_latency

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

27.4.3.45 user_summary_by_statement_latency和x $ user_summary_by_statement_latency视图

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

user_summary_by_statement_latency x$user_summary_by_statement_latency 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • total

    用户的语句总数。

  • total_latency

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

  • max_latency

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

  • lock_latency

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

  • rows_sent

    用户语句返回的总行数。

  • rows_examined

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

  • rows_affected

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

  • full_scans

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

27.4.3.46 user_summary_by_statement_type和x $ user_summary_by_statement_type视图

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

user_summary_by_statement_type x$user_summary_by_statement_type 意见有这些列:

  • user

    客户端用户名。 假定 USER 基础Performance Schema表中 列的 行用于 NULL 后台线程,并使用主机名报告 background

  • statement

    语句事件名称的最后一个组成部分。

  • total

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

  • total_latency

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

  • max_latency

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

  • lock_latency

    由用户的语句事件的定时发生等待锁定的总时间。

  • rows_sent

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

  • rows_examined

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

  • rows_affected

    受用户发生语句事件影响的总行数。

  • full_scans

    按用户的语句事件的事件发生的全表扫描总数。

27.4.3.47版本视图

此视图提供当前 sys 架构和MySQL服务器版本。

version 视图包含以下列:

  • sys_version

    sys 架构版本。

  • mysql_version

    MySQL服务器版本。

27.4.3.48 wait_classes_global_by_avg_latency和x $ wait_classes_global_by_avg_latency视图

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

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

wait_classes_global_by_avg_latency x$wait_classes_global_by_avg_latency 意见有这些列:

  • event_class

    活动类。

  • total

    类中事件的总发生次数。

  • total_latency

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

  • min_latency

    类中事件发生的最小单个等待时间。

  • avg_latency

    班级中每次发生事件的平均等待时间。

  • max_latency

    类中事件发生的最长单个等待时间。

27.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_latency x$wait_classes_global_by_latency 意见有这些列:

  • event_class

    活动类。

  • total

    类中事件的总发生次数。

  • total_latency

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

  • min_latency

    类中事件发生的最小单个等待时间。

  • avg_latency

    班级中每次发生事件的平均等待时间。

  • max_latency

    类中事件发生的最长单个等待时间。

27.4.3.50 waits_by_host_by_latency和x $ waits_by_host_by_latency视图

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

waits_by_host_by_latency x$waits_by_host_by_latency 意见有这些列:

  • host

    发起连接的主机。

  • event

    事件名称。

  • total

    主机事件的总发生次数。

  • total_latency

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

  • avg_latency

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

  • max_latency

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

27.4.3.51 waits_by_user_by_latency和x $ waits_by_user_by_latency视图

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

waits_by_user_by_latency x$waits_by_user_by_latency 意见有这些列:

  • user

    与连接关联的用户。

  • event

    事件名称。

  • total

    用户事件的总发生次数。

  • total_latency

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

  • avg_latency

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

  • max_latency

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

27.4.3.52 waits_global_by_latency和x $ waits_global_by_latency视图

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

waits_global_by_latency x$waits_global_by_latency 意见有这些列:

  • events

    事件名称。

  • total

    事件的总发生次数。

  • total_latency

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

  • avg_latency

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

  • max_latency

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

27.4.4 sys Schema存储过程

以下部分描述了 sys 模式存储过程。

27.4.4.1 create_synonym_db()过程

给定模式名称,此过程将创建一个同义词模式,其中包含引用原始模式中所有表和视图的视图。 例如,这可用于创建一个较短的名称,通过该名称引用具有长名称(例如 info 而不是 INFORMATION_SCHEMA )的模式。

参数
  • in_db_name VARCHAR(64) :要为其创建同义词的架构的名称。

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

MySQL的> SHOW DATABASES;
+ -------------------- +
| 数据库|
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| sys |
| 世界|
+ -------------------- +
MySQL的> CALL sys.create_synonym_db('INFORMATION_SCHEMA', 'info');
+ --------------------------------------- +
| 摘要|
+ --------------------------------------- +
| 在info数据库中创建了63个视图
+ --------------------------------------- +
MySQL的> SHOW DATABASES;
+ -------------------- +
| 数据库|
+ -------------------- +
| information_schema |
| 信息|
| mysql |
| performance_schema |
| sys |
| 世界|
+ -------------------- +
MySQL的> SHOW FULL TABLES FROM info;
+ --------------------------------------- + --------- --- +
| Tables_in_info | Table_type |
+ --------------------------------------- + --------- --- +
| character_sets | 查看|
| collat​​ion_character_set_applicability | 查看|
| 整理| 查看|
| column_privileges | 查看|
| 列| 查看|
...

27.4.4.2诊断()过程

创建当前服务器状态的报告以进行诊断。

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

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

  • metrics 视图中的 信息 (参见 第27.4.3.21节“度量标准视图”

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

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

  • 复制状态(主服务器和从服务器)

某些sys模式视图计算为初始(可选),总体和delta值:

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

  • 整体视图是 diagnostics() 过程 结束时视图的内容 此输出与用于delta视图的结束值相同。 始终包含整体视图。

  • 增量视图是从过程执行的开始到结束的差异。 最小值和最大值分别是端视图中的最小值和最大值。 它们不一定反映监测期间的最小值和最大值。 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 设置,这会对性能产生很大影响。

    使用 medium full 设置需要 SUPER 特权。

    如果 current 选择了 除以外 的设置,则在过程结束时恢复当前设置。

配置选项

diagnostics() 可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见 第27.4.2.1节“sys_config表” ):

  • debug @sys.debug

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

  • 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

  • statement_truncate_len @sys.statement_truncate_len

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

创建一个诊断报告,每30秒启动一次迭代,并使用当前的性能模式设置运行最多120秒:

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

要在运行时捕获 diagnostics() 文件中过程 的输出 ,请使用 mysql 客户端 命令(请参见 第4.5.1.2节“mysql客户端命令” ): tee filename notee

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

27.4.4.3 execute_prepared_stmt()过程

将SQL语句作为字符串,将其作为预准备语句执行。 准备好的语句在执行后被释放,因此不需要重用。 因此,此过程主要用于一次性执行动态语句。

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

参数
  • in_query LONGTEXT CHARACTER SET utf8 :要执行的语句字符串。

配置选项

execute_prepared_stmt() 可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见 第27.4.2.1节“sys_config表” ):

  • debug @sys.debug

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

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

27.4.4.4 ps_setup_disable_background_threads()过程

禁用所有后台线程的性能架构工具。 生成一个结果集,指示禁用了多少后台线程。 已经禁用的线程不计算在内。

参数

没有。

MySQL的> CALL sys.ps_setup_disable_background_threads();
+ -------------------------------- +
| 摘要|
+ -------------------------------- +
| 禁用24个背景线程|
+ -------------------------------- +

27.4.4.5 ps_setup_disable_consumer()过程

禁用名称包含参数的Performance Schema使用者。 生成一个结果集,指示已禁用的消费者数量。 已经残疾的消费者不计算在内。

参数
  • consumer VARCHAR(128) :用于匹配使用者名称的值,这些名称通过 %consumer% 用作 LIKE 模式匹配 的操作数来 标识

    '' 匹配所有消费者的 价值

禁用所有语句使用者:

MySQL的> CALL sys.ps_setup_disable_consumer('statement');
+ ---------------------- +
| 摘要|
+ ---------------------- +
| 残疾人4消费者|
+ ---------------------- +

27.4.4.6 ps_setup_disable_instrument()过程

禁用名称包含参数的Performance Schema工具。 生成一个结果集,指示已禁用的仪器数量。 已经禁用的工具不计算在内。

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

    '' 匹配所有乐器的

禁用特定仪器:

MySQL的> CALL sys.ps_setup_disable_instrument('wait/lock/metadata/sql/mdl');
+ ----------------------- +
| 摘要|
+ ----------------------- +
| 禁用1个仪器|
+ ----------------------- +

禁用所有互斥锁乐器:

MySQL的> CALL sys.ps_setup_disable_instrument('mutex');
+ -------------------------- +
| 摘要|
+ -------------------------- +
| 禁用177仪器|
+ -------------------------- +

27.4.4.7 ps_setup_disable_thread()过程

给定连接ID,禁用该线程的性能模式检测。 生成一个结果集,指示已禁用的线程数。 已经禁用的线程不计算在内。

参数
  • in_connection_id BIGINT :连接ID。 这是 PROCESSLIST_ID Performance Schema threads 表的 Id SHOW PROCESSLIST 输出 列中 给出的类型的值

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

MySQL的> CALL sys.ps_setup_disable_thread(225);
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +

禁用当前连接:

MySQL的> CALL sys.ps_setup_disable_thread(CONNECTION_ID());
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +

27.4.4.8 ps_setup_enable_background_threads()过程

为所有后台线程启用Performance Schema检测。 生成一个结果集,指示启用了多少后台线程。 已经启用的线程不计算在内。

参数

没有。

MySQL的> CALL sys.ps_setup_enable_background_threads();
+ ------------------------------- +
| 摘要|
+ ------------------------------- +
| 启用24个后台线程|
+ ------------------------------- +

27.4.4.9 ps_setup_enable_consumer()过程

使用包含参数的名称的Performance Schema使用者。 生成一个结果集,指示启用了多少个使用者。 已经启用的消费者不计算在内。

参数
  • consumer VARCHAR(128) :用于匹配使用者名称的值,这些名称通过 %consumer% 用作 LIKE 模式匹配 的操作数来 标识

    '' 匹配所有消费者的 价值

启用所有语句使用者:

MySQL的> CALL sys.ps_setup_enable_consumer('statement');
+ --------------------- +
| 摘要|
+ --------------------- +
| 启用4个消费者|
+ --------------------- +

27.4.4.10 ps_setup_enable_instrument()过程

启用名称包含参数的Performance Schema工具。 生成一个结果集,指示启用了多少仪器。 已启用的仪器不计算在内。

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

    '' 匹配所有乐器的

启用特定工具:

MySQL的> CALL sys.ps_setup_enable_instrument('wait/lock/metadata/sql/mdl');
+ ---------------------- +
| 摘要|
+ ---------------------- +
| 启用1个仪器|
+ ---------------------- +

启用所有互斥仪器:

MySQL的> CALL sys.ps_setup_enable_instrument('mutex');
+ ------------------------- +
| 摘要|
+ ------------------------- +
| 启用177个仪器|
+ ------------------------- +

27.4.4.11 ps_setup_enable_thread()过程

给定连接ID,为线程启用Performance Schema检测。 生成一个结果集,指示启用了多少个线程。 已经启用的线程不计算在内。

参数
  • in_connection_id BIGINT :连接ID。 这是 PROCESSLIST_ID Performance Schema threads 表的 Id SHOW PROCESSLIST 输出 列中 给出的类型的值

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

MySQL的> CALL sys.ps_setup_enable_thread(225);
+ ------------------ +
| 摘要|
+ ------------------ +
| 启用1个线程|
+ ------------------ +

启用当前连接:

MySQL的> CALL sys.ps_setup_enable_thread(CONNECTION_ID());
+ ------------------ +
| 摘要|
+ ------------------ +
| 启用1个线程|
+ ------------------ +

27.4.4.12 ps_setup_reload_saved()过程

使用重新加载先前在同一会话中保存的性能架构配置 ps_setup_save() 有关更多信息,请参阅的说明 ps_setup_save()

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

参数

没有。

27.4.4.13 ps_setup_reset_to_default()过程

将Performance Schema配置重置为其默认设置。

参数
  • in_verbose BOOLEAN :是否在过程执行期间显示有关每个设置阶段的信息。 这包括执行的SQL语句。

MySQL的> CALL sys.ps_setup_reset_to_default(TRUE)\G
*************************** 1。排******************** *******
状态:重置:setup_actors
删除
FROM performance_schema.setup_actors
哪里没有(HOST ='%'和USER ='%'和ROLE ='%')

*************************** 1。排******************** *******
状态:重置:setup_actors
INSERT IGNORE INTO performance_schema.setup_actors
VALUES('%','%','%')

...

27.4.4.14 ps_setup_save()过程

保存当前的性能架构配置。 这使您可以临时更改配置以进行调试或其他目的,然后通过调用 ps_setup_reload_saved() 过程 将其还原到以前的状态

要防止其他同时调用以保存配置,请 通过调用该 函数 ps_setup_save() 获取命名的咨询锁 获取超时参数以指示如果锁已存在则等待多少秒(这表示某些其他会话已保存未完成的配置)。 如果超时到期而未获得锁定,则 失败。 sys.ps_setup_save GET_LOCK() ps_setup_save() ps_setup_save()

您打算 ps_setup_reload_saved() 稍后在 同一 会话中 调用 ps_setup_save() 因为配置保存在 TEMPORARY 表中。 ps_setup_save() 删除临时表并释放锁。 如果在不调用 ps_setup_save() 情况下结束会话 ,则表和锁会自动消失。

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

参数
  • 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();

27.4.4.15 ps_setup_show_disabled()过程

显示当前禁用的所有Performance Schema配置。

参数
  • 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 | 对象| 启用| 定时|
+ ------------- + ---------------------- + --------- +  - ----- +
| 活动| mysql。%| 没有| 没有|
| 活动| performance_schema。%| 没有| 没有|
| 活动| information_schema。%| 没有| 没有|
| 功能| mysql。%| 没有| 没有|
| 功能| performance_schema。%| 没有| 没有|
| 功能| information_schema。%| 没有| 没有|
| 程序| mysql。%| 没有| 没有|
| 程序| performance_schema。%| 没有| 没有|
| 程序| information_schema。%| 没有| 没有|
| 表| mysql。%| 没有| 没有|
| 表| performance_schema。%| 没有| 没有|
| 表| information_schema。%| 没有| 没有|
| TRIGGER | mysql。%| 没有| 没有|
| TRIGGER | performance_schema。%| 没有| 没有|
| TRIGGER | information_schema。%| 没有| 没有|
+ ------------- + ---------------------- + --------- +  - ----- +

...

27.4.4.16 ps_setup_show_disabled_consumers()过程

显示当前禁用的所有Performance Schema使用者。

参数

没有。

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 |
+ ---------------------------------- +

27.4.4.17 ps_setup_show_disabled_instruments()过程

显示当前禁用的所有性能架构工具。 这可能是一个很长的清单。

参数

没有。

MySQL的> CALL sys.ps_setup_show_disabled_instruments()\G
*************************** 1。排******************** *******
disabled_instruments:wait / synch / mutex / sql / TC_LOG_MMAP :: LOCK_tc
               定时:没有
*************************** 2.排******************** *******
disabled_instruments:wait / synch / mutex / sql / THD :: LOCK_query_plan
               定时:没有
*************************** 3。排******************** *******
disabled_instruments:wait / synch / mutex / sql / MYSQL_BIN_LOG :: LOCK_commit
               定时:没有
...

27.4.4.18 ps_setup_show_enabled()过程

显示当前启用的所有Performance Schema配置。

参数
  • in_show_instruments BOOLEAN :是否显示启用的乐器。 这可能是一个很长的清单。

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

MySQL的> CALL sys.ps_setup_show_enabled(FALSE, FALSE);
+ ---------------------------- +
| performance_schema_enabled |
+ ---------------------------- +
| 1 |
+ ---------------------------- +
1排(0.01秒)

+ --------------- +
| enabled_users |
+ --------------- +
| '%'@'%'|
+ --------------- +
1排(0.01秒)

+ ------------- + --------- + --------- + ------- +
| object_type | 对象| 启用| 定时|
+ ------------- + --------- + --------- + ------- +
| 活动| %。%| 是的| 是的|
| 功能| %。%| 是的| 是的|
| 程序| %。%| 是的| 是的|
| 表| %。%| 是的| 是的|
| TRIGGER | %。%| 是的| 是的|
+ ------------- + --------- + --------- + ------- +
5行(0.02秒)

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

27.4.4.19 ps_setup_show_enabled_consumers()过程

显示当前启用的所有Performance Schema使用者。

参数

没有。

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 |
+ ----------------------------- +

27.4.4.20 ps_setup_show_enabled_instruments()过程

显示当前启用的所有Performance Schema工具。 这可能是一个很长的清单。

参数

没有。

MySQL的> CALL sys.ps_setup_show_enabled_instruments()\G
*************************** 1。排******************** *******
enabled_instruments:wait / io / file / sql / map
              定时:是的
*************************** 2.排******************** *******
enabled_instruments:wait / io / file / sql / binlog
              定时:是的
*************************** 3。排******************** *******
enabled_instruments:wait / io / file / sql / binlog_cache
              定时:是的
...

27.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。排******************** *******
性能架构声明摘要平均延迟直方图:
= 1个单位
  * = 2个单位
  #= 3个单位

(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 |

  总报表:114; 铲斗:16; 铲斗尺寸:66毫秒;

27.4.4.22 ps_trace_statement_digest()过程

跟踪特定语句摘要的所有Performance Schema检测。

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

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

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

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

  • in_runtime INT :在几秒钟内运行分析多长时间。

  • in_interval DECIMAL(2,2) :以秒为单位的分析间隔(可以是小数),尝试拍摄快照。

  • in_start_fresh BOOLEAN :是否 在启动之前 截断性能模式 events_statements_history_long events_stages_history_long 表。

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

MySQL的> CALL sys.ps_trace_statement_digest('891ec6860f98ba46d89dd20b0c03652c', 10, 0.1, TRUE, TRUE);
+ -------------------- +
| 摘要统计|
+ -------------------- +
| 摘要统计|
+ -------------------- +
1排(9.11秒)

+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
| 执行| exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scans |
+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
| 21 | 4.11毫秒| 2.00毫秒| 0 | 21 | 0 | 0 |
+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
1排(9.11秒)

------------------------------------------ + ------ + -  + ----------- +
| event_name | 计数| 延迟|
------------------------------------------ + ------ + -  + ----------- +
| stage / sql / statistics | 16 | 546.92我们|
| stage / sql / freeing items | 18 | 520.11我们|
| stage / sql / init | 51 | 466.80我们|
...
| stage / sql /清理| 18 | 11.92我们|
| stage / sql / execution | 16 | 6.95我们|
------------------------------------------ + ------ + -  + ----------- +
17行(9.12秒)

+ --------------------------- +
| 最长的运行声明|
+ --------------------------- +
| 最长的运行声明|
+ --------------------------- +
1排(9.16秒)

+ ----------- ----------- + + ----------- ----------- + +  - -------------- + ------------ + ----------- +
| thread_id | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scan |
+ ----------- ----------- + + ----------- ----------- + +  - -------------- + ------------ + ----------- +
| 166646 | 618.43我们| 1.00毫秒| 0 | 1 | 0 | 0 |
+ ----------- ----------- + + ----------- ----------- + +  - -------------- + ------------ + ----------- +
1排(9.16秒)

#为清晰起见截断...
+ ------------------------------------------------- ---------------- +
| sql_text |
+ ------------------------------------------------- ---------------- +
| 选择hibeventhe0_.id为id1382_,hibeventhe0_.createdTime ... |
+ ------------------------------------------------- ---------------- +
1排(9.17秒)

------------------------------------------ + ------ + ----- +
| event_name | 延迟|
------------------------------------------ + ------ + ----- +
| stage / sql / init | 8.61我们|
| stage / sql / init | 331.07 ns |
...
| stage / sql / freeing items | 30.46我们|
| stage / sql /清理| 662.13 ns |
------------------------------------------ + ------ + ----- +
18行(9.23秒)

+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- -  + ------- +
| id | select_type | 表| 类型| possible_keys | 关键| key_len | ref | 行| 额外的|
+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- -  + ------- +
| 1 | 简单| hibeventhe0_ | const | fixedTime | fixedTime | 775 | const,const | 1 | NULL |
+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- -  + ------- +
1排(9.27秒)

查询正常,0行受影响(9.28秒)

27.4.4.23 ps_trace_thread()过程

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

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

参数
  • 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 :是否在跟踪之前重置所有Performance Schema数据。

  • 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);
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +
1排(0.00秒)

+ --------------------------------------------- +
| 信息|
+ --------------------------------------------- +
| 从THREAD_ID = 25开始的数据收集
+ --------------------------------------------- +
1排(0.03秒)

+ ------------------------------------------------- ---------- +
| 信息|
+ ------------------------------------------------- ---------- +
| 堆栈跟踪写入/tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ---------- +
1排(60.07秒)

+ ------------------------------------------------- ------------------ +
| 转换为PDF |
+ ------------------------------------------------- ------------------ +
| dot -Tpdf -o /tmp/stack_25.pdf /tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ------------------ +
1排(60.07秒)

+ ------------------------------------------------- ------------------ +
| 转换为PNG |
+ ------------------------------------------------- ------------------ +
| dot -Tpng -o /tmp/stack_25.png /tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ------------------ +
1排(60.07秒)

+ ------------------ +
| 摘要|
+ ------------------ +
| 启用1个线程|
+ ------------------ +
1排(60.32秒)

27.4.4.24 ps_truncate_all_tables()过程

截断所有性能架构摘要表,将所有聚合检测重置为快照。 生成一个结果集,指示截断了多少个表。

参数
  • in_verbose BOOLEAN :是否 TRUNCATE TABLE 在执行前 显示每个 语句。

MySQL的> CALL sys.ps_truncate_all_tables(FALSE);
+ --------------------- +
| 摘要|
+ --------------------- +
| 截断49表|
+ --------------------- +

27.4.4.25 statement_performance_analyzer()过程

创建服务器上运行的语句的报告。 视图基于总体和/或delta活动计算。

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

参数
  • in_action ENUM('snapshot', 'overall', 'delta', 'create_tmp', 'create_table', 'save', 'cleanup') :要采取的行动。 允许这些值:

    • snapshot :存储快照。 默认设置是创建Performance Schema events_statements_summary_by_digest 的当前内容的快照 通过设置 in_table ,可以覆盖它以复制指定表的内容。 快照存储在 sys 架构 tmp_digests 临时表中。

    • overall :根据指定的表的内容生成分析 in_table 对于整体分析, in_table 可以 NOW() 使用全新的快照。 这会覆盖现有快照。 使用 NULL in_table 使用现有的快照。 如果 in_table NULL 且不存在快照,则创建新快照。 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_name tbl_name 不使用任何反引号( ` )标识符引用字符。 . 数据库和表名称不支持 Periods( )。

    in_table in_action 的含义 在各个 in_action 值描述中 详细 说明。

  • in_views SET ('with_runtimes_in_95th_percentile', 'analysis', 'with_errors_or_warnings', 'with_full_table_scans', 'with_sorting', 'with_temp_tables', 'custom') :要包含哪些视图。 此参数是一个 SET 值,因此它可以包含多个视图名称,以逗号分隔。 默认设置是包括除外的所有视图 custom 允许以下值:

配置选项

statement_performance_analyzer() 可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见 第27.4.2.1节“sys_config表” ):

  • debug @sys.debug

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

  • statement_performance_analyzer.limit @sys.statement_performance_analyzer.limit

    对于没有内置限制的视图,要返回的最大行数。 默认值为100。

  • statement_performance_analyzer.view @sys.statement_performance_analyzer.view

    要使用的自定义查询或视图。 如果选项值包含空格,则将其解释为查询。 否则,它必须是查询Performance Schema events_statements_summary_by_digest 的现有视图的名称 LIMIT 如果 statement_performance_analyzer.limit 配置选项大于0 ,则查询或视图定义中 不能有任何 子句。 如果指定视图,请使用与 in_table 参数 相同的格式 默认为 NULL (未定义自定义视图)。

要创建一个报告,其中包含自上次截断以来的第95个百分点 events_statements_summary_by_digest 以及具有一分钟增量周期的查询:

  1. 创建临时表以存储初始快照。

  2. 创建初始快照。

  3. 将初始快照保存在临时表中。

  4. 等一分钟。

  5. 创建新快照。

  6. 根据新快照执行分析。

  7. 根据初始快照和新快照之间的增量执行分析。

MySQL的> CALL sys.statement_performance_analyzer('create_tmp', 'mydb.tmp_digests_ini', NULL);
查询正常,0行受影响(0.08秒)

MySQL的> CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.02秒)

MySQL的> CALL sys.statement_performance_analyzer('save', 'mydb.tmp_digests_ini', NULL);
查询正常,0行受影响(0.00秒)

MySQL的> DO SLEEP(60);
查询OK,0行受影响(1分0.00秒)

MySQL的> CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.02秒)

MySQL的> CALL sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile');
+ ----------------------------------------- +
| 下一个输出|
+ ----------------------------------------- +
| 运行时查询百分之九十五
+ ----------------------------------------- +
1排(0.05秒)

...

MySQL的> CALL sys.statement_performance_analyzer('delta', 'mydb.tmp_digests_ini', 'with_runtimes_in_95th_percentile');
+ ----------------------------------------- +
| 下一个输出|
+ ----------------------------------------- +
| 运行时查询百分之九十五
+ ----------------------------------------- +
1排(0.03秒)

...

使用全表扫描创建第95百分位查询和前10个查询的总体报告:

MySQL的> CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.01秒)                                 

MySQL的> SET @sys.statement_performance_analyzer.limit = 10;
查询正常,0行受影响(0.00秒)        

MySQL的> CALL sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile,with_full_table_scans');
+ ----------------------------------------- +
| 下一个输出|
+ ----------------------------------------- +
| 运行时查询百分之九十五
+ ----------------------------------------- +
1排(0.01秒)

...

+ ------------------------------- +
| 下一个输出|
+ ------------------------------- +
| 全表扫描的前10个查询|
+ ------------------------------- +
1排(0.09秒)

...

使用自定义视图显示按总执行时间排序的前10个查询,使用 Linux中 watch 命令 每分钟刷新视图

MySQL的> CREATE OR REPLACE VIEW 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
       ORDER BY SUM_TIMER_WAIT DESC;
查询正常,0行受影响(0.10秒)

MySQL的> CALL sys.statement_performance_analyzer('create_table', 'mydb.digests_prev', NULL);
查询正常,0行受影响(0.10秒)

壳> 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.0s:mysql sys --table -e“... 2014年12月22日10:58:51

+ ---------------------------------- +
| 下一个输出|
+ ---------------------------------- +
| 使用自定义视图排名前10的查询|
+ ---------------------------------- +
+ ------------------- ------- + ------------ + -------- + ------- + ------------- + --------------- + ------------ ------- + ------------------- + ---------------------- ------------ +
| 查询| db | exec_count | total_latency | avg_latency | rows_sent_avg | rows_examined_avg | rows_affected_avg | 消化|
+ ------------------- ------- + ------------ + -------- + ------- + ------------- + --------------- + ------------ ------- + ------------------- + ---------------------- ------------ +
...

27.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 存在

MySQL的> CREATE DATABASE db1;
查询OK,1行受影响(0.01秒)

MySQL的> USE db1;
数据库已更改
MySQL的> CREATE TABLE t1 (id INT PRIMARY KEY);
查询正常,0行受影响(0.03秒)

MySQL的> CREATE TABLE t2 (id INT PRIMARY KEY);
查询OK,0行受影响(0.20秒)

MySQL的> CREATE view v_t1 AS SELECT * FROM t1;
查询OK,0行受影响(0.02秒)

MySQL的> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
查询正常,0行受影响(0.00秒)

MySQL的> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
查询OK,0行受影响(0.01秒)

+ ----------- +
| @exists |
+ ----------- +
| TEMPORARY |
+ ----------- +
1排(0.00秒)

MySQL的> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
查询OK,0行受影响(0.02秒)

+ ------------ +
| @exists |
+ ------------ +
| 基础表|
+ ------------ +
1排(0.00秒)

MySQL的> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
查询OK,0行受影响(0.02秒)

+ --------- +
| @exists |
+ --------- +
| 查看|
+ --------- +
1排(0.00秒)

MySQL的> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
查询正常,0行受影响(0.00秒)

+ --------- +
| @exists |
+ --------- +
| |
+ --------- +
1排(0.00秒)

27.4.5 sys Schema存储函数

以下部分描述了 sys 模式存储函数。

27.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')|
+ ------------------------------------------------- -------------------------- +
| 世界|
+ ------------------------------------------------- -------------------------- +

27.4.5.2 extract_table_from_file_name()函数

给定文件路径名,返回表示表名的路径组件。

从包含文件路径名的性能架构中提取文件I / O信息时,此功能非常有用。 它提供了一种显示表名的便捷方式,可以比完整路径名更容易理解,也可以用于对象表名的连接。

参数
  • path VARCHAR(512) :从中提取表名称的数据文件的完整路径。

回报价值

一个 VARCHAR(64) 价值。

MySQL的> SELECT sys.extract_table_from_file_name('/usr/local/mysql/data/world/City.ibd');
+ ------------------------------------------------- ------------------------- +
| sys.extract_table_from_file_name('/ usr / local / mysql / data / world / City.ibd')|
+ ------------------------------------------------- ------------------------- +
| 城市|
+ ------------------------------------------------- ------------------------- +

27.4.5.3 format_bytes()函数

注意

自MySQL 8.0.16起, format_bytes() 不推荐使用,将在未来的MySQL版本中删除。 应该迁移使用它的应用程序以使用内置 FORMAT_BYTES() 函数。 请参见 第12.22节“性能模式函数”

给定字节计数,将其转换为人类可读的格式并返回由值和单位指示符组成的字符串。 取决于值的大小,所述单元的部分是 bytes KiB (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字节| 16383.91 PiB |
+ ----------------------- + ------------------------- --------------- +

27.4.5.4 format_path()函数

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

DATADIR
TMPDIR
slave_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 utf8 价值。

MySQL的> SELECT sys.format_path('/usr/local/mysql/data/world/City.ibd');
+ ------------------------------------------------- -------- +
| sys.format_path('/ usr / local / mysql / data / world / City.ibd')|
+ ------------------------------------------------- -------- +
| /usr/local/mysql/data/world/City.ibd |
+ ------------------------------------------------- -------- +

27.4.5.5 format_statement()函数

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

此函数对于将从Performance Schema表中检索的可能冗长的语句格式化为已知的固定最大长度非常有用。

参数
  • statement LONGTEXT :要格式化的声明。

配置选项

format_statement() 可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见 第27.4.2.1节“sys_config表” ):

  • statement_truncate_len @sys.statement_truncate_len

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

回报价值

一个 LONGTEXT 价值。

默认情况下, format_statement() 截断语句不超过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变量,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 |
+ ----------------------------------- +

27.4.5.6 format_time()函数

注意

自MySQL 8.0.16起, format_time() 不推荐使用,将在未来的MySQL版本中删除。 应该迁移使用它的应用程序以使用内置 FORMAT_PICO_TIME() 函数。 请参见 第12.22节“性能模式函数”

给定性能模式延迟或等待时间(以皮秒为单位),将其转换为人类可读格式并返回由值和单位指示符组成的字符串。 根据值的大小,单位部分是 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米|
+ ----------------------- + ------------------------- --------- +

27.4.5.7 list_add()函数

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

该功能并 list_drop() 可以用于操纵系统变量,如的值是有用的 sql_mode ,并 optimizer_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 |
+ -------------------------------------------- +

27.4.5.8 list_drop()函数

从逗号分隔的值列表中删除值并返回结果。 有关更多信息,请参阅的说明 list_add()

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

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

回报价值

一个 TEXT 价值。

27.4.5.9 ps_is_account_enabled()函数

返回 YES NO 指示是否启用给定帐户的Performance Schema检测。

参数
  • 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')|
+ ------------------------------------------------ +
| 是的|
+ ------------------------------------------------ +

27.4.5.10 ps_is_consumer_enabled()函数

返回 YES NO 指示是否启用了给定的Performance Schema使用者,或者 NULL 该参数是否是有效的使用者名称。

此功能考虑了使用者层次结构,因此除非启用了依赖于所有依赖项的所有使用者,否则不会将使用者视为已启用。 有关使用者层次结构的信息,请参见 第26.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')|
+ ------------------------------------------------- ----- +
| 是的|
+ ------------------------------------------------- ----- +

27.4.5.11 ps_is_instrument_default_enabled()函数

返回 YES NO 指示默认情况下是否启用给定的Performance Schema工具。

参数
  • 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')|
+ ------------------------------------------------- ------------------ +
| 没有|
+ ------------------------------------------------- ------------------ +
MySQL的> SELECT sys.ps_is_instrument_default_enabled('statement/sql/alter_user');
+ ------------------------------------------------- ----------------- +
| sys.ps_is_instrument_default_enabled('statement / sql / alter_user')|
+ ------------------------------------------------- ----------------- +
| 是的|
+ ------------------------------------------------- ----------------- +

27.4.5.12 ps_is_instrument_default_timed()函数

返回 YES NO 指示默认情况下给定的Performance Schema工具是否定时。

参数
  • 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')|
+ ------------------------------------------------- ---------------- +
| 没有|
+ ------------------------------------------------- ---------------- +
MySQL的> SELECT sys.ps_is_instrument_default_timed('statement/sql/alter_user');
+ ------------------------------------------------- --------------- +
| sys.ps_is_instrument_default_timed('statement / sql / alter_user')|
+ ------------------------------------------------- --------------- +
| 是的|
+ ------------------------------------------------- --------------- +

27.4.5.13 ps_is_thread_instrumented()函数

返回 YES NO 指示是否启用了给定连接ID的Performance Schema检测, UNKNOWN ID是否未知,或者 NULL ID是否为 NULL

参数
  • in_connection_id BIGINT UNSIGNED :连接ID。 这是 PROCESSLIST_ID Performance Schema threads 表的 Id SHOW PROCESSLIST 输出 列中 给出的类型的值

回报价值

一个 ENUM('YES','NO','UNKNOWN') 价值。

MySQL的> SELECT sys.ps_is_thread_instrumented(43);
+ ----------------------------------- +
| sys.ps_is_thread_instrumented(43)|
+ ----------------------------------- +
| 未知|
+ ----------------------------------- +
MySQL的> SELECT sys.ps_is_thread_instrumented(CONNECTION_ID());
+ ------------------------------------------------ +
| sys.ps_is_thread_instrumented(CONNECTION_ID())|
+ ------------------------------------------------ +
| 是的|
+ ------------------------------------------------ +

27.4.5.14 ps_thread_account()函数

给定Performance Schema线程ID,返回 与线程关联 帐户。 user_name@host_name

参数
  • in_thread_id BIGINT UNSIGNED :要为其返回帐户的线程ID。 该值应与 THREAD_ID 某些Performance Schema threads 表行 中的 匹配

回报价值

一个 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 |
+ ------------------------------------------------- --------- +

27.4.5.15 ps_thread_id()函数

注意

自MySQL 8.0.16起, ps_thread_id() 不推荐使用,将在未来的MySQL版本中删除。 应该迁移使用它的应用程序以使用内置 函数 PS_THREAD_ID() PS_CURRENT_THREAD_ID() 函数。 请参见 第12.22节“性能模式函数”

返回分配给给定连接ID的Performance Schema线程ID,如果连接ID为,则返回当前连接的线程ID NULL

参数
  • in_connection_id BIGINT UNSIGNED :要为其返回线程ID的连接的ID。 这是 PROCESSLIST_ID Performance Schema threads 表的 Id SHOW PROCESSLIST 输出 列中 给出的类型的值

回报价值

一个 BIGINT UNSIGNED 价值。

MySQL的> SELECT sys.ps_thread_id(260);
+ ----------------------- +
| sys.ps_thread_id(260)|
+ ----------------------- +
| 285 |
+ ----------------------- +

27.4.5.16 ps_thread_stack()函数

返回给定线程ID的Performance Schema中所有语句,阶段和事件的JSON格式堆栈。

参数
  • in_thread_id BIGINT :要跟踪的线程的ID。 该值应与 THREAD_ID 某些Performance Schema threads 表行 中的 匹配

  • in_verbose BOOLEAN :是否 file:lineno 在事件中 包含 信息。

回报价值

一个 LONGTEXT CHARACTER SET latin1 价值。

MySQL的> SELECT sys.ps_thread_stack(37, FALSE) AS thread_stack\G
*************************** 1。排******************** *******
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”:“选择@@ version_comment limit 1 \ nerrors:0 \ nwarnings:0 \ nlock time:
...

27.4.5.17 ps_thread_trx_info()函数

返回包含有关给定线程的信息的JSON对象。 该信息包括当前事务及其已执行的语句,这些语句是从性能模式 events_transactions_current events_statements_history 表中 派生的 (必须启用这些表的使用者才能获取JSON对象中的完整数据。)

如果输出超过截断长度(默认为65535),则返回JSON错误对象,例如:

{“error”:“Trx信息被截断:第6行被GROUP_CONCAT()删除”}

对于在函数执行期间引发的其他警告和异常,将返回类似的错误对象。

参数
  • in_thread_id BIGINT UNSIGNED :要为其返回事务信息的线程ID。 该值应与 THREAD_ID 某些Performance Schema threads 表行 中的 匹配

配置选项

ps_thread_trx_info() 可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见 第27.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。排******************** *******
sys.ps_thread_trx_info(48):[
  {
    “时间”:“790.70我们”,
    “州”:“委托”,
    “模式”:“读写”,
    “自动提交”:“不”,
    “gtid”:“AUTOMATIC”,
    “隔离”:“可重读”,
    “statements_executed”:[
      {
        “sql_text”:“INSERT INTO info VALUES(1,\'foo \')”,
        “时间”:“471.02我们”,
        “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”,
        “时间”:“254.42我们”,
        “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
      }
    ]
  },
  {
    “时间”:“426.20我们”,
    “州”:“委托”,
    “模式”:“读写”,
    “自动提交”:“不”,
    “gtid”:“AUTOMATIC”,
    “隔离”:“可重读”,
    “statements_executed”:[
      {
        “sql_text”:“INSERT INTO info VALUES(2,\'bar \')”,
        “时间”:“107.33我们”,
        “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”,
        “时间”:“213.23我们”,
        “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
      }
    ]
  }
]

27.4.5.18 quote_identifier()函数

给定一个字符串参数,此函数生成一个适合包含在SQL语句中的带引号的标识符。 当要用作标识符的值是保留字或包含backtick( ` )字符 时,这很有用

参数

in_identifier TEXT :要引用的标识符。

回报价值

一个 TEXT 价值。

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` |
+ --------------------------------- +

27.4.5.19 sys_get_config()函数

给定配置选项名称, 如果表中不存在该选项 ,则返回表中的选项值 sys_config 或提供的默认值(可能是 NULL )。

如果 sys_get_config() 返回默认值且该值为 NULL ,则调用者应该能够处理 NULL 给定的配置选项。

按照惯例, sys_get_config() 首先 调用的例程 检查相应的用户定义变量是否存在且是否为非 NULL 如果是这样,例程使用变量值而不读取 sys_config 表。 如果变量不存在或者是 NULL ,则例程从表中读取选项值并将用户定义的变量设置为该值。 有关配置选项与其相应的用户定义变量之间关系的更多信息,请参见 第27.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:

MySQL的> SELECT sys.sys_get_config('statement_truncate_len', 128) AS 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)那么
  SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len',64);
万一;

27.4.5.20 version_major()函数

此函数返回MySQL服务器的主要版本。

参数

没有。

回报价值

一个 TINYINT UNSIGNED 价值。

MySQL的> SELECT VERSION(), sys.version_major();
+ -------------- + --------------------- +
| 版本()| sys.version_major()|
+ -------------- + --------------------- +
| 8.0.13-debug | 8 |
+ -------------- + --------------------- +

27.4.5.21 version_minor()函数

此函数返回MySQL服务器的次要版本。

参数

没有。

回报价值

一个 TINYINT UNSIGNED 价值。

MySQL的> SELECT VERSION(), sys.version_minor();
+ -------------- + --------------------- +
| 版本()| sys.version_minor()|
+ -------------- + --------------------- +
| 8.0.13-debug | 0 |
+ -------------- + --------------------- +

27.4.5.22 version_patch()函数

此函数返回MySQL服务器的补丁版本。

参数

没有。

回报价值

一个 TINYINT UNSIGNED 价值。

MySQL的> SELECT VERSION(), sys.version_patch();
+ -------------- + --------------------- +
| 版本()| sys.version_patch()|
+ -------------- + --------------------- +
| 8.0.13-debug | 13 |
+ -------------- + --------------------- +

原文