MySQL8-中文参考-一百一十一-

45 阅读52分钟

MySQL8 中文参考(一百一十一)

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

原文: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_mainmysql_admin分别是主连接接口和管理连接接口的通道名称。有关不同接口的信息,请参见 Section 7.1.12.1, “Connection Interfaces”。

  • PROPERTY

    TLS 属性名称。Enabled属性的行指示整体接口状态,其中接口及其状态分别在CHANNELVALUE列中命名。其他属性名称指示特定的 TLS 属性。这些通常对应于与 TLS 相关的状态变量的名称。

  • VALUE

    TLS 属性值。

由该表公开的属性不是固定的,而是取决于每个通道实现的仪表化。

对于每个通道,具有PROPERTY值为Enabled的行指示通道是否支持加密连接,其他通道行指示 TLS 上下文属性:

  • 对于mysql_mainEnabled属性为yesno,表示主接口是否支持加密连接。其他通道行显示主接口的 TLS 上下文属性。

    对于主接口,可以使用以下语句获取类似的状态信息:

    SHOW GLOBAL STATUS LIKE 'current_tls%';
    SHOW GLOBAL STATUS LIKE 'ssl%';
    
  • 对于mysql_admin,如果管理接口未启用或已启用但不支持加密连接,则Enabled属性为no。如果接口已启用并支持加密连接,则Enabledyes

    Enabledyes 时,如果为该接口配置了一些非默认的 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_NAME

    SQL 语句中引用的函数名称。如果函数是由 CREATE FUNCTION 语句注册并正在卸载过程中,则值为 NULL

  • UDF_RETURN_TYPE

    函数返回值类型。值为 intdecimalrealcharrow 中的一个。

  • 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

    此变量的值为ONOFF,表示性能模式是否已启用。默认情况下,该值为ON。在服务器启动时,您可以指定此变量不带值或带ON或 1 的值来启用它,或者带OFF或 0 的值来禁用它。

    即使性能模式被禁用,它仍会继续填充global_variablessession_variablesglobal_statussession_status表。这是必要的,以便从这些表中获取SHOW VARIABLESSHOW STATUS语句的结果。性能模式在禁用时也会填充一些复制表。

  • performance_schema_accounts_size

    命令行格式--performance-schema-accounts-size=#
    系统变量performance_schema_accounts_size
    范围全局
    动态
    SET_VAR 提示适用
    类型整数
    默认值-1(表示自动缩放;不要分配此文字值)
    最小值-1(表示自动缩放;不要分配此文字值)
    最大值1048576

    accounts表中的行数。如果此变量为 0,则性能模式不会在accounts表中维护连接统计信息,也不会在status_by_account表中维护状态变量信息。

  • performance_schema_digests_size

    命令行格式--performance-schema-digests-size=#
    系统变量performance_schema_digests_size
    范围全局
    DynamicNo
    SET_VAR 提示适用
    类型整数
    Default Value-1(表示自动调整大小;不要分配此文字值)
    最小值-1(表示自动缩放;不要分配此文字值)
    最大值1048576

    events_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=0ERROR_NAME=NULLSQLSTATE=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(表示自动缩放;不要分配此文字值)
    最大值1048576

    events_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(表示自动缩放;不要分配此文字值)
    最大值1048576

    events_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(表示自动缩放;不要分配此文字值)
    最大值1024

    events_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(表示自动缩放;不要分配此文字值)
    最大值1048576

    events_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(表示自动缩放;不要分配此文字值)
    最大值1048576

    hosts 表中的行数。如果此变量为 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(表示自动缩放;不要分配此字面值)
    最大值1048576

    Performance 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 (表示自动缩放;不要分配此文字值)
    最大值4194304

    prepared_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_currentevents_statements_historyevents_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
    最大值256

    Performance 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_threadstatus_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(表示自动调整大小;不要分配此文字值)
    最大值1048576

    setup_actors表中的行数。

  • performance_schema_setup_objects_size

    命令行格式--performance-schema-setup-objects-size=#
    系统变量performance_schema_setup_objects_size
    范围全局
    动态
    SET_VAR提示适用
    类型整数
    默认值-1(表示自动缩放;不要分配此文字值)
    最小值-1(表示自动缩放;不要分配此文字值)
    最大值1048576

    setup_objects表中的行数。

  • performance_schema_show_processlist

    命令行格式--performance-schema-show-processlist[={OFF|ON}]
    引入版本8.0.22
    已弃用8.0.35
    系统变量performance_schema_show_processlist
    范围全局
    动态
    SET_VAR提示适用
    类型布尔
    默认值OFF

    SHOW 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(表示自动缩放;不要分配此文字值)
    最大值1048576

    users表中的行数。如果此变量为 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, “性能模式事件过滤”中有描述。

