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

32 阅读26分钟

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

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

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

30.4.3.38 statements_with_runtimes_in_95th_percentilex$statements_with_runtimes_in_95th_percentile 视图

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

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

statements_with_runtimes_in_95th_percentilex$statements_with_runtimes_in_95th_percentile 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • full_scan

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

  • exec_count

    语句执行的总次数。

  • err_count

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

  • warn_count

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

  • total_latency

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

  • max_latency

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

  • avg_latency

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

  • rows_sent

    语句执行返回的总行数。

  • rows_sent_avg

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

  • rows_examined

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

  • rows_examined_avg

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

  • first_seen

    首次出现语句的时间。

  • last_seen

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

  • digest

    语句摘要。

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

30.4.3.39 statements_with_sorting 和 x$statements_with_sorting 视图

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

statements_with_sortingx$statements_with_sorting 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • total_latency

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

  • sort_merge_passes

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

  • avg_sort_merges

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

  • sorts_using_scans

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

  • sort_using_range

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

  • rows_sorted

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

  • avg_rows_sorted

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

  • first_seen

    该语句首次出现的时间。

  • last_seen

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

  • digest

    语句摘要。

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

30.4.3.40 语句 _with_temp_tables 和 x$statements_with_temp_tables 视图

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

statements_with_temp_tablesx$statements_with_temp_tables 视图具有以下列:

  • query

    规范化的语句字符串。

  • db

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

  • exec_count

    语句执行的总次数。

  • total_latency

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

  • memory_tmp_tables

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

  • disk_tmp_tables

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

  • avg_tmp_tables_per_query

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

  • tmp_tables_to_disk_pct

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

  • first_seen

    语句首次出现的时间。

  • last_seen

    语句最近出现的时间。

  • digest

    陈述摘要。

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

30.4.3.41 用户摘要和 x$user_summary 视图

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

user_summaryx$user_summary 视图具有以下列:

  • user

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

  • statements

    用户的语句总数。

  • statement_latency

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

  • statement_avg_latency

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

  • table_scans

    用户的表扫描总数。

  • file_ios

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

  • file_io_latency

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

  • current_connections

    用户的当前连接数。

  • total_connections

    用户的总连接数。

  • unique_hosts

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

  • current_memory

    用户的当前分配内存量。

  • total_memory_allocated

    用户的总分配内存量。

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

30.4.3.42 user_summary_by_file_iox$user_summary_by_file_io视图

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

user_summary_by_file_iox$user_summary_by_file_io视图具有以下列:

  • user

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

  • ios

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

  • io_latency

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

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

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

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

user_summary_by_file_io_typex$user_summary_by_file_io_type视图具有以下列:

  • 用户

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

  • 事件名称

    文件 I/O 事件名称。

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

  • 延迟

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

  • 最大延迟

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

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

30.4.3.44 用户 _summary_by_stages 和 x$user_summary_by_stages 视图

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

user_summary_by_stagesx$user_summary_by_stages 视图具有以下列:

  • user

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

  • event_name

    阶段事件名称。

  • total

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

  • total_latency

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

  • avg_latency

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

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

30.4.3.45 用户 _summary_by_statement_latency 和 x$user_summary_by_statement_latency 视图

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

user_summary_by_statement_latencyx$user_summary_by_statement_latency 视图具有以下列:

  • user

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

  • total

    用户的语句总数。

  • total_latency

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

  • max_latency

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

  • lock_latency

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

  • cpu_latency

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

  • rows_sent

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

  • rows_examined

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

  • rows_affected

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

  • full_scans

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

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

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

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

user_summary_by_statement_typex$user_summary_by_statement_type 视图具有以下列:

  • user

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

  • statement

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

  • total

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

  • total_latency

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

  • max_latency

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

  • lock_latency

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

  • cpu_latency

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

  • rows_sent

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

  • rows_examined

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

  • rows_affected

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

  • full_scans

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

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

30.4.3.47 版本视图

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

注意

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

version视图包含以下列:

  • sys_version

    sys模式版本。

  • mysql_version

    MySQL 服务器版本。

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

30.4.3.48 wait_classes_global_by_avg_latencyx$wait_classes_global_by_avg_latency 视图

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

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

wait_classes_global_by_avg_latencyx$wait_classes_global_by_avg_latency 视图具有以下列:

  • event_class

    事件类别。

  • total

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

  • total_latency

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

  • min_latency

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

  • avg_latency

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

  • max_latency

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

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

30.4.3.49 wait_classes_global_by_latency 和 x$wait_classes_global_by_latency 视图

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

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

wait_classes_global_by_latencyx$wait_classes_global_by_latency视图具有以下列:

  • event_class

    事件类别。

  • total

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

  • total_latency

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

  • min_latency

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

  • avg_latency

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

  • max_latency

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

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

