MySQL8 中文参考(一百一十一)
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-tls-channel-status-table.html
29.12.21.9 The tls_channel_status Table
连接接口 TLS 属性在服务器启动时设置,并可以使用ALTER INSTANCE RELOAD TLS语句在运行时进行更新。请参见 Server-Side Runtime Configuration and Monitoring for Encrypted Connections。
tls_channel_status表(自 MySQL 8.0.21 起可用)提供有关连接接口 TLS 属性的信息:
mysql> SELECT * FROM performance_schema.tls_channel_status\G
*************************** 1\. row ***************************
CHANNEL: mysql_main
PROPERTY: Enabled
VALUE: Yes
*************************** 2\. row ***************************
CHANNEL: mysql_main
PROPERTY: ssl_accept_renegotiates
VALUE: 0
*************************** 3\. row ***************************
CHANNEL: mysql_main
PROPERTY: Ssl_accepts
VALUE: 2
...
*************************** 29\. row ***************************
CHANNEL: mysql_admin
PROPERTY: Enabled
VALUE: No
*************************** 30\. row ***************************
CHANNEL: mysql_admin
PROPERTY: ssl_accept_renegotiates
VALUE: 0
*************************** 31\. row ***************************
CHANNEL: mysql_admin
PROPERTY: Ssl_accepts
VALUE: 0
...
tls_channel_status表具有以下列:
-
CHANNEL适用于 TLS 属性行的连接接口的名称。
mysql_main和mysql_admin分别是主连接接口和管理连接接口的通道名称。有关不同接口的信息,请参见 Section 7.1.12.1, “Connection Interfaces”。 -
PROPERTYTLS 属性名称。
Enabled属性的行指示整体接口状态,其中接口及其状态分别在CHANNEL和VALUE列中命名。其他属性名称指示特定的 TLS 属性。这些通常对应于与 TLS 相关的状态变量的名称。 -
VALUETLS 属性值。
由该表公开的属性不是固定的,而是取决于每个通道实现的仪表化。
对于每个通道,具有PROPERTY值为Enabled的行指示通道是否支持加密连接,其他通道行指示 TLS 上下文属性:
-
对于
mysql_main,Enabled属性为yes或no,表示主接口是否支持加密连接。其他通道行显示主接口的 TLS 上下文属性。对于主接口,可以使用以下语句获取类似的状态信息:
SHOW GLOBAL STATUS LIKE 'current_tls%'; SHOW GLOBAL STATUS LIKE 'ssl%'; -
对于
mysql_admin,如果管理接口未启用或已启用但不支持加密连接,则Enabled属性为no。如果接口已启用并支持加密连接,则Enabled为yes。当
Enabled为yes时,如果为该接口配置了一些非默认的 TLS 参数值,则其他mysql_admin行仅指示管理接口 TLS 上下文的通道属性。 (如果任何admin_tls_*xxx*或admin_ssl_*xxx*系统变量设置为与其默认值不同的值,则是这种情况。)否则,管理接口使用与主接口相同的 TLS 上下文。
tls_channel_status 表没有索引。
TRUNCATE TABLE 不允许用于 tls_channel_status 表。
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-user-defined-functions-table.html
29.12.21.10 user_defined_functions 表
user_defined_functions 表包含每个由组件或插件自动注册的可加载函数或由 CREATE FUNCTION 语句手动注册的函数的行。有关添加或删除表行的操作信息,请参阅 Section 7.7.1, “安装和卸载可加载函数”。
注意
user_defined_functions 表的名称源自其创立时用于现在称为可加载函数(即用户定义函数或 UDF)的函数类型的术语。
user_defined_functions 表具有以下列:
-
UDF_NAMESQL 语句中引用的函数名称。如果函数是由
CREATE FUNCTION语句注册并正在卸载过程中,则值为NULL。 -
UDF_RETURN_TYPE函数返回值类型。值为
int、decimal、real、char或row中的一个。 -
UDF_TYPE函数类型。值为
function(标量)或aggregate中的一个。 -
UDF_LIBRARY包含可执行函数代码的库文件的名称。该文件位于由
plugin_dir系统变量命名的目录中。如果函数是由组件或插件而不是由CREATE FUNCTION语句注册,则值为NULL。 -
UDF_USAGE_COUNT当前函数使用计数。用于判断当前是否有语句访问该函数。
user_defined_functions 表具有以下索引:
- 主键为 (
UDF_NAME)
不允许对 user_defined_functions 表使用 TRUNCATE TABLE。
mysql.func 系统表还列出已安装的可加载函数,但仅列出使用 CREATE FUNCTION 安装的函数。user_defined_functions 表列出使用 CREATE FUNCTION 安装的可加载函数,以及由组件或插件自动安装的可加载函数。这种差异使得 user_defined_functions 更适合用于检查已安装的可加载函数。
29.13 性能模式选项和变量参考
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-option-variable-reference.html
表 29.18 性能模式变量参考
| 名称 | 命令行 | 选项文件 | 系统变量 | 状态变量 | 变量范围 | 动态 |
|---|---|---|---|---|---|---|
| 性能模式 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式账户丢失 | 是 | 全局 | 否 | |||
| 性能模式账户大小 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式条件类丢失 | 是 | 全局 | 否 | |||
| 性能模式条件实例丢失 | 是 | 全局 | 否 | |||
| performance-schema-consumer-events-stages-current | 是 | 是 | ||||
| performance-schema-consumer-events-stages-history | 是 | 是 | ||||
| performance-schema-consumer-events-stages-history-long | 是 | 是 | ||||
| performance-schema-consumer-events-statements-cpu | 是 | 是 | ||||
| performance-schema-consumer-events-statements-current | 是 | 是 | ||||
| performance-schema-consumer-events-statements-history | 是 | 是 | ||||
| performance-schema-consumer-events-statements-history-long | 是 | 是 | ||||
| performance-schema-consumer-events-transactions-current | 是 | 是 | ||||
| performance-schema-consumer-events-transactions-history | 是 | 是 | ||||
| performance-schema-consumer-events-transactions-history-long | 是 | 是 | ||||
| performance-schema-consumer-events-waits-current | 是 | 是 | ||||
| performance-schema-consumer-events-waits-history | 是 | 是 | ||||
| performance-schema-consumer-events-waits-history-long | 是 | 是 | ||||
| performance-schema-consumer-global-instrumentation | 是 | 是 | ||||
| performance-schema-consumer-statements-digest | 是 | 是 | ||||
| performance-schema-consumer-thread-instrumentation | 是 | 是 | ||||
| Performance_schema_digest_lost | 是 | 全局 | 否 | |||
| performance_schema_digests_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_stages_history_long_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_stages_history_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_statements_history_long_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_statements_history_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_transactions_history_long_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_transactions_history_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_waits_history_long_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_events_waits_history_size | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式文件类丢失 | 是 | 全局 | 否 | |||
| 性能模式文件句柄丢失 | 是 | 全局 | 否 | |||
| 性能模式文件实例丢失 | 是 | 全局 | 否 | |||
| 性能模式主机丢失 | 是 | 全局 | 否 | |||
| 性能模式主机大小 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式仪器 | 是 | 是 | ||||
| 性能模式锁丢失 | 是 | 全局 | 否 | |||
| 性能模式最大条件类 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大条件实例数 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大摘要长度 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大文件类 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大文件句柄数 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大文件实例数 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大内存类 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大元数据锁数 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大互斥体类 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大互斥体实例数 | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式最大准备语句实例数 | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_program_instances | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_rwlock_classes | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_rwlock_instances | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_socket_classes | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_socket_instances | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_stage_classes | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_statement_classes | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_statement_stack | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_table_handles | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_table_instances | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_thread_classes | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_max_thread_instances | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式内存类丢失 | 是 | 全局 | 否 | |||
| 性能模式元数据锁丢失 | 是 | 全局 | 否 | |||
| 性能模式互斥类丢失 | 是 | 全局 | 否 | |||
| 性能模式互斥实例丢失 | 是 | 全局 | 否 | |||
| 性能模式嵌套语句丢失 | 是 | 全局 | 否 | |||
| 性能模式准备语句丢失 | 是 | 全局 | 否 | |||
| 性能模式程序丢失 | 是 | 全局 | 否 | |||
| 性能模式读写锁类丢失 | 是 | 全局 | 否 | |||
| 性能模式读写锁实例丢失 | 是 | 全局 | 否 | |||
| 性能模式会话连接属性丢失 | 是 | 全局 | 否 | |||
| performance_schema_session_connect_attrs_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_setup_actors_size | 是 | 是 | 是 | 全局 | 否 | |
| performance_schema_setup_objects_size | 是 | 是 | 是 | 全局 | 否 | |
| 性能模式套接字类丢失 | 是 | 全局 | 否 | |||
| 性能模式套接字实例丢失 | 是 | 全局 | 否 | |||
| 性能模式阶段类丢失 | 是 | 全局 | 否 | |||
| 性能模式语句类丢失 | 是 | 全局 | 否 | |||
| 性能模式表句柄丢失 | 是 | 全局 | 否 | |||
| 性能模式表实例丢失 | 是 | 全局 | 否 | |||
| 性能模式线程类丢失 | 是 | 全局 | 否 | |||
| 性能模式线程实例丢失 | 是 | 全局 | 否 | |||
| 性能模式用户丢失 | 是 | 全局 | 否 | |||
| performance_schema_users_size | 是 | 是 | 是 | 全局 | 否 | |
| 名称 | 命令行 | 选项文件 | 系统变量 | 状态变量 | 变量范围 | 动态 |
29.14 性能模式命令选项
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-options.html
可以在服务器启动时在命令行或选项文件中指定性能模式参数,以配置性能模式仪器和消费者。在许多情况下也可以进行运行时配置(请参见第 29.4 节“性能模式运行时配置”),但当运行时配置太晚以影响在启动过程中已��初始化的仪器时,必须使用启动配置。
可以使用以下语法在启动时配置性能模式消费者和仪器。有关更多详细信息,请参见第 29.3 节“性能模式启动配置”。
-
--performance-schema-consumer-*consumer_name*=value``配置性能模式消费者。
setup_consumers表中的消费者名称使用下划线,但对于在启动时设置的消费者,名称中的破折号和下划线是等效的。配置单个消费者的选项将在本节后面详细介绍。 -
--performance-schema-instrument=*instrument_name*=value``配置性能模式仪器。名称可以作为模式给出,以配置与该模式匹配的仪器。
以下项目配置单个消费者:
-
--performance-schema-consumer-events-stages-current=value``配置
events-stages-current消费者。 -
--performance-schema-consumer-events-stages-history=value``配置
events-stages-history消费者。 -
--performance-schema-consumer-events-stages-history-long=value``配置
events-stages-history-long消费者。 -
--performance-schema-consumer-events-statements-cpu=value``配置
events-statements-cpu消费者。 -
--performance-schema-consumer-events-statements-current=value``配置
events-statements-current消费者。 -
--performance-schema-consumer-events-statements-history=value``配置
events-statements-history消费者。 -
--performance-schema-consumer-events-statements-history-long=value``配置
events-statements-history-long消费者。 -
--performance-schema-consumer-events-transactions-current=value``配置性能模式
events-transactions-current消费者。 -
--performance-schema-consumer-events-transactions-history=value``配置性能模式
events-transactions-history消费者。 -
--performance-schema-consumer-events-transactions-history-long=value``配置性能模式
events-transactions-history-long消费者。 -
--performance-schema-consumer-events-waits-current=value``配置
events-waits-current消费者。 -
--performance-schema-consumer-events-waits-history=value``配置
events-waits-history消费者。 -
--performance-schema-consumer-events-waits-history-long=value``配置
events-waits-history-long消费者。 -
--performance-schema-consumer-global-instrumentation=value``配置
global-instrumentation消费者。 -
--performance-schema-consumer-statements-digest=value``配置
statements-digest消费者。 -
--performance-schema-consumer-thread-instrumentation=value``配置
thread-instrumentation消费者。
29.15 性能模式系统变量
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-system-variables.html
性能模式实现了几个提供配置信息的系统变量:
mysql> SHOW VARIABLES LIKE 'perf%';
+----------------------------------------------------------+-------+
| Variable_name | Value |
+----------------------------------------------------------+-------+
| performance_schema | ON |
| performance_schema_accounts_size | -1 |
| performance_schema_digests_size | 10000 |
| performance_schema_events_stages_history_long_size | 10000 |
| performance_schema_events_stages_history_size | 10 |
| performance_schema_events_statements_history_long_size | 10000 |
| performance_schema_events_statements_history_size | 10 |
| performance_schema_events_transactions_history_long_size | 10000 |
| performance_schema_events_transactions_history_size | 10 |
| performance_schema_events_waits_history_long_size | 10000 |
| performance_schema_events_waits_history_size | 10 |
| performance_schema_hosts_size | -1 |
| performance_schema_max_cond_classes | 80 |
| performance_schema_max_cond_instances | -1 |
| performance_schema_max_digest_length | 1024 |
| performance_schema_max_file_classes | 50 |
| performance_schema_max_file_handles | 32768 |
| performance_schema_max_file_instances | -1 |
| performance_schema_max_index_stat | -1 |
| performance_schema_max_memory_classes | 320 |
| performance_schema_max_metadata_locks | -1 |
| performance_schema_max_mutex_classes | 350 |
| performance_schema_max_mutex_instances | -1 |
| performance_schema_max_prepared_statements_instances | -1 |
| performance_schema_max_program_instances | -1 |
| performance_schema_max_rwlock_classes | 40 |
| performance_schema_max_rwlock_instances | -1 |
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| performance_schema_max_sql_text_length | 1024 |
| performance_schema_max_stage_classes | 150 |
| performance_schema_max_statement_classes | 192 |
| performance_schema_max_statement_stack | 10 |
| performance_schema_max_table_handles | -1 |
| performance_schema_max_table_instances | -1 |
| performance_schema_max_table_lock_stat | -1 |
| performance_schema_max_thread_classes | 50 |
| performance_schema_max_thread_instances | -1 |
| performance_schema_session_connect_attrs_size | 512 |
| performance_schema_setup_actors_size | -1 |
| performance_schema_setup_objects_size | -1 |
| performance_schema_users_size | -1 |
+----------------------------------------------------------+-------+
可以在命令行或选项文件中设置性能模式系统变量,并且许多变量可以在运行时设置。请参见第 29.13 节,“性能模式选项和变量参考”。
如果未显式设置,性能模式会在服务器启动时自动调整几个参数的值。更多信息,请参见第 29.3 节,“性能模式启动配置”。
性能模式系统变量具有以下含义:
-
performance_schema命令行格式 --performance-schema[={OFF|ON}]系统变量 performance_schema范围 全局 动态 否 SET_VAR提示适用否 类型 布尔值 默认值 ON此变量的值为
ON或OFF,表示性能模式是否已启用。默认情况下,该值为ON。在服务器启动时,您可以指定此变量不带值或带ON或 1 的值来启用它,或者带OFF或 0 的值来禁用它。即使性能模式被禁用,它仍会继续填充
global_variables、session_variables、global_status和session_status表。这是必要的,以便从这些表中获取SHOW VARIABLES和SHOW STATUS语句的结果。性能模式在禁用时也会填充一些复制表。 -
performance_schema_accounts_size命令行格式 --performance-schema-accounts-size=#系统变量 performance_schema_accounts_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576accounts表中的行数。如果此变量为 0,则性能模式不会在accounts表中维护连接统计信息,也不会在status_by_account表中维护状态变量信息。 -
performance_schema_digests_size命令行格式 --performance-schema-digests-size=#系统变量 performance_schema_digests_size范围 全局 Dynamic No SET_VAR提示适用否 类型 整数 Default Value -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576events_statements_summary_by_digest表中的最大行数。如果超过此最大值,以至于无法对摘要进行检测,则性能模式会增加Performance_schema_digest_lost状态变量。有关语句摘要的更多信息,请参见第 29.10 节,“性能模式语句摘要和抽样”。
-
performance_schema_error_size命令行格式 --performance-schema-error-size=#系统变量 performance_schema_error_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 Default Value 服务器错误代码的数量最小值 0最大值 1048576被检测的服务器错误代码的数量。默认值是实际的服务器错误代码数量。虽然该值可以设置为从 0 到其最大值的任何值,但预期用法是将其设置为默认值(以检测所有错误)或 0(不检测任何错误)。
错误信息在摘要表中汇总;请参阅第 29.12.20.11 节,“错误摘要表”。如果发生未被检测的错误,该事件的信息将被汇总到每个摘要表的
NULL行中;也就是说,到具有ERROR_NUMBER=0、ERROR_NAME=NULL和SQLSTATE=NULL的行。 -
performance_schema_events_stages_history_long_size命令行格式 --performance-schema-events-stages-history-long-size=#系统变量 performance_schema_events_stages_history_long_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576events_stages_history_long表中的行数。 -
performance_schema_events_stages_history_size命令行格式 --performance-schema-events-stages-history-size=#系统变量 performance_schema_events_stages_history_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1024每个线程在
events_stages_history表中的行数。 -
performance_schema_events_statements_history_long_size命令行格式 --performance-schema-events-statements-history-long-size=#系统变量 performance_schema_events_statements_history_long_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576events_statements_history_long表中的行数�� -
performance_schema_events_statements_history_size命令行格式 --performance-schema-events-statements-history-size=#系统变量 performance_schema_events_statements_history_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1024events_statements_history表中每个线程的行数。 -
performance_schema_events_transactions_history_long_size命令行格式 --performance-schema-events-transactions-history-long-size=#系统变量 performance_schema_events_transactions_history_long_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576events_transactions_history_long表中的行数。 -
performance_schema_events_transactions_history_size命令行格式 --performance-schema-events-transactions-history-size=#系统变量 performance_schema_events_transactions_history_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1024在
events_transactions_history表中每个线程的行数。 -
performance_schema_events_waits_history_long_size命令行格式 --performance-schema-events-waits-history-long-size=#系统变量 performance_schema_events_waits_history_long_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576在
events_waits_history_long表中的行数。 -
performance_schema_events_waits_history_size命令行格式 --performance-schema-events-waits-history-size=#系统变量 performance_schema_events_waits_history_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1024在
events_waits_history表中每个线程的行数。 -
performance_schema_hosts_size命令行格式 --performance-schema-hosts-size=#系统变量 performance_schema_hosts_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576hosts表中的行数。如果此变量为 0,则性能模式不会在hosts表中维护连接统计信息,也不会在status_by_host表中维护状态变量信息。 -
performance_schema_max_cond_classes命令行格式 --performance-schema-max-cond-classes=#系统变量 performance_schema_max_cond_classes作用域 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值(≥ 8.0.27) 150默认值(≥ 8.0.13, ≤ 8.0.26) 100默认值(≤ 8.0.12) 80最小值 0最大值(≥ 8.0.12) 1024最大值(8.0.11) 256条件仪器的最大数量。有关如何设置和使用此变量的信息,请参见 第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_cond_instances命令行格式 --performance-schema-max-cond-instances=#系统变量 performance_schema_max_cond_instances作用域 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要赋予此字面值)最小值 -1(表示自动缩放;不要赋予此字面��)最大值 1048576仪器化条件对象的最大数量。有关如何设置和使用此变量的信息,请参见 第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_digest_length命令行格式 --performance-schema-max-digest-length=#系统变量 performance_schema_max_digest_length作用域 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 1024最小值 0最大值 1048576单位 字节 在性能模式中,每个语句用于计算规范语句摘要值的内存保留的最大字节数。此变量与
max_digest_length有关;请参阅第 7.1.8 节,“服务器系统变量”中对该变量的描述。有关语句摘要的更多信息,包括有关内存使用的考虑,请参阅第 29.10 节,“性能模式语句摘要和采样”。
-
performance_schema_max_digest_sample_age命令行格式 --performance-schema-max-digest-sample-age=#系统变量 performance_schema_max_digest_sample_age范围 全局 动态 是 SET_VAR提示适用否 类型 整数 默认值 60最小值 0最大值 1048576单位 秒 此变量影响
events_statements_summary_by_digest表的语句采样。当插入新的表行时,生成行摘要值的语句将存储为与摘要相关联的当前样本语句。此后,当服务器看到具有相同摘要值的其他语句时,它会确定是否使用新语句替换当前样本语句(即是否重新采样)。重新采样策略基于当前样本语句和新语句的比较等待时间,以及可选的当前样本语句的年龄:-
基于等待时间的重新采样:如果新语句的等待时间大于当前样本语句的等待时间,则新语句将成为当前样本语句。
-
基于年龄的重新采样:如果
performance_schema_max_digest_sample_age系统变量的值大于零,并且当前样本语句的年龄超过该时间(以秒为单位),则当前语句被视为“太旧”,新语句将替换它。即使新语句的等待时间小于当前样本语句的等待时间,也会发生这种情况。
有关语句采样的信息,请参阅第 29.10 节,“性能模式语句摘要和采样”。
-
-
performance_schema_max_file_classes命令行格式 --performance-schema-max-file-classes=#系统变量 performance_schema_max_file_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 80最小值 0最大值 (≥ 8.0.12) 1024最大值 (8.0.11) 256文件工具的最大数量。有关如何设置和使用此变量的信息,请参见 第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_file_handles命令行格式 --performance-schema-max-file-handles=#系统变量 performance_schema_max_file_handles范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 32768最小值 0最大值 1048576打开文件对象的最大数量。有关如何设置和使用此变量的信息,请参见 第 29.7 节,“性能模式状态监控”。
performance_schema_max_file_handles的值应大于open_files_limit的值:open_files_limit影响服务器支持的最大打开文件句柄数,而performance_schema_max_file_handles影响可以被检测的这些文件句柄的数量。 -
performance_schema_max_file_instances命令行格式 --performance-schema-max-file-instances=#系统变量 performance_schema_max_file_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576文件对象的受检测最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_index_stat命令行格式 --performance-schema-max-index-stat=#系统变量 performance_schema_max_index_stat范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此字面值)最小值 -1(表示自动缩放;不要分配此字面值)最大值 1048576Performance Schema 维护统计信息的最大索引数。如果超过此最大值,导致索引统计丢失,Performance Schema 会增加
Performance_schema_index_stat_lost状态变量。默认值是使用performance_schema_max_table_instances的值进行自动调整。 -
performance_schema_max_memory_classes命令行格式 --performance-schema-max-memory-classes=#系统变量 performance_schema_max_memory_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 450最小值 0最大值 1024内存工具的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_metadata_locks命令行格式 --performance-schema-max-metadata-locks=#系统变量 performance_schema_max_metadata_locks范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此字面值)最小值 -1(表示自动缩放;不要分配此字面值)最大值 10485760元数据锁仪器的最大数量。此值控制
metadata_locks表的大小。如果超过此最大值,以至于无法对元数据锁进行仪器化,则性能模式会增加Performance_schema_metadata_lock_lost状态变量。 -
performance_schema_max_mutex_classes命令行格式 --performance-schema-max-mutex-classes=#系统变量 performance_schema_max_mutex_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 (≥ 8.0.27) 350默认值 (≥ 8.0.12, ≤ 8.0.26) 300默认值 (8.0.11) 250最小值 0最大值 (≥ 8.0.12) 1024最大值 (8.0.11) 256互斥锁仪器的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_mutex_instances命令行格式 --performance-schema-max-mutex-instances=#系统变量 performance_schema_max_mutex_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 104857600仪器化互斥对象的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_prepared_statements_instances命令行格式 --performance-schema-max-prepared-statements-instances=#系统变量 performance_schema_max_prepared_statements_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 4194304prepared_statements_instances表中的最大行数。如果超过此最大值,使得无法对准备语句进行仪器化,性能模式会增加Performance_schema_prepared_statements_lost状态变量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。此变量的默认值是基于
max_prepared_stmt_count系统变量的值自动调整的。 -
performance_schema_max_rwlock_classes命令行格式 --performance-schema-max-rwlock-classes=#系统变量 performance_schema_max_rwlock_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 (≥ 8.0.12) 100默认值 (8.0.11) 60最小值 0最大值 (≥ 8.0.12) 1024最大值 (8.0.11) 256最大的 rwlock 仪器数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_program_instances命令行格式 --performance-schema-max-program-instances=#系统变量 performance_schema_max_program_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576存储程序的最大数量,性能模式维护统计信息。如果超过此最大值,性能模式会增加
Performance_schema_program_lost状态变量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。 -
performance_schema_max_rwlock_instances命令行格式 --performance-schema-max-rwlock-instances=#系统变量 performance_schema_max_rwlock_instances作用范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此字面值)最小值 -1(表示自动调整大小;不要分配此字面值)最大值 104857600最大锁对象数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_socket_classes命令行格式 --performance-schema-max-socket-classes=#系统变量 performance_schema_max_socket_classes作用范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 10最小值 0最大值(≥ 8.0.12) 1024最大值(8.0.11) 256最大套接字工具数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_socket_instances命令行格式 --performance-schema-max-socket-instances=#系统变量 performance_schema_max_socket_instances作用范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此字面值)最小值 -1(表示自动缩放;不要赋予此文字值)最大值 1048576受监视的套接字对象的最大数量。有关如何设置和使用此变量的信息,请参见 第 29.7 节“性能模式状态监视”。
-
performance_schema_max_sql_text_length命令行格式 --performance-schema-max-sql-text-length=#系统变量 performance_schema_max_sql_text_length范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 1024最小值 0最大值 1048576单位 字节 用于存储 SQL 语句的最大字节数。该值适用于以下列所需的存储空间:
-
events_statements_current、events_statements_history和events_statements_history_long语句事件表的SQL_TEXT列。 -
events_statements_summary_by_digest摘要表的QUERY_SAMPLE_TEXT列。
超过
performance_schema_max_sql_text_length的任何字节都将被丢弃,并不会出现在列中。只有在那么多初始字节之后有所不同的语句在列中是无法区分的。减小
performance_schema_max_sql_text_length值会减少内存使用,但会导致更多语句在仅在结尾处���所不同时无法区分。增加该值会增加内存使用,但允许区分更长的语句。 -
-
performance_schema_max_stage_classes命令行格式 --performance-schema-max-stage-classes=#系统变量 performance_schema_max_stage_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值(≥ 8.0.13) 175默认值(≤ 8.0.12) 150最小值 0最大值(≥ 8.0.12) 1024最大值(8.0.11) 256阶段仪器的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节“性能模式状态监控”。
-
performance_schema_max_statement_classes命令行格式 --performance-schema-max-statement-classes=#系统变量 performance_schema_max_statement_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 最小值 0最大值 256语句仪器的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节“性能模式状态监控”。
默认值是在服务器构建时根据客户端/服务器协议中的命令数量和服务器支持的 SQL 语句类型数量计算的。
除非将其设置为 0 以禁用所有语句仪表化并保存与之关联的所有内存,否则不应更改此变量。将变量设置为非默认值没有任何好处;特别是,大于默认值的值会导致分配更多的内存。
-
performance_schema_max_statement_stack命令行格式 --performance-schema-max-statement-stack=#系统变量 performance_schema_max_statement_stack范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 10最小值 1最大值 256Performance Schema 维护统计信息的最大嵌套存储过程调用深度。当超过此最大值时,Performance Schema 会为执行的每个存储过程语句递增
Performance_schema_nested_statement_lost状态变量。 -
performance_schema_max_table_handles命令行格式 --performance-schema-max-table-handles=#系统变量 performance_schema_max_table_handles范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576最大打开表对象数量。此值控制
table_handles表的大小。如果超过此最大值,导致无法对表句柄进行仪表化,性能模式会增加Performance_schema_table_handles_lost状态变量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。 -
performance_schema_max_table_instances命令行格式 --performance-schema-max-table-instances=#系统变量 performance_schema_max_table_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576最大仪表化表对象数量。有关如何设置和使用此变量的信息,请参见第 29.7 节,“性能模式状态监控”。
-
performance_schema_max_table_lock_stat命令行格式 --performance-schema-max-table-lock-stat=#系统变量 performance_schema_max_table_lock_stat范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576性能模式维护锁统计信息的表的最大数量。如果超过了这个最大值,导致表锁统计信息丢失,性能模式会增加
Performance_schema_table_lock_stat_lost状态变量。 -
performance_schema_max_thread_classes命令行格式 --performance-schema-max-thread-classes=#系统变量 performance_schema_max_thread_classes范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 100最小值 0最大值(≥ 8.0.12) 1024最大值(8.0.11) 256线程仪器的最大数量。有关如何设置和使用此变量的信息,请参见第 29.7 节“性能模式状态监控”。
-
performance_schema_max_thread_instances命令行格式 --performance-schema-max-thread-instances=#系统变量 performance_schema_max_thread_instances范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576最大仪器化线程对象的数量。该值控制了
threads表的大小。如果超过了这个最大值,导致无法对线程进行仪器化,性能模式会增加Performance_schema_thread_instances_lost状态变量。有关如何设置和使用此变量的信息,请参见第 29.7 节“性能模式状态监控”。max_connections系统变量影响服务器中可以运行的线程数量。performance_schema_max_thread_instances影响可以对这些运行线程进行仪器化的数量。variables_by_thread和status_by_thread表仅包含关于前台线程的系统和状态变量信息。如果性能模式未对所有线程进行仪表化,此表将缺少一些行。在这种情况下,Performance_schema_thread_instances_lost状态变量大于零。 -
performance_schema_session_connect_attrs_size命令行格式 --performance-schema-session-connect-attrs-size=#系统变量 performance_schema_session_connect_attrs_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动调整大小;不要分配此文字值)最小值 -1(表示自动调整大小;不要分配此文字值)最大值 1048576单位 字节 每个线程预分配的内存量,用于保存连接属性键值对。如果客户端发送的连接属性数据的总大小大于此数量,则性能模式会截断属性数据,增加
Performance_schema_session_connect_attrs_lost状态变量,并在错误日志中写入一条消息指示发生了截断,如果log_error_verbosity系统变量大于 1。如果属性缓冲区有足够的空间,还会向会话属性添加一个_truncated属性,其中包含丢失的字节数,这样性能模式就可以在连接属性表中公��每个连接的截断信息。这样就可以在不必检查错误日志的情况下检查这些信息。performance_schema_session_connect_attrs_size的默认值在服务器启动时自动调整大小。这个值可能很小,所以如果发生截断(Performance_schema_session_connect_attrs_lost变为非零),您可能希望将performance_schema_session_connect_attrs_size明确设置为较大的值。尽管
performance_schema_session_connect_attrs_size的最大允许值为 1MB,但有效最大值为 64KB,因为服务器对其接受的连接属性数据的总大小施加了 64KB 的限制。如果客户端尝试发送超过 64KB 的属性数据,服务器将拒绝连接。更多信息,请参见第 29.12.9 节,“性能模式连接属性表”。 -
performance_schema_setup_actors_size命令行格式 --performance-schema-setup-actors-size=#系统变量 performance_schema_setup_actors_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动调整大小;不要分配此文字值)最大值 1048576setup_actors表中的行数。 -
performance_schema_setup_objects_size命令行格式 --performance-schema-setup-objects-size=#系统变量 performance_schema_setup_objects_size范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576setup_objects表中的行数。 -
performance_schema_show_processlist命令行格式 --performance-schema-show-processlist[={OFF|ON}]引入版本 8.0.22 已弃用 8.0.35 系统变量 performance_schema_show_processlist范围 全局 动态 是 SET_VAR提示适用否 类型 布尔 默认值 OFFSHOW PROCESSLIST语句通过从所有活动线程收集线程数据提供进程信息。performance_schema_show_processlist变量确定要使用哪种SHOW PROCESSLIST实现:-
默认实现在持有全局互斥锁的同时,从线程管理器中遍历活动线程。这对于繁忙系统会产生负面的性能后果。
-
另一种
SHOW PROCESSLIST实现基于性能模式processlist表。该实现从性能模式而不是线程管理器查询活动线程数据,并且不需要互斥锁。
要启用替代实现,请启用
performance_schema_show_processlist系统变量。为确保默认和替代实现提供相同的信息,必须满足某些配置要求;参见第 29.12.21.7 节,“The processlist Table”。 -
-
performance_schema_users_size命令行格式 --performance-schema-users-size=#系统变量 `performance_schema_users_size`` 范围 全局 动态 否 SET_VAR提示适用否 类型 整数 默认值 -1(表示自动缩放;不要分配此文字值)最小值 -1(表示自动缩放;不要分配此文字值)最大值 1048576users表中的行数。如果此变量为 0,则性能模式不会在users表中维护连接统计信息,也不会在status_by_user表中维护状态变量信息。
29.16 性能模式状态变量
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-status-variables.html
性能模式实现了几个状态变量,提供有关由于内存限制而无法加载或创建的仪器化信息:
mysql> SHOW STATUS LIKE 'perf%';
+-------------------------------------------+-------+
| Variable_name | Value |
+-------------------------------------------+-------+
| Performance_schema_accounts_lost | 0 |
| Performance_schema_cond_classes_lost | 0 |
| Performance_schema_cond_instances_lost | 0 |
| Performance_schema_file_classes_lost | 0 |
| Performance_schema_file_handles_lost | 0 |
| Performance_schema_file_instances_lost | 0 |
| Performance_schema_hosts_lost | 0 |
| Performance_schema_locker_lost | 0 |
| Performance_schema_mutex_classes_lost | 0 |
| Performance_schema_mutex_instances_lost | 0 |
| Performance_schema_rwlock_classes_lost | 0 |
| Performance_schema_rwlock_instances_lost | 0 |
| Performance_schema_socket_classes_lost | 0 |
| Performance_schema_socket_instances_lost | 0 |
| Performance_schema_stage_classes_lost | 0 |
| Performance_schema_statement_classes_lost | 0 |
| Performance_schema_table_handles_lost | 0 |
| Performance_schema_table_instances_lost | 0 |
| Performance_schema_thread_classes_lost | 0 |
| Performance_schema_thread_instances_lost | 0 |
| Performance_schema_users_lost | 0 |
+-------------------------------------------+-------+
有关使用这些变量检查性能模式状态的信息,请参见第 29.7 节“性能模式状态监控”。
性能模式状态变量具有以下含义:
-
Performance_schema_accounts_lost由于表已满,无法将行添加到
accounts表中的次数。 -
Performance_schema_cond_classes_lost无法加载多少个条件仪器。
-
Performance_schema_cond_instances_lost无法创建多少个条件仪器实例。
-
Performance_schema_digest_lost无法在
events_statements_summary_by_digest表中对摘要实例进行仪器化的次数。如果performance_schema_digests_size的值太小,则此值可能为非零。 -
Performance_schema_file_classes_lost无法加载多少个文件仪器。
-
Performance_schema_file_handles_lost无法打开多少个文件仪器实例。
-
Performance_schema_file_instances_lost无法创建多少个文件仪器实例。
-
Performance_schema_hosts_lost由于表已满,无法将行添加到
hosts表中的次数。 -
Performance_schema_index_stat_lost丢失了多少个统计信息的索引。如果
performance_schema_max_index_stat的值太小,则此值可能为非零。 -
Performance_schema_locker_lost由于以下条件,有多少事件“丢失”或未记录:
-
事件是递归的(例如,等待 A 导致等待 B,导致等待 C)。
-
嵌套事件堆栈的深度超过了实现所施加的限制。
Performance Schema 记录的事件不是递归的,因此此变量应始终为 0。
-
-
Performance_schema_memory_classes_lost无法加载内存工具的次数。
-
Performance_schema_metadata_lock_lost在
metadata_locks表中无法对元数据锁进行仪器化的数量。如果performance_schema_max_metadata_locks的值太小,则可能不为零。 -
Performance_schema_mutex_classes_lost有多少互斥锁工具无法加载。
-
Performance_schema_mutex_instances_lost有多少互斥锁工具实例无法创建。
-
Performance_schema_nested_statement_lost丢失统计信息的存储程序语句的数量。如果
performance_schema_max_statement_stack的值太小,则可能不为零。 -
Performance_schema_prepared_statements_lost在
prepared_statements_instances表中无法对准备语句进行仪器化的数量。如果performance_schema_max_prepared_statements_instances的值太小,则可能不为零�� -
Performance_schema_program_lost丢失统计信息的存储程序的数量。如果
performance_schema_max_program_instances的值太小,则可能不为零。 -
Performance_schema_rwlock_classes_lost无法加载多少个 rwlock 仪器。
-
Performance_schema_rwlock_instances_lost无法创建多少个 rwlock 仪器实例。
-
Performance_schema_session_connect_attrs_longest_seen除了性能模式针对
performance_schema_session_connect_attrs_size系统变量的值执行的连接属性大小限制检查外,服务器还执行了一个初步检查,对接受的连接属性数据的总大小施加了 64KB 的限制。如果客户端尝试发送超过 64KB 的属性数据,服务器将拒绝连接。否则,服务器将认为属性缓冲区有效,并跟踪最长缓冲区的大小,存储在Performance_schema_session_connect_attrs_longest_seen状态变量中。如果此值大于performance_schema_session_connect_attrs_size,DBA 可能希望增加后者的值,或者调查哪些客户端正在发送大量属性数据。关于连接属性的更多信息,请参见第 29.12.9 节,“性能模式连接属性表”。
-
Performance_schema_session_connect_attrs_lost发生连接属性截断的连接数。对于给定的连接,如果客户端发送的连接属性键值对的总大小大于
performance_schema_session_connect_attrs_size系统变量允许的保留存储空间,性能模式将截断属性数据并增加Performance_schema_session_connect_attrs_lost。如果此值不为零,则可能希望将performance_schema_session_connect_attrs_size设置为较大的值。关于连接属性的更多信息,请参见第 29.12.9 节,“性能模式连接属性表”。
-
Performance_schema_socket_classes_lost有多少套接字工具无法加载。
-
Performance_schema_socket_instances_lost有多少套接字工具实例无法创建。
-
Performance_schema_stage_classes_lost有多少阶段工具无法加载。
-
Performance_schema_statement_classes_lost有多少语句工具无法加载。
-
Performance_schema_table_handles_lost有多少表工具实例无法打开。如果
performance_schema_max_table_handles的值太小,则可能不为零。 -
Performance_schema_table_instances_lost有多少表工具实例无法创建。
-
Performance_schema_table_lock_stat_lost丢失锁统计信息的表数。如果
performance_schema_max_table_lock_stat的值太小,则可能不为零。 -
Performance_schema_thread_classes_lost有多少线程工具无法加载。
-
Performance_schema_thread_instances_lost无法在
threads表中对线程实例进行仪器化的次数。如果performance_schema_max_thread_instances的值太小,则可能不为零。 -
Performance_schema_users_lost由于表已满,无法将行添加到
users表中的次数。
29.17 性能模式内存分配模型
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-memory-model.html
性能模式使用此内存分配模型:
-
可能在服务器启动时分配内存。
-
可能在服务器运行期间分配额外的内存。
-
永远不要在服务器运行期间释放内存(尽管它可能被回收)。
-
在关闭时释放所有使用的内存。
结果是放宽内存约束,以便性能模式可以在较少的配置下使用,并减少内存占用量,使消耗随服务器负载而扩展。内存使用取决于实际观察到的负载,而不是估计的负载或明确配置的负载。
几个性能模式大小参数是自动缩放的,除非您想要在内存分配上建立明确的限制,否则无需显式配置:
performance_schema_accounts_size
performance_schema_hosts_size
performance_schema_max_cond_instances
performance_schema_max_file_instances
performance_schema_max_index_stat
performance_schema_max_metadata_locks
performance_schema_max_mutex_instances
performance_schema_max_prepared_statements_instances
performance_schema_max_program_instances
performance_schema_max_rwlock_instances
performance_schema_max_socket_instances
performance_schema_max_table_handles
performance_schema_max_table_instances
performance_schema_max_table_lock_stat
performance_schema_max_thread_instances
performance_schema_users_size
对于自动缩放的参数,配置如下:
-
当值设置为-1(默认值)时,参数会自动缩放:
-
相应的内部缓冲区最初为空,不会分配任何内存。
-
当性能模式收集数据时,内存会在相应的缓冲区中分配。缓冲区大小是无限的,并且可能随着负载而增长。
-
-
当值设置为 0 时:
- 相应的内部缓冲区最初为空,不会分配任何内存。
-
当值设置为*
N* > 0 时:-
相应的内部缓冲区最初为空,不会分配任何内存。
-
当性能模式收集数据时,内存会在相应的缓冲区中分配,直到缓冲区大小达到*
N*。 -
一旦缓冲区大小达到*
N*,就不会再分配更多内存。性能模式为此缓冲区收集的数据将丢失,并且任何相应的“丢失实例”计数器都会递增。
-
要查看性能模式使用了多少内存,请检查为此目的设计的工具。性能模式在内部分配内存,并将每个缓冲区与专用工具相关联,以便可以将内存消耗跟踪到各个缓冲区。以memory/performance_schema/为前缀命名的工具公开了为这些内部缓冲区分配了多少内存。这些缓冲区是全局的,因此这些工具仅在memory_summary_global_by_event_name表中显示,并不在其他memory_summary_by_*xxx*_by_event_name表中显示。
此查询显示与内存工具相关的信息:
SELECT * FROM performance_schema.memory_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'memory/performance_schema/%';
29.18 性能模式和插件
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-and-plugins.html
使用UNINSTALL PLUGIN命令移除插件不会影响已经收集的插件中的代码信息。即使稍后卸载插件,执行插件加载时花费的时间仍然会被计算在内。相关的事件信息,包括聚合信息,仍然可以在performance_schema数据库表中读取。有关插件安装和移除的更多信息,请参见第 29.7 节,“性能模式状态监控”。
实现插件代码的插件开发者应该记录其插装特性,以便加载插件的人能够考虑其需求。例如,第三方存储引擎应该在文档中说明引擎需要多少内存用于互斥锁和其他插装。
29.19 使用性能模式诊断问题
译文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-examples.html
29.19.1 使用性能模式进行查询分析
29.19.2 获取父事件信息
性能模式是帮助数据库管理员通过进行实际测量而不是“猜测”来进行性能调优的工具。本节演示了使用性能模式进行此目的的一些方法。这里的讨论依赖于事件过滤的使用,该过滤在 Section 29.4.2, “性能模式事件过滤”中有描述。
以下示例提供了一种方法,您可以使用该方法分析可重复的问题,例如调查性能瓶颈。首先,您应该有一个性能被认为“太慢”并需要优化的可重复用例,并且应该启用所有仪器(完全不进行预过滤)。
-
运行用例。
-
使用性能模式表,分析性能问题的根本原因。这种分析在很大程度上依赖于后过滤。
-
对于已排除的问题领域,禁用相应的仪器。例如,如果分析显示问题与特定存储引擎中的文件 I/O 无关,则禁用该引擎的文件 I/O 仪器。然后截断历史和摘要表以删除先前收集的事件。
-
重复步骤 1 中的过程。
随着每次迭代,性能模式输出,特别是
events_waits_history_long表,包含的由于不重要的仪器引起的“噪音”越来越少,而且由于该表具有固定大小,包含的与手头问题分析相关的数据越来越多。随着每次迭代,调查应该越来越接近问题的根本原因,因为“信号/噪音”比例改善,使分析变得更容易。
-
一旦确定了性能瓶颈的根本原因,采取适当的纠正措施,例如:
-
调整服务器参数(缓存大小、内存等)。
-
通过不同方式编写查询来调整查询,
-
调整数据库架构(表、索引等)。
-
调整代码(仅适用于存储引擎或服务器开发人员)。
-
-
重新从步骤 1 开始,以查看对性能的更改产生的影响。
mutex_instances.LOCKED_BY_THREAD_ID 和 rwlock_instances.WRITE_LOCKED_BY_THREAD_ID 列对于调查性能瓶颈或死锁非常重要。这是通过性能模式仪器实现的:
-
假设线程 1 因等待互斥锁而被阻塞。
-
您可以确定线程正在等待什么:
SELECT * FROM performance_schema.events_waits_current WHERE THREAD_ID = *thread_1*;查询结果显示线程正在等待互斥锁 A,位于
events_waits_current.OBJECT_INSTANCE_BEGIN。 -
你可以确定哪个线程正在持有互斥锁 A:
SELECT * FROM performance_schema.mutex_instances WHERE OBJECT_INSTANCE_BEGIN = *mutex_A*;查询结果显示线程 2 正在持有互斥锁 A,如
mutex_instances.LOCKED_BY_THREAD_ID中所示。 -
你可以看到线程 2 在做什么:
SELECT * FROM performance_schema.events_waits_current WHERE THREAD_ID = *thread_2*;
29.19.1 使用性能模式进行查询分析
译文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-query-profiling.html
以下示例演示了如何使用性能模式语句事件和阶段事件检索与SHOW PROFILES和SHOW PROFILE语句提供的性能信息类似的数据。
setup_actors表可用于通过主机、用户或帐户限制历史事件的收集,以减少运行时开销和历史表中收集的数据量。示例的第一步显示了如何将历史事件的收集限制为特定用户。
性能模式以皮秒(万亿分之一秒)显示事件计时器信息,以将时间数据标准化为标准单位。在以下示例中,TIMER_WAIT值除以 1000000000000 以以秒为单位显示数据。值还被截断为 6 位小数以以与SHOW PROFILES和SHOW PROFILE语句相同的格式显示数据。
-
将历史事件的收集限制为运行查询的用户。默认情况下,
setup_actors配置为允许监视和历史事件收集所有前台线程:mysql> SELECT * FROM performance_schema.setup_actors; +------+------+------+---------+---------+ | HOST | USER | ROLE | ENABLED | HISTORY | +------+------+------+---------+---------+ | % | % | % | YES | YES | +------+------+------+---------+---------+更新
setup_actors表中的默认行,禁用所有前台线程的历史事件收集和监视,并插入一个新行,以启用运行查询的用户的监视和历史事件收集:mysql> UPDATE performance_schema.setup_actors SET ENABLED = 'NO', HISTORY = 'NO' WHERE HOST = '%' AND USER = '%'; mysql> INSERT INTO performance_schema.setup_actors (HOST,USER,ROLE,ENABLED,HISTORY) VALUES('localhost','test_user','%','YES','YES');setup_actors表中的数据现在应类似于以下内容:mysql> SELECT * FROM performance_schema.setup_actors; +-----------+-----------+------+---------+---------+ | HOST | USER | ROLE | ENABLED | HISTORY | +-----------+-----------+------+---------+---------+ | % | % | % | NO | NO | | localhost | test_user | % | YES | YES | +-----------+-----------+------+---------+---------+ -
确保通过更新
setup_instruments表启用语句和阶段仪器。一些仪器可能已默认启用。mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%statement/%'; mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%stage/%'; -
确保
events_statements_*和events_stages_*消费者已启用。一些消费者可能已默认启用。mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_statements_%'; mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_stages_%'; -
在您正在监视的用户帐户下,运行要分析的语句。例如:
mysql> SELECT * FROM employees.employees WHERE emp_no = 10001; +--------+------------+------------+-----------+--------+------------+ | emp_no | birth_date | first_name | last_name | gender | hire_date | +--------+------------+------------+-----------+--------+------------+ | 10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 | +--------+------------+------------+-----------+--------+------------+ -
通过查询
events_statements_history_long表来识别语句的EVENT_ID。这一步类似于运行SHOW PROFILES来识别Query_ID。以下查询产生类似于SHOW PROFILES的输出:mysql> SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT FROM performance_schema.events_statements_history_long WHERE SQL_TEXT like '%10001%'; +----------+----------+--------------------------------------------------------+ | event_id | duration | sql_text | +----------+----------+--------------------------------------------------------+ | 31 | 0.028310 | SELECT * FROM employees.employees WHERE emp_no = 10001 | +----------+----------+--------------------------------------------------------+ -
查询
events_stages_history_long表以检索语句的阶段事件。阶段通过事件嵌套与语句相关联。每个阶段事件记录都有一个包含父语句的EVENT_ID的NESTING_EVENT_ID列。mysql> SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT/1000000000000,6) AS Duration FROM performance_schema.events_stages_history_long WHERE NESTING_EVENT_ID=31; +--------------------------------+----------+ | Stage | Duration | +--------------------------------+----------+ | stage/sql/starting | 0.000080 | | stage/sql/checking permissions | 0.000005 | | stage/sql/Opening tables | 0.027759 | | stage/sql/init | 0.000052 | | stage/sql/System lock | 0.000009 | | stage/sql/optimizing | 0.000006 | | stage/sql/statistics | 0.000082 | | stage/sql/preparing | 0.000008 | | stage/sql/executing | 0.000000 | | stage/sql/Sending data | 0.000017 | | stage/sql/end | 0.000001 | | stage/sql/query end | 0.000004 | | stage/sql/closing tables | 0.000006 | | stage/sql/freeing items | 0.000272 | | stage/sql/cleaning up | 0.000001 | +--------------------------------+----------+
29.19.2 获取父事件信息
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-obtaining-parent-events.html
data_locks 表显示持有和请求的数据锁。该表的行具有THREAD_ID列,指示拥有锁的会话的线程 ID,以及EVENT_ID列,指示导致锁的性能模式事件。(THREAD_ID, EVENT_ID)值的元组在其他性能模式表中隐式标识父事件:
-
events_waits_*xxx*表中的父等待事件 -
events_stages_*xxx*表中的父阶段事件 -
events_statements_*xxx*表中的父语句事件 -
events_transactions_current表中的父事务事件
要获取有关父事件的详细信息,请将THREAD_ID和EVENT_ID列与适当的父事件表中同名列进行连接。关系基于嵌套集数据模型,因此连接具有几个子句。给定由parent和child表示的父表和子表,连接如下所示:
WHERE
parent.THREAD_ID = child.THREAD_ID /* 1 */
AND parent.EVENT_ID < child.EVENT_ID /* 2 */
AND (
child.EVENT_ID <= parent.END_EVENT_ID /* 3a */
OR parent.END_EVENT_ID IS NULL /* 3b */
)
连接的条件是:
-
父事件和子事件在同一线程中。
-
子事件在父事件之后开始,因此其
EVENT_ID值大于父事件的值。 -
父事件已经完成或仍在运行。
要查找锁信息,data_locks 是包含子事件的表。
data_locks 表仅显示现有锁定,因此关于哪个表包含父事件的考虑如下:
-
对于事务,唯一的选择是
events_transactions_current。如果事务已完成,则可能在事务历史表中,但锁已经消失。 -
对于语句,一切取决于获取锁的语句是否是已经完成的事务中的语句(使用
events_statements_history)还是语句仍在运行(使用events_statements_current)。 -
对于阶段,逻辑与语句类似;使用
events_stages_history或events_stages_current。 -
对于等待,逻辑与语句类似;使用
events_waits_history或events_waits_current。然而,记录的等待太多,导致引起锁定的等待很可能已经从历史表中消失。
等待、阶段和语句事件很快就会从历史中消失。如果很久之前执行的语句获取了锁但仍在打开的事务中,可能无法找到该语句,但可以找到事务。
这就是为什么嵌套集数据模型更适合定位父事件。在父/子关系(数据锁 -> 父等待 -> 父阶段 -> 父事务)中跟随链接时,当中间节点已经从历史表中消失时,效果不佳。
以下场景说明了如何找到在其中获取锁的语句的父事务:
会话 A:
[1] START TRANSACTION;
[2] SELECT * FROM t1 WHERE pk = 1;
[3] SELECT 'Hello, world';
会话 B:
SELECT ...
FROM performance_schema.events_transactions_current AS parent
INNER JOIN performance_schema.data_locks AS child
WHERE
parent.THREAD_ID = child.THREAD_ID
AND parent.EVENT_ID < child.EVENT_ID
AND (
child.EVENT_ID <= parent.END_EVENT_ID
OR parent.END_EVENT_ID IS NULL
);
会话 B 的查询应该显示语句 [2] 拥有记录中 pk=1 的数据锁。
如果会话 A 执行更多语句,[2] 将从历史表中消失。
查询应该显示从 [1] 开始的事务,无论执行了多少语句、阶段或等待。
要查看更多数据,还可以使用events_*xxx*_history_long表,除了事务,假设服务器中没有运行其他查询(以便保留历史记录)。
29.20 关于 Performance Schema 的限制
原文:
dev.mysql.com/doc/refman/8.0/en/performance-schema-restrictions.html
Performance Schema 避免使用互斥锁来收集或生成数据,因此无法保证一致性,结果有时可能不正确。performance_schema 表中的事件值是不确定性的且不可重复的。
如果您将事件信息保存在另一个表中,则不应假定原始事件稍后仍然可用。例如,如果您从 performance_schema 表中选择事件到临时表中,打算稍后将该表与原始表连接,可能会找不到匹配项。
mysqldump 和 BACKUP DATABASE 会忽略 performance_schema 数据库中的表。
performance_schema 数据库中的表无法使用 LOCK TABLES 进行锁定,除了 setup_*xxx* 表。
performance_schema 数据库中的表无法被索引。
performance_schema 数据库中的表不会被复制。
计时器的类型可能因平台而异。performance_timers 表显示了可用的事件计时器。如果给定计时器名称在此表中的值为 NULL,则表示该计时器在您的平台上不受支持。
适用于存储引擎的工具可能并未为所有存储引擎实现。每个第三方引擎的工具化是引擎维护者的责任。
第三十章 MySQL sys 模式
目录
30.1 使用 sys 模式的先决条件
30.2 使用 sys 模式
30.3 sys 模式的进度报告
30.4 sys 模式对象参考
30.4.1 sys 模式对象索引
30.4.2 sys 模式的表和触发器
30.4.3 sys 模式的视图
30.4.4 sys 模式的存储过程
30.4.5 sys 模式的存储函数
MySQL 8.0 包括sys模式,这是一组对象,帮助 DBA 和开发人员解释 Performance Schema 收集的数据。sys模式对象可用于典型的调优和诊断用例。此模式中的对象包括:
-
将 Performance Schema 数据汇总为更易理解形式的视图。
-
执行操作,如 Performance Schema 配置和生成诊断报告的存储过程。
-
查询 Performance Schema 配置并提供格式化服务的存储函数。
对于新安装,如果您使用带有--initialize或--initialize-insecure选项的mysqld进行数据目录初始化,默认情况下会安装sys模式。如果不需要这个模式,您可以在初始化后手动删除sys模式。
如果存在一个没有version视图的sys模式,则 MySQL 升级过程会产生错误,假设缺少此视图表示用户创建了sys模式。在这种情况下,要升级,请先删除或重命名现有的sys模式。
sys模式对象的DEFINER为'mysql.sys'@'localhost'。使用专用的mysql.sys帐户可以避免如果 DBA 重命名或删除root帐户而导致的问题。
30.1 使用 sys 模式的先决条件
原文:
dev.mysql.com/doc/refman/8.0/en/sys-schema-prerequisites.html
在使用sys模式之前,必须满足本节中描述的先决条件。
因为sys模式提供了访问性能模式的另一种方式,所以性能模式必须启用才能使sys模式正常工作。请参阅第 29.3 节“性能模式启动配置”。
要完全访问sys模式,用户必须具有以下权限:
-
对所有
sys表和视图进行SELECT操作 -
对所有
sys存储过程和函数进行EXECUTE操作 -
如果要对其进行更改,则对
sys_config表进行INSERT和UPDATE操作 -
对于某些
sys模式存储过程和函数,还需要额外的权限,如其描述中所述(例如,ps_setup_save()过程")过程)
还必须具有底层对象的权限,这些对象是sys模式对象的基础:
-
对由
sys模式对象访问的任何性能模式表进行SELECT操作,并且对使用sys模式对象更新的任何表进行UPDATE操作 -
对
INFORMATION_SCHEMA中的INNODB_BUFFER_PAGE表进行PROCESS操作
必须启用某些性能模式工具和消费者,并且(对于工具)必须定时以充分利用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);
30.2 使用 sys 模式
您可以将 sys 模式设置为默认模式,以便引用其对象时无需使用模式名称限定:
mysql> USE sys;
Database changed
mysql> SELECT * FROM version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 2.1.1 | 8.0.26-debug |
+-------------+---------------+
(version 视图显示 sys 模式和 MySQL 服务器版本。)
要在默认情况下访问 sys 模式对象(或者只是明确),请使用模式名称限定对象引用:
mysql> SELECT * FROM sys.version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 2.1.1 | 8.0.26-debug |
+-------------+---------------+
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$ 视图之间差异的更多信息,请参阅 第 30.4.3 节“sys 模式视图”。
要检查 sys 模式对象定义,请使用适当的 SHOW 语句或 INFORMATION_SCHEMA 查询。例如,要检查 session 视图和 format_bytes() 函数") 函数的定义,请使用以下语句:
mysql> SHOW CREATE VIEW sys.session;
mysql> SHOW CREATE FUNCTION sys.format_bytes;
然而,这些语句以相对未格式化的形式显示定义。要查看具有更易读格式的对象定义,请访问 MySQL 源分发中 scripts/sys_schema 下找到的各个 .sql 文件。在 MySQL 8.0.18 之前,这些源代码是在一个单独的分发中维护的,可以从 sys 模式开发网站 github.com/mysql/mysql-sys 获取。
无论是mysqldump还是mysqlpump默认情况下都不会转储sys模式。要生成一个转储文件,请在命令行上明确命名sys模式,使用以下任一命令:
mysqldump --databases --routines sys > sys_dump.sql
mysqlpump sys > sys_dump.sql
要从转储文件重新安装模式,请使用以下命令:
mysql < sys_dump.sql
30.3 sys Schema 进度报告
原文:
dev.mysql.com/doc/refman/8.0/en/sys-schema-progress-reporting.html
以下sys模式视图为长时间运行的事务提供进度报告:
processlist
session
x$processlist
x$session
假设所需的仪器和消费者已启用,则这些视图的progress列显示支持进度报告的阶段已完成工作的百分比。
阶段进度报告要求启用events_stages_current消费者,以及需要进度信息的仪器。目前支持进度报告的阶段的仪器有:
stage/sql/Copying to tmp table
stage/innodb/alter table (end)
stage/innodb/alter table (flush)
stage/innodb/alter table (insert)
stage/innodb/alter table (log apply index)
stage/innodb/alter table (log apply table)
stage/innodb/alter table (merge sort)
stage/innodb/alter table (read PK and internal sort)
stage/innodb/buffer pool load
对于不支持估计和已完成工作报告的阶段,或者如果所需的仪器或消费者未启用,则progress列为NULL。
30.4 sys 模式对象参考
原文:
dev.mysql.com/doc/refman/8.0/en/sys-schema-reference.html
30.4.1 sys 模式对象索引
30.4.2 sys 模式的表和触发器
30.4.3 sys 模式的视图
30.4.4 sys 模式的存储过程
30.4.5 sys 模式的存储函数
sys模式包括表和触发器、视图以及存储过程和函数。以下部分详细介绍了这些对象。
30.4.1 sys 模式对象索引
原文:
dev.mysql.com/doc/refman/8.0/en/sys-schema-object-index.html
下表列出了sys模式对象,并提供了每个对象的简短描述。
表 30.1 sys 模式表和触发器
| 表或触发器名称 | 描述 |
|---|---|
sys_config | sys 模式配置选项表 |
sys_config_insert_set_user | sys_config 插入触发器 |
sys_config_update_set_user | sys_config 更新触发器 |
表 30.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 服务器版本 | 8.0.18 |
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 | 95th-percentile 视图的辅助视图 | |
x$ps_digest_avg_latency_distribution | 95th-percentile 视图的辅助视图 | |
x$ps_schema_table_statistics_io | 表统计视图的辅助视图 | |
x$schema_flattened_keys | schema_redundant_indexes 的辅助视图 | |
| 视图名称 | 描述 | 已弃用 |
表 30.3 sys 模式存储过程
| 过程名称 | 描述 |
|---|---|
create_synonym_db() 过程") | 为模式创建同义词 |
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() 过程") | 显示已禁用的性能模式消费者 |
ps_setup_show_disabled_instruments() 过程") | 显示已禁用的性能模式工具 |
ps_setup_show_enabled() 过程") | 显示已启用的性能模式配置 |
ps_setup_show_enabled_consumers() 过程") | 显示已启用的性能模式消费者 |
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() 过程") | 检查表是否存在 |
| 过程名称 | 描述 |
表 30.4 sys 模式存储函数
| 函数名称 | 描述 | 已弃用 |
|---|---|---|
extract_schema_from_file_name() Function") | 从文件名中提取模式名部分 | |
extract_table_from_file_name() Function") | 从文件名中提取表名部分 | |
format_bytes() Function") | 将字节计数转换为带单位的值 | 8.0.16 |
format_path() Function") | 用符号系统变量名替换路径名中的目录 | |
format_statement() Function") | 将长语句截断为固定长度 | |
format_time() Function") | 将皮秒时间转换为带单位的值 | 8.0.16 |
list_add() Function") | 向列表添加项目 | |
list_drop() Function") | 从列表中移除项目 | |
ps_is_account_enabled() Function") | 是否启用帐户的性能模式仪表 | |
ps_is_consumer_enabled() Function") | 是否启用性能模式消费者 | |
ps_is_instrument_default_enabled() Function") | 是否默认启用性能模式仪表 | |
ps_is_instrument_default_timed() Function") | 是否默认启用性能模式计时仪表 | |
ps_is_thread_instrumented() Function") | 是否启用连接 ID 的性能模式仪表 | |
ps_thread_account() Function") | 与性能模式线程 ID 关联的帐户 | |
ps_thread_id() Function") | 与连接 ID 关联的性能模式线程 ID | 8.0.16 |
ps_thread_stack() Function") | 连接 ID 的事件信息 | |
ps_thread_trx_info() Function") | 线程 ID 的事务信息 | |
quote_identifier() Function") | 将字符串引用为标识符 | |
sys_get_config() Function") | 系统模式配置选项值 | |
version_major() 函数") | MySQL 服务器主要版本号 | |
version_minor() 函数") | MySQL 服务器次要版本号 | |
version_patch() 函数") | MySQL 服务器补丁发布版本号 | |
| 函数名称 | 描述 | 已弃用 |
30.4.2 sys 模式的表和触发器
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 模式的表和触发器。
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 SchemaTABLES表上执行表扫描。如果有许多表,这可能很昂贵。默认值为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.viewstatement_performance_analyzer()Procedure") 过程要使用的自定义查询或视图(它本身被diagnostics()Procedure") 过程调用)。如果选项值包含空格,则将其解释为查询。否则,它必须是查询 Performance Schemaevents_statements_summary_by_digest表的现有视图的名称。如果statement_performance_analyzer.limit配置选项大于 0,则查询或视图定义中不能有LIMIT子句。默认值为NULL(未定义自定义视图)。 -
statement_truncate_len,@sys.statement_truncate_lenformat_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;