以下示例提供了一种方法,您可以使用该方法分析可重复的问题,例如调查性能瓶颈。首先,您应该有一个性能被认为“太慢”并需要优化的可重复用例,并且应该启用所有仪器(完全不进行预过滤)。

  1. 运行用例。

  2. 使用性能模式表,分析性能问题的根本原因。这种分析在很大程度上依赖于后过滤。

  3. 对于已排除的问题领域,禁用相应的仪器。例如,如果分析显示问题与特定存储引擎中的文件 I/O 无关,则禁用该引擎的文件 I/O 仪器。然后截断历史和摘要表以删除先前收集的事件。

  4. 重复步骤 1 中的过程。

    随着每次迭代,性能模式输出,特别是events_waits_history_long表,包含的由于不重要的仪器引起的“噪音”越来越少,而且由于该表具有固定大小,包含的与手头问题分析相关的数据越来越多。

    随着每次迭代,调查应该越来越接近问题的根本原因,因为“信号/噪音”比例改善,使分析变得更容易。

  5. 一旦确定了性能瓶颈的根本原因,采取适当的纠正措施,例如:

    • 调整服务器参数(缓存大小、内存等)。

    • 通过不同方式编写查询来调整查询,

    • 调整数据库架构(表、索引等)。

    • 调整代码(仅适用于存储引擎或服务器开发人员)。

  6. 重新从步骤 1 开始,以查看对性能的更改产生的影响。

mutex_instances.LOCKED_BY_THREAD_IDrwlock_instances.WRITE_LOCKED_BY_THREAD_ID 列对于调查性能瓶颈或死锁非常重要。这是通过性能模式仪器实现的:

  1. 假设线程 1 因等待互斥锁而被阻塞。

  2. 您可以确定线程正在等待什么:

    SELECT * FROM performance_schema.events_waits_current
    WHERE THREAD_ID = *thread_1*;
    

    查询结果显示线程正在等待互斥锁 A,位于events_waits_current.OBJECT_INSTANCE_BEGIN

  3. 你可以确定哪个线程正在持有互斥锁 A:

    SELECT * FROM performance_schema.mutex_instances
    WHERE OBJECT_INSTANCE_BEGIN = *mutex_A*;
    

    查询结果显示线程 2 正在持有互斥锁 A,如mutex_instances.LOCKED_BY_THREAD_ID中所示。

  4. 你可以看到线程 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 PROFILESSHOW PROFILE语句提供的性能信息类似的数据。

setup_actors表可用于通过主机、用户或帐户限制历史事件的收集,以减少运行时开销和历史表中收集的数据量。示例的第一步显示了如何将历史事件的收集限制为特定用户。

