MySQL8 中文参考(一百一十三)
原文:
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_percentile 和 x$statements_with_runtimes_in_95th_percentile 视图
这些视图列出了运行时间处于第 95 百分位数的语句。默认情况下,按照平均延迟降序排序行。
这两个视图使用两个辅助视图,x$ps_digest_avg_latency_distribution 和 x$ps_digest_95th_percentile_by_avg_us。
statements_with_runtimes_in_95th_percentile 和 x$statements_with_runtimes_in_95th_percentile 视图具有以下列:
-
query规范化的语句字符串。
-
db语句的默认数据库,如果没有则为
NULL。 -
full_scan语句执行的全表扫描总次数。
-
exec_count语句执行的总次数。
-
err_count语句执行产生的错误总数。
-
warn_count语句执行产生的警告总数。
-
total_latency语句定时执行的总等待时间。
-
max_latency语句定时执行的最大单次等待时间。
-
avg_latency每次定时执行语句的平均等待时间。
-
rows_sent语句执行返回的总行数。
-
rows_sent_avg每次语句执行返回的平均行数。
-
rows_examined语句执行从存储引擎读取的总行数。
-
rows_examined_avg每次语句执行从存储引擎读取的平均行数。
-
first_seen首次出现语句的时间。
-
last_seen语句最近一次出现的时间。
-
digest语句摘要。
原文:
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_sorting 和 x$statements_with_sorting 视图具有以下列:
-
query规范化的语句字符串。
-
db语句的默认数据库,如果没有则为
NULL。 -
exec_count语句执行的总次数。
-
total_latency该语句定时出现的总等待时间。
-
sort_merge_passes通过语句出现的总排序合并次数。
-
avg_sort_merges每次语句出现的平均排序合并次数。
-
sorts_using_scans通过语句出现的表扫描进行排序的总次数。
-
sort_using_range通过语句出现的范围访问进行排序的总次数。
-
rows_sorted通过语句出现的总排序行数。
-
avg_rows_sorted每次语句出现的平均排序行数。
-
first_seen该语句首次出现的时间。
-
last_seen语句最近一次出现的时间。
-
digest语句摘要。
原文:
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_tables 和 x$statements_with_temp_tables 视图具有以下列:
-
query规范化的语句字符串。
-
db语句的默认数据库,如果没有则为
NULL。 -
exec_count语句执行的总次数。
-
total_latency语句定时发生的总等待时间。
-
memory_tmp_tables由语句发生创建的内存中临时表的总数。
-
disk_tmp_tables由该语句发生创建的内部磁盘临时表的总数。
-
avg_tmp_tables_per_query每次语句发生时创建的内部临时表的平均数量。
-
tmp_tables_to_disk_pct将内存中临时表转换为磁盘表的百分比。
-
first_seen语句首次出现的时间。
-
last_seen语句最近出现的时间。
-
digest陈述摘要。
30.4.3.41 用户摘要和 x$user_summary 视图
这些视图总结了语句活动、文件 I/O 和连接,按用户分组。默认情况下,按总延迟降序排序行。
user_summary 和 x$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_io和x$user_summary_by_file_io视图
这些视图按用户分组总结文件 I/O。默认情况下,按降序总文件 I/O 延迟排序行。
user_summary_by_file_io和x$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_type和x$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_stages 和 x$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_latency 和 x$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_type 和 x$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用户语句事件的总表全表扫描次数。
30.4.3.47 版本视图
这个视图提供了当前的sys模式和 MySQL 服务器版本。
注意
截至 MySQL 8.0.18 版本,此视图已被弃用,并可能在未来的 MySQL 版本中被移除。使用它的应用程序应迁移到使用其他替代方法。例如,使用VERSION()函数来检索 MySQL 服务器版本。
version视图包含以下列:
-
sys_versionsys模式版本。 -
mysql_versionMySQL 服务器版本。
原文:
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_latency 和 x$wait_classes_global_by_avg_latency 视图
这些视图按事件类别分组总结等待类别的平均延迟。默认情况下,按降序平均延迟排序行。空闲事件将被忽略。
事件类别是通过从事件名称中去除第一个三个组件之后的所有内容来确定的。例如,wait/io/file/sql/slow_log 的类别是 wait/io/file。
wait_classes_global_by_avg_latency 和 x$wait_classes_global_by_avg_latency 视图具有以下列:
-
event_class事件类别。
-
total事件类别中事件发生的总次数。
-
total_latency事件类别中定时发生事件的总等待时间。
-
min_latency事件类别中定时发生事件的最小单次等待时间。
-
avg_latency事件类别中事件的平均等待时间。
-
max_latency事件类别中定时发生事件的最大单次等待时间。
原文:
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_latency和x$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_latency 和 x$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_latency 和 x$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_latency 和 x$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 |
...
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设置,对性能影响很大。使用
medium或full设置需要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 SchemaTABLES表上执行表扫描。如果表很多,这可能会很昂贵。默认为OFF。 -
diagnostics.include_raw,@sys.diagnostics.include_raw如果此选项为
ON,则diagnostics()Procedure")过程的输出包括查询metrics视图的原始输出。默认为OFF。 -
statement_truncate_len,@sys.statement_truncate_lenformat_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 ('%', '%', '%')
...
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_long和events_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)
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_table为NULL的情况,使用现有快照。如果in_table为NULL且不存在快照,则会创建一个新的快照。in_views参数和statement_performance_analyzer.limit配置选项会影响此过程的操作。 -
delta: 生成增量分析。增量是在由in_table指定的参考表和必须存在的快照之间计算的。此操作使用sys模式下的tmp_digests_delta临时表。in_views参数和statement_performance_analyzer.limit配置选项会影响此过程的操作。 -
create_table: 创建一个适合存储快照以供以后使用的常规表(例如,用于计算增量)。 -
create_tmp: 创建一个适合存储快照以供以后使用的临时表(例如,用于计算增量)。 -
save: 将快照保存在由in_table指定的表中。表必须存在并具有正确的结构。如果不存在快照,则会创建一个新的快照。 -
cleanup: 删除用于快照和增量的临时表。
-
-
in_table VARCHAR(129): 用于由in_action参数指定的某些操作的表参数。使用格式db_name.tbl_name或tbl_name,不使用任何反引号 (```sql) identifier-quoting characters. Periods (.) are not supported in database and table names.The meaning of the
in_tablevalue for eachin_actionvalue is detailed in the individualin_actionvalue 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 aSETvalue, so it can contain multiple view names, separated by commas. The default is to include all views exceptcustom. The following values are permitted:-
with_runtimes_in_95th_percentile: Use thestatements_with_runtimes_in_95th_percentileview. -
analysis: Use thestatement_analysisview. -
with_errors_or_warnings: Use thestatements_with_errors_or_warningsview. -
with_full_table_scans: Use thestatements_with_full_table_scansview. -
with_sorting: Use thestatements_with_sortingview. -
with_temp_tables: Use thestatements_with_temp_tablesview. -
custom: Use a custom view. This view must be specified using thestatement_performance_analyzer.viewconfiguration 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.debugIf this option is
ON, produce debugging output. The default isOFF. -
statement_performance_analyzer.limit,@sys.statement_performance_analyzer.limitThe 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.viewThe 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_digesttable. There cannot be anyLIMITclause in the query or view definition if thestatement_performance_analyzer.limitconfiguration option is greater than 0. If specifying a view, use the same format as for thein_tableparameter. The default isNULL(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:
-
Create a temporary table to store the initial snapshot.
-
Create the initial snapshot.
-
Save the initial snapshot in the temporary table.
-
Wait one minute.
-
Create a new snapshot.
-
Perform analysis based on the new snapshot.
-
Perform analysis based on the delta between the initial and new snapshots.
mysql> 调用 sys.statement_performance_analyzer('create_tmp', 'mydb.tmp_digests_ini', NULL);
查询成功,0 行受影响 (0.08 秒)
mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询成功,0 行受影响 (0.02 秒)
mysql> 调用 sys.statement_performance_analyzer('save', 'mydb.tmp_digests_ini', NULL);
查询成功,0 行受影响 (0.00 秒)
mysql> 休眠 60 秒;
查询成功,0 行受影响 (1 分 0.00 秒)
mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询成功,0 行受影响 (0.02 秒)
mysql> 调用 sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile');
+-----------------------------------------+
| 下一个输出 |
| --- |
+-----------------------------------------+
| 运行时间在第 95 百分位数的查询 |
| --- |
+-----------------------------------------+
1 行受影响 (0.05 秒)
...
mysql> 调用 sys.statement_performance_analyzer('delta', 'mydb.tmp_digests_ini', 'with_runtimes_in_95th_percentile');
+-----------------------------------------+
| 下一个输出 |
| --- |
+-----------------------------------------+
| 运行时间在第 95 百分位数的查询 |
| --- |
+-----------------------------------------+
1 行受影响 (0.03 秒)
...
```sql
Create an overall report of the 95th percentile queries and the top 10 queries with full table scans:
mysql> 调用 sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询成功,0 行受影响 (0.01 秒)
mysql> 设�� @sys.statement_performance_analyzer.limit = 10;
查询成功,0 行受影响 (0.00 秒)
mysql> 调用 sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile,with_full_table_scans');
+-----------------------------------------+
| 下一个输出 |
|---|
+-----------------------------------------+
| 运行时间在第 95 百分位数的查询 |
|---|
+-----------------------------------------+
1 行受影响 (0.01 秒)
...
+-------------------------------------+
| 下一个输出 |
|---|
+-------------------------------------+
| 具有全表扫描的前 10 个查询 |
|---|
+-------------------------------------+
1 行受影响 (0.09 秒)
...
Use a custom view showing the top 10 queries sorted by total execution time, refreshing the view every minute using the **watch** command in Linux:
mysql> 创建或替换视图 mydb.my_statements AS
SELECT sys.format_statement(DIGEST_TEXT) AS query,
SCHEMA_NAME AS db,
COUNT_STAR AS exec_count,
sys.format_time(SUM_TIMER_WAIT) AS total_latency,
sys.format_time(AVG_TIMER_WAIT) AS avg_latency,
ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg,
ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg,
ROUND(IFNULL(SUM_ROWS_AFFECTED / NULLIF(COUNT_STAR, 0), 0)) AS rows_affected_avg,
DIGEST AS digest
FROM performance_schema.events_statements_summary_by_digest
按 SUM_TIMER_WAIT 降序排列;
查询成功,0 行受影响 (0.10 秒)
mysql> 调用 sys.statement_performance_analyzer('create_table', 'mydb.digests_prev', NULL);
Query OK, 0 rows affected (0.10 sec)
$> watch -n 60 "mysql sys --table -e "
SET @sys.statement_performance_analyzer.view = 'mydb.my_statements';
SET @sys.statement_performance_analyzer.limit = 10;
CALL statement_performance_analyzer('snapshot', NULL, NULL);
CALL statement_performance_analyzer('delta', 'mydb.digests_prev', 'custom');
CALL statement_performance_analyzer('save', 'mydb.digests_prev', NULL);
""
每隔 60.0 秒: mysql sys --table -e " ... Mon Dec 22 10:58:51 2014
+----------------------------------+
| 下一个输出 |
|---|
+----------------------------------+
| 前 10 个使用自定义视图的查询 |
|---|
+----------------------------------+
+-------------------+-------+------------+---------------+-------------+---------------+-------------------+-------------------+----------------------------------+
| 查询 | 数据库 | 执行次数 | 总延迟 | 平均延迟 | 平均发送行数 | 平均检查行数 | 平均影响行数 | 摘要 |
|---|
+-------------------+-------+------------+---------------+-------------+---------------+-------------------+-------------------+----------------------------------+
...
> 原文:[`dev.mysql.com/doc/refman/8.0/en/sys-table-exists.html`](https://dev.mysql.com/doc/refman/8.0/en/sys-table-exists.html)
#### 30.4.4.26 table_exists() 过程
测试给定表是否存在为常规表、`TEMPORARY`表或视图。过程将表类型返回到一个`OUT`参数中。如果同名的临时表和永久表都存在,则返回`TEMPORARY`。
##### 参数
+ `in_db VARCHAR(64)`: 要检查表存在性的数据库名。
+ `in_table VARCHAR(64)`: 要检查存在性的表名。
+ `out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY')`: 返回值。这是一个`OUT`参数,因此必须是一个可以存储表类型的变量。当过程返回时,变量具有以下值之一,指示表是否存在:
+ `''`: 表名不存在为基本表、`TEMPORARY`表或视图。
+ `BASE TABLE`: 表名存在为基本(永久)表。
+ `VIEW`: 表名存在为视图。
+ `TEMPORARY`: 表名存在为`TEMPORARY`表。
##### 示例
```sql
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)
mysql> USE db1;
Database changed
mysql> CREATE TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.03 sec)
mysql> CREATE TABLE t2 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)
mysql> CREATE view v_t1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)
mysql> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)
+-----------+
| @exists |
+-----------+
| TEMPORARY |
+-----------+
1 row in set (0.00 sec)
mysql> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)
+------------+
| @exists |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)
mysql> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)
+---------+
| @exists |
+---------+
| VIEW |
+---------+
1 row in set (0.00 sec)
mysql> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
Query OK, 0 rows affected (0.00 sec)
+---------+
| @exists |
+---------+
| |
+---------+
1 row in set (0.00 sec)
30.4.5 sys Schema 存储函数
原文:
dev.mysql.com/doc/refman/8.0/en/sys-schema-functions.html
30.4.5.1 extract_schema_from_file_name() 函数
30.4.5.2 extract_table_from_file_name() 函数
30.4.5.3 format_bytes() 函数
30.4.5.4 format_path() 函数
30.4.5.5 format_statement() 函数
30.4.5.6 format_time() 函数
30.4.5.7 list_add() 函数
30.4.5.8 list_drop() 函数
30.4.5.9 ps_is_account_enabled() 函数
30.4.5.10 ps_is_consumer_enabled() 函数
30.4.5.11 ps_is_instrument_default_enabled() 函数
30.4.5.12 ps_is_instrument_default_timed() 函数
30.4.5.13 ps_is_thread_instrumented() 函数
30.4.5.14 ps_thread_account() 函数
30.4.5.15 ps_thread_id() 函数
30.4.5.16 ps_thread_stack() 函数
30.4.5.17 ps_thread_trx_info() 函数
30.4.5.18 quote_identifier() 函数
30.4.5.19 sys_get_config() 函数
30.4.5.20 version_major() 函数
30.4.5.21 version_minor() 函数
30.4.5.22 version_patch() 函数
以下章节描述 sys schema 存储函数。