30.4.3.50 waits_by_host_by_latency 和 x$waits_by_host_by_latency 视图

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

waits_by_host_by_latencyx$waits_by_host_by_latency 视图具有以下列:

  • host

    连接来源主机。

  • event

    事件名称。

  • total

    主机的事件发生总次数。

  • total_latency

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

  • avg_latency

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

  • max_latency

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

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

30.4.3.51 waits_by_user_by_latency 和 x$waits_by_user_by_latency 视图

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

waits_by_user_by_latencyx$waits_by_user_by_latency 视图具有以下列:

  • 用户

    与连接相关联的用户。

  • 事件

    事件名称。

  • 总数

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

  • 总延迟

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

  • 平均延迟

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

  • 最大延迟

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

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

30.4.3.52 waits_global_by_latency 和 x$waits_global_by_latency 视图

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

waits_global_by_latencyx$waits_global_by_latency 视图包含以下列:

  • events

    事件名称。

  • total

    事件发生的总次数。

  • total_latency

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

  • avg_latency

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

  • max_latency

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

30.4.4 sys Schema 存储过程

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

30.4.4.1 create_synonym_db() 过程

30.4.4.2 diagnostics() 过程

30.4.4.3 execute_prepared_stmt() 过程

30.4.4.4 ps_setup_disable_background_threads() 过程

30.4.4.5 ps_setup_disable_consumer() 过程

30.4.4.6 ps_setup_disable_instrument() 过程

30.4.4.7 ps_setup_disable_thread() 过程

30.4.4.8 ps_setup_enable_background_threads() 过程

30.4.4.9 ps_setup_enable_consumer() 过程

30.4.4.10 ps_setup_enable_instrument() 过程

30.4.4.11 ps_setup_enable_thread() 过程

30.4.4.12 ps_setup_reload_saved() 过程

30.4.4.13 ps_setup_reset_to_default() 过程

30.4.4.14 ps_setup_save() 过程

30.4.4.15 ps_setup_show_disabled() 过程

30.4.4.16 ps_setup_show_disabled_consumers() 过程

30.4.4.17 ps_setup_show_disabled_instruments() 过程

30.4.4.18 ps_setup_show_enabled() 过程

30.4.4.19 ps_setup_show_enabled_consumers() 过程

30.4.4.20 ps_setup_show_enabled_instruments() 过程

30.4.4.21 ps_statement_avg_latency_histogram() 过程

30.4.4.22 ps_trace_statement_digest() 过程

30.4.4.23 ps_trace_thread() 过程

30.4.4.24 ps_truncate_all_tables() 过程

30.4.4.25 statement_performance_analyzer() 过程

30.4.4.26 table_exists() 过程

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

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

30.4.4.1 create_synonym_db() 过程

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

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

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

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

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

30.4.4.2 The diagnostics() Procedure

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

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

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

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

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

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

  • 复制状态(源和副本)

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

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

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

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

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

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

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

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

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

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

    注意

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

    使用mediumfull设置需要SUPER特权。

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

配置选项

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

  • debug@sys.debug

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

  • diagnostics.allow_i_s_tables@sys.diagnostics.allow_i_s_tables

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

  • diagnostics.include_raw@sys.diagnostics.include_raw

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

  • statement_truncate_len@sys.statement_truncate_len

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

示例

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

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

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

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

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

30.4.4.3 execute_prepared_stmt() 过程

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

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

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

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

  • debug@sys.debug

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

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

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

30.4.4.4 ps_setup_disable_background_threads() 过程

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

参数

无。

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

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

30.4.4.5 ps_setup_disable_consumer() 存储过程

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

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

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

示例

禁用所有语句消费者:

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

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

30.4.4.6 ps_setup_disable_instrument() 过程

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

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

    ''的值匹配所有仪器。

示例

禁用特定仪器:

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

禁用所有互斥仪器:

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

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

30.4.4.7 ps_setup_disable_thread() 过程

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

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

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

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

禁用当前连接:

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

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

30.4.4.8 ps_setup_enable_background_threads() 过程

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

参数

无。

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

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

30.4.4.9 ps_setup_enable_consumer() 过程

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

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

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

示例

启用所有语句消费者:

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

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

30.4.4.10 ps_setup_enable_instrument()过程

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

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

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

示例

启用特定仪器:

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

启用所有互斥仪器:

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

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

30.4.4.11 ps_setup_enable_thread() 过程

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

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

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

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

启用当前连接:

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

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

30.4.4.12 ps_setup_reload_saved() 过程

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

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

参数

无。

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

30.4.4.13 ps_setup_reset_to_default() 过程

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

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

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