性能模式以皮秒(万亿分之一秒)显示事件计时器信息,以将时间数据标准化为标准单位。在以下示例中,TIMER_WAIT值除以 1000000000000 以以秒为单位显示数据。值还被截断为 6 位小数以以与SHOW PROFILESSHOW PROFILE语句相同的格式显示数据。

  1. 将历史事件的收集限制为运行查询的用户。默认情况下,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     |
    +-----------+-----------+------+---------+---------+
    
  2. 确保通过更新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/%';
    
  3. 确保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_%';
    
  4. 在您正在监视的用户帐户下,运行要分析的语句。例如:

    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 |
    +--------+------------+------------+-----------+--------+------------+
    
  5. 通过查询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 |
    +----------+----------+--------------------------------------------------------+
    
  6. 查询events_stages_history_long表以检索语句的阶段事件。阶段通过事件嵌套与语句相关联。每个阶段事件记录都有一个包含父语句的EVENT_IDNESTING_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_IDEVENT_ID列与适当的父事件表中同名列进行连接。关系基于嵌套集数据模型,因此连接具有几个子句。给定由parentchild表示的父表和子表,连接如下所示:

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 */
  )

连接的条件是:

  1. 父事件和子事件在同一线程中。

  2. 子事件在父事件之后开始,因此其EVENT_ID值大于父事件的值。

  3. 父事件已经完成或仍在运行。

要查找锁信息,data_locks 是包含子事件的表。

data_locks 表仅显示现有锁定,因此关于哪个表包含父事件的考虑如下:

  • 对于事务,唯一的选择是events_transactions_current。如果事务已完成,则可能在事务历史表中,但锁已经消失。

  • 对于语句,一切取决于获取锁的语句是否是已经完成的事务中的语句(使用events_statements_history)还是语句仍在运行(使用events_statements_current)。

  • 对于阶段,逻辑与语句类似;使用events_stages_historyevents_stages_current

  • 对于等待,逻辑与语句类似;使用events_waits_historyevents_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 表中选择事件到临时表中,打算稍后将该表与原始表连接,可能会找不到匹配项。

mysqldumpBACKUP DATABASE 会忽略 performance_schema 数据库中的表。

performance_schema 数据库中的表无法使用 LOCK TABLES 进行锁定,除了 setup_*xxx* 表。

performance_schema 数据库中的表无法被索引。

performance_schema 数据库中的表不会被复制。

计时器的类型可能因平台而异。performance_timers 表显示了可用的事件计时器。如果给定计时器名称在此表中的值为 NULL,则表示该计时器在您的平台上不受支持。

适用于存储引擎的工具可能并未为所有存储引擎实现。每个第三方引擎的工具化是引擎维护者的责任。

第三十章 MySQL sys 模式

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

目录

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表进行INSERTUPDATE操作

  • 对于某些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 模式

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

您可以将 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_configsys 模式配置选项表
sys_config_insert_set_usersys_config 插入触发器
sys_config_update_set_usersys_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_waitsInnoDB 锁信息
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_columnsAUTO_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_us95th-percentile 视图的辅助视图
x$ps_digest_avg_latency_distribution95th-percentile 视图的辅助视图
x$ps_schema_table_statistics_io表统计视图的辅助视图
x$schema_flattened_keysschema_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 关联的性能模式线程 ID8.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 模式的表和触发器

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

30.4.2.1 sys_config 表

30.4.2.2 sys_config_insert_set_user 触发器

30.4.2.3 sys_config_update_set_user 触发器

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

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

30.4.2.1 sys_config

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

sys_config表具有以下列:

  • variable

    配置选项名称。

  • value

    配置选项值。

  • set_time

    最近修改行的时间戳。

  • set_by

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

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

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

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

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

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

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

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

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

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

  • diagnostics.allow_i_s_tables@sys.diagnostics.allow_i_s_tables

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

  • diagnostics.include_raw@sys.diagnostics.include_raw

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

  • ps_thread_trx_info.max_length@sys.ps_thread_trx_info.max_length

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

  • statement_performance_analyzer.limit@sys.statement_performance_analyzer.limit

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

  • statement_performance_analyzer.view@sys.statement_performance_analyzer.view

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

  • statement_truncate_len, @sys.statement_truncate_len

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

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

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

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

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

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

mysql> SET @sys.debug = NULL;