...

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

30.4.4.14 ps_setup_save() 过程

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

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

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

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

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

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

mysql> CALL sys.ps_setup_reload_saved();

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

30.4.4.15 ps_setup_show_disabled() 过程

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

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

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

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

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

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

...

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

30.4.4.16 ps_setup_show_disabled_consumers() 过程

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

参数

无。

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

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

30.4.4.17 ps_setup_show_disabled_instruments() 过程

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

参数

无。

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

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

30.4.4.18 ps_setup_show_enabled() 过程

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

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

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

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

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

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

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

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

30.4.4.19 ps_setup_show_enabled_consumers() 过程

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

参数

无。

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

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

30.4.4.20 ps_setup_show_enabled_instruments() 过程

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

参数

无。

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

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

30.4.4.21 ps_statement_avg_latency_histogram() 过程

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

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

参数

无。

示例

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

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

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

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

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

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

30.4.4.22 ps_trace_statement_digest() 过程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Query OK, 0 rows affected (9.28 sec)

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

30.4.4.23 ps_trace_thread() 过程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30.4.4.24 ps_truncate_all_tables() 过程

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

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

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

30.4.4.25 statement_performance_analyzer()过程

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

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

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

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

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

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

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

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

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

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

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

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

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

    • with_runtimes_in_95th_percentile: Use the statements_with_runtimes_in_95th_percentile view.

    • analysis: Use the statement_analysis view.

    • with_errors_or_warnings: Use the statements_with_errors_or_warnings view.

    • with_full_table_scans: Use the statements_with_full_table_scans view.

    • with_sorting: Use the statements_with_sorting view.

    • with_temp_tables: Use the statements_with_temp_tables view.

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

Configuration Options

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

  • debug, @sys.debug

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

  • statement_performance_analyzer.limit, @sys.statement_performance_analyzer.limit

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

  • statement_performance_analyzer.view, @sys.statement_performance_analyzer.view

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

Example

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

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

  2. Create the initial snapshot.

  3. Save the initial snapshot in the temporary table.

  4. Wait one minute.

  5. Create a new snapshot.

  6. Perform analysis based on the new snapshot.

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


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

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

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

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

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

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

mysql> 休眠 60 秒;

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

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

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

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

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

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

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

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

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

1 行受影响 (0.05 秒)

...

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

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

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

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

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

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

1 行受影响 (0.03 秒)

...

```sql

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

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

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

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

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

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

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

下一个输出

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

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

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

1 行受影响 (0.01 秒)

...

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

下一个输出

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

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

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

1 行受影响 (0.09 秒)

...


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

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

SELECT sys.format_statement(DIGEST_TEXT) AS query,

        SCHEMA_NAME AS db,

        COUNT_STAR AS exec_count,

        sys.format_time(SUM_TIMER_WAIT) AS total_latency,

        sys.format_time(AVG_TIMER_WAIT) AS avg_latency,

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

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

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

        DIGEST AS digest

    FROM performance_schema.events_statements_summary_by_digest

按 SUM_TIMER_WAIT 降序排列;

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

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

Query OK, 0 rows affected (0.10 sec)

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

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

SET @sys.statement_performance_analyzer.limit = 10;

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

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

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

""

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

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

下一个输出

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

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

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

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

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

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

...



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

#### 30.4.4.26 table_exists() 过程

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

##### 参数

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

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

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

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

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

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

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

##### 示例

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

mysql> USE db1;
Database changed

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

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

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

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

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

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

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

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

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

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

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

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

30.4.5 sys Schema 存储函数

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

30.4.5.1 extract_schema_from_file_name() 函数

30.4.5.2 extract_table_from_file_name() 函数

30.4.5.3 format_bytes() 函数

30.4.5.4 format_path() 函数

30.4.5.5 format_statement() 函数

30.4.5.6 format_time() 函数

30.4.5.7 list_add() 函数

30.4.5.8 list_drop() 函数

30.4.5.9 ps_is_account_enabled() 函数

30.4.5.10 ps_is_consumer_enabled() 函数

30.4.5.11 ps_is_instrument_default_enabled() 函数

30.4.5.12 ps_is_instrument_default_timed() 函数

30.4.5.13 ps_is_thread_instrumented() 函数

30.4.5.14 ps_thread_account() 函数

30.4.5.15 ps_thread_id() 函数

30.4.5.16 ps_thread_stack() 函数

30.4.5.17 ps_thread_trx_info() 函数

30.4.5.18 quote_identifier() 函数

30.4.5.19 sys_get_config() 函数

30.4.5.20 version_major() 函数

30.4.5.21 version_minor() 函数

30.4.5.22 version_patch() 函数

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