目录
MySQL 8.0包含
sys
模式,这是一组对象,可帮助DBA和开发人员解释性能模式收集的数据。
sys
模式对象可用于典型的调优和诊断用例。
此架构中的对象包括:
将Performance Schema数据汇总为更易于理解的形式的视图。
执行诸如性能架构配置和生成诊断报告等操作的存储过程。
存储的函数,用于查询性能架构配置并提供格式化服务。
对于新安装,
sys
如果将
mysqld
与
--initialize
or
--initialize-insecure
选项
一起
使用
,则
在数据目录初始化期间默认安装模式
。
如果不需要,可以
sys
在初始化后手动
删除
架构(如果不需要)。
如果
sys
存在模式但没有
version
视图,
则MySQL升级过程会产生错误
,前提是缺少此视图表示用户创建的
sys
模式。
要在这种情况下升级,请先删除或重命名现有
sys
架构。
sys
架构对象有一个
DEFINER
的
'mysql.sys'@'localhost'
。
使用专用
mysql.sys
帐户可避免DBA重命名或删除
root
帐户时
出现的问题
。
在使用
sys
模式
之前
,必须满足本节中描述的先决条件。
由于
sys
架构提供了访问性能架构的替代方法,因此必须启用性能架构才能使
sys
架构正常工作。
请参见
第26.3节“性能模式启动配置”
。
要完全访问
sys
架构,用户必须具有以下权限:
INSERT
而
UPDATE
对于
sys_config
表中,如果改变是它使
某些
sys
模式存储过程和函数的
附加权限
,如其描述中所述(例如,
ps_setup_save()
过程)
还必须拥有
sys
架构对象
底层
对象的
权限
:
必须启用某些性能架构工具和使用者,并且(对于仪器)需要定时以充分利用
sys
架构功能:
所有
wait
乐器
所有
stage
乐器
所有
statement
乐器
和
xxx
_current
所有活动的消费者
xxx
_history_long
您可以使用
sys
模式本身来启用所有其他工具和使用者:
CALL sys.ps_setup_enable_instrument('wait'); CALL sys.ps_setup_enable_instrument('stage'); CALL sys.ps_setup_enable_instrument('statement'); CALL sys.ps_setup_enable_consumer('current'); CALL sys.ps_setup_enable_consumer('history_long');
对于
sys
模式的
许多用途
,默认的性能模式足以用于数据收集。
启用刚刚提到的所有仪器和消费者会对性能产生影响,因此最好只启用所需的其他配置。
另外,请记住,如果启用其他配置,则可以轻松恢复默认配置,如下所示:
CALL sys.ps_setup_reset_to_default(TRUE);
您可以将
sys
模式设置为默认模式,以便不需要使用模式名称限定对其对象的引用:
MySQL的>USE sys;
数据库已更改 MySQL的>SELECT * FROM version;
+ ------------- + --------------- + | sys_version | mysql_version | + ------------- + --------------- + | 2.0.0 | 8.0.13-debug | + ------------- + --------------- +
(该
version
视图显示了
sys
架构和MySQL服务器版本。)
要
sys
在不同的模式是默认模式(或简单地显式)时
访问
模式对象,请使用模式名称限定对象引用:
MySQL的> SELECT * FROM sys.version;
+ ------------- + --------------- +
| sys_version | mysql_version |
+ ------------- + --------------- +
| 2.0.0 | 8.0.13-debug |
+ ------------- + --------------- +
该
sys
模式包含许多视图,这些视图以各种方式汇总了性能模式表。
这些视图中的大多数成对出现,使得该对中的一个成员具有与另一个成员相同的名称,加上
x$
前缀。
例如,
host_summary_by_file_io
视图总结了按主机分组的文件I / O,并显示从皮秒转换为更易读的值(带单位)的延迟;
MySQL的> SELECT * FROM sys.host_summary_by_file_io;
+ ------------ + ------- + ------------ +
| 主持人| ios | io_latency |
+ ------------ + ------- + ------------ +
| localhost | 67570 | 5.38 s |
| 背景| 3468 | 4.18 s |
+ ------------ + ------- + ------------ +
该
x$host_summary_by_file_io
视图总结了相同的数据,但显示未格式化的皮秒延迟:
MySQL的> SELECT * FROM sys.x$host_summary_by_file_io;
+ ------------ + ------- + -------- +
| 主持人| ios | io_latency |
+ ------------ + ------- + -------- +
| localhost | 67574 | 5380678125144 |
| 背景| 3474 | 4758696829416 |
+ ------------ + ------- + -------- +
没有
x$
前缀
的视图
旨在提供更加用户友好且易于人类阅读的输出。
具有
x$
以原始形式显示相同值
的
前缀
的视图
更适合与对数据执行自己处理的其他工具一起使用。
有关非
视图
x$
和
x$
视图
之间差异的其他信息
,请参见
第27.4.3节“sys模式视图”
。
要检查
sys
模式对象定义,请使用适当的
SHOW
语句或
INFORMATION_SCHEMA
查询。
例如,要检查
session
视图和
format_bytes()
函数
的定义
,请使用以下语句:
mysql>SHOW CREATE VIEW sys.session;
mysql>SHOW CREATE FUNCTION sys.format_bytes;
但是,这些语句以相对无格式的形式显示定义。
要以更易读的格式查看对象定义,请访问
架构开发网站
https://github.com/mysql/mysql-sys上
.sql
提供
的各个
文件
。
sys
默认情况下,
mysqldump
和
mysqlpump
都
不会
转储
sys
模式。
要生成转储文件,请
sys
使用以下任一命令在命令行上显式
命名该
架构:
mysqldump --databases --routines sys> sys_dump.sql mysqlpump sys> sys_dump.sql
要从转储文件重新安装架构,请使用以下命令:
mysql <sys_dump.sql
以下
sys
架构视图为长时间运行的事务提供进度报告:
PROCESSLIST 会议 X $ PROCESSLIST X $会议
假设启用了所需的工具和使用者
progress
,这些视图
的
列显示了支持进度报告的阶段完成的工作百分比。
阶段进度报告要求
events_stages_current
启用消费者,以及需要进度信息的工具。
这些阶段的工具目前支持进度报告:
stage / sql /复制到tmp表 stage / innodb / alter table(结束) stage / innodb / alter table(flush) stage / innodb / alter table(insert) stage / innodb / alter table(日志应用索引) stage / innodb / alter table(日志应用表) stage / innodb / alter table(合并排序) stage / innodb / alter table(读取PK和内部排序) stage / innodb / buffer pool load
对于不支持估计和完成的工作报告的阶段,或者如果未启用所需的工具或消费者,则
progress
列为
NULL
。
该
sys
模式包括表和触发器,视图以及存储过程和函数。
以下部分提供了每个对象的详细信息。
下表列出了
sys
架构对象,并提供了每个对象的简短描述。
表27.1 sys架构表和触发器
表或触发器名称 | 描述 |
---|---|
sys_config |
sys
架构配置选项
|
sys_config_insert_set_user |
sys_config
插入触发器
|
sys_config_update_set_user |
sys_config
更新触发器
|
表27.2 sys架构视图
表27.3 sys Schema存储过程
表27.4 sys Schema存储函数
功能名称 | 描述 |
---|---|
extract_schema_from_file_name() |
从文件路径名中提取模式名称 |
extract_table_from_file_name() |
从文件路径名中提取表名 |
format_bytes() |
将字节数转换为带单位的值 |
format_path() |
使用符号值替换路径名中的数据和临时文件目录 |
format_statement() |
截断长语句到固定长度 |
format_time() |
将皮秒值转换为单位值 |
list_add() |
添加项目到列表 |
list_drop() |
从列表中删除项目 |
ps_is_account_enabled() |
检查帐户检测是否已启用 |
ps_is_consumer_enabled() |
检查是否启用了使用者 |
ps_is_instrument_default_enabled() |
检查仪器是否已启用 |
ps_is_instrument_default_timed() |
检查仪器是否定时 |
ps_is_thread_instrumented() |
检查线程是否已检测 |
ps_thread_account() |
返回线程ID的帐户 |
ps_thread_id() |
返回连接ID的线程ID |
ps_thread_stack() |
返回线程ID的事件信息 |
ps_thread_trx_info() |
返回线程ID的事务信息 |
quote_identifier() |
返回字符串作为引用标识符 |
sys_get_config() |
返回
sys
架构配置选项
|
version_major() |
MySQL服务器主要版本号 |
version_minor() |
MySQL服务器次要版本号 |
version_patch() |
MySQL服务器补丁发布版本号 |
以下部分描述了
sys
模式表和触发器。
此表包含
sys
架构配置选项,每个选项一行。
通过更新此表所做的配置更改在客户端会话和服务器重新启动之间保持不变。
该
sys_config
表包含以下列:
variable
配置选项名称。
value
配置选项值。
set_time
最近修改行的时间戳。
set_by
对该行进行最近修改的帐户。
值是
NULL
指自
sys
安装架构后
未更改行
。
作为最小化
sys_config
表
中直接读取次数的效率度量
sys
,使用此表中的值的模式函数检查具有相应名称的用户定义变量,该变量是具有相同名称和
@sys.
前缀
的用户定义变量
。
(例如,与
diagnostics.include_raw
选项
对应的变量
是
@sys.diagnostics.include_raw
。)如果用户定义的变量存在于当前会话中且为非
NULL
,则该函数优先使用其值而不是
sys_config
表。
否则,该函数将读取并使用表中的值。
在后一种情况下,调用函数通常还将相应的用户定义变量设置为表值,以便在同一会话中对配置选项的进一步引用使用该变量,而无需再次读取该表。
例如,该
statement_truncate_len
选项控制
format_statement()
函数
返回的语句的最大长度
。
默认值为64.要临时将当前会话的值更改为32,请设置相应的
@sys.statement_truncate_len
用户定义变量:
mysql>SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql>SELECT sys.format_statement(@stmt);
+ ------------------------------------------------- --------- + | sys.format_statement(@stmt)| + ------------------------------------------------- --------- + | SELECT变量,value,set_time,set_by FROM sys_config | + ------------------------------------------------- --------- + mysql>SET @sys.statement_truncate_len = 32;
mysql>SELECT sys.format_statement(@stmt);
+ ----------------------------------- + | sys.format_statement(@stmt)| + ----------------------------------- + | SELECT variabl ... ROM sys_config | + ----------------------------------- +
format_statement()
会话内的
后续调用
继续使用用户定义的变量值(32),而不是存储在表(64)中的值。
要停止使用用户定义的变量并恢复使用表中的值,请将变量设置为
NULL
会话内:
mysql>SET @sys.statement_truncate_len = NULL;
mysql>SELECT sys.format_statement(@stmt);
+ ------------------------------------------------- --------- + | sys.format_statement(@stmt)| + ------------------------------------------------- --------- + | SELECT变量,value,set_time,set_by FROM sys_config | + ------------------------------------------------- --------- +
或者,结束当前会话(导致用户定义的变量不再存在)并开始新会话。
sys_config
可以利用表中
选项
和用户定义变量
之间描述的传统关系
来进行临时配置更改,这些更改将在会话结束时结束。
但是,如果设置用户定义的变量,然后在同一会话中更改相应的表值,则只要用户定义的变量存在非
NULL
值
,就不会在该会话中使用更改的表
值。
(更改的表值
将
用于未分配用户定义变量的其他会话。)
以下列表描述了表中的选项
sys_config
以及相应的用户定义变量:
diagnostics.allow_i_s_tables
,
@sys.diagnostics.allow_i_s_tables
如果是此选项
ON
,
diagnostics()
则允许
该
过程在表上执行表扫描
INFORMATION_SCHEMA.TABLES
。
如果有很多表,这可能会很昂贵。
默认是
OFF
。
diagnostics.include_raw
,
@sys.diagnostics.include_raw
如果是此选项
ON
,则该
diagnostics()
过程包括查询
metrics
视图
的原始输出
。
默认是
OFF
。
ps_thread_trx_info.max_length
,
@sys.ps_thread_trx_info.max_length
ps_thread_trx_info()
函数
生成的JSON输出的最大长度
。
默认值为65535。
statement_performance_analyzer.limit
,
@sys.statement_performance_analyzer.limit
对于没有内置限制的视图,要返回的最大行数。
(例如,
statements_with_runtimes_in_95th_percentile
视图具有内置限制,因为它仅返回平均执行时间在第95百分位的语句。)默认值为100。
statement_performance_analyzer.view
,
@sys.statement_performance_analyzer.view
过程使用的自定义查询或视图
statement_performance_analyzer()
(过程本身调用
diagnostics()
)。
如果选项值包含空格,则将其解释为查询。
否则,它必须是查询Performance Schema
events_statements_summary_by_digest
表
的现有视图的名称
。
LIMIT
如果
statement_performance_analyzer.limit
配置选项大于0
,则查询或视图定义中
不能有任何
子句
。默认为
NULL
(未定义自定义视图)。
statement_truncate_len
,
@sys.statement_truncate_len
format_statement()
函数
返回的语句的最大长度
。
较长的语句被截断为此长度。
默认值为64。
其他选项可以添加到
sys_config
表中。
例如,
diagnostics()
和
execute_prepared_stmt()
过程使用该
debug
选项(如果存在),但
sys_config
默认情况下
此选项不是
表的
一部分,
因为通常只通过设置相应的
@sys.debug
用户定义变量来
临时启用调试输出
。
要启用调试输出而不必在单个会话中设置该变量,请将该选项添加到表中:
MySQL的> INSERT INTO sys.sys_config (variable, value) VALUES('debug', 'ON');
要更改表中的调试设置,请执行以下两项操作。 首先,修改表本身的值:
MySQL的>UPDATE sys.sys_config
SET value = 'OFF'
WHERE variable = 'debug';
其次,为了确保当前会话中的过程调用使用表中更改的值,请将相应的用户定义变量设置为
NULL
:
MySQL的> SET @sys.debug = NULL;
对于
sys_config
通过
INSERT
语句
添加到
表中的
行
,
sys_config_insert_set_user
触发器将
set_by
列设置为当前用户。
该
sys_config_update_set_user
用于触发
sys_config
表类似于
sys_config_insert_set_user
触发,但
UPDATE
语句。
以下部分描述了
sys
架构视图。
该
sys
模式包含许多视图,这些视图以各种方式汇总了性能模式表。
这些视图中的大多数成对出现,使得该对中的一个成员具有与另一个成员相同的名称,加上
x$
前缀。
例如,
host_summary_by_file_io
视图总结了按主机分组的文件I / O,并显示从皮秒转换为更易读的值(带单位)的延迟;
MySQL的> SELECT * FROM sys.host_summary_by_file_io;
+ ------------ + ------- + ------------ +
| 主持人| ios | io_latency |
+ ------------ + ------- + ------------ +
| localhost | 67570 | 5.38 s |
| 背景| 3468 | 4.18 s |
+ ------------ + ------- + ------------ +
该
x$host_summary_by_file_io
视图总结了相同的数据,但显示未格式化的皮秒延迟:
MySQL的> SELECT * FROM sys.x$host_summary_by_file_io;
+ ------------ + ------- + -------- +
| 主持人| ios | io_latency |
+ ------------ + ------- + -------- +
| localhost | 67574 | 5380678125144 |
| 背景| 3474 | 4758696829416 |
+ ------------ + ------- + -------- +
没有
x$
前缀
的视图
旨在提供更加用户友好且更易于阅读的输出。
具有
x$
以原始形式显示相同值
的
前缀
的视图
更适合与对数据执行自己处理的其他工具一起使用。
没有
x$
前缀的
x$
视图与这些方式中
的相应
视图不同:
字节数使用大小单位格式化
format_bytes()
。
时间值使用时间单位格式化
format_time()
。
使用SQL语句将其截断为最大显示宽度
format_statement()
。
路径名称缩短使用
format_path()
。
这些视图汇总了按主机分组的语句活动,文件I / O和连接。
在
host_summary
和
x$host_summary
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
statements
主机的语句总数。
statement_latency
主机的定时语句的总等待时间。
statement_avg_latency
主机每个timed语句的平均等待时间。
table_scans
主机的表扫描总数。
file_ios
主机的文件I / O事件总数。
file_io_latency
主机的定时文件I / O事件的总等待时间。
current_connections
主机的当前连接数。
total_connections
主机的连接总数。
unique_users
主机的不同用户数。
current_memory
当前为主机分配的内存量。
total_memory_allocated
主机分配的内存总量。
这些视图汇总了按主机分组的文件I / O. 默认情况下,行按总文件I / O延迟降序排序。
在
host_summary_by_file_io
和
x$host_summary_by_file_io
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
ios
主机的文件I / O事件总数。
io_latency
主机的定时文件I / O事件的总等待时间。
这些视图汇总了按主机和事件类型分组的文件I / O. 默认情况下,行按主机排序并降低总I / O延迟。
在
host_summary_by_file_io_type
和
x$host_summary_by_file_io_type
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
event_name
文件I / O事件名称。
total
主机的文件I / O事件的总发生次数。
total_latency
主机的文件I / O事件的定时发生的总等待时间。
max_latency
主机的文件I / O事件的定时发生的最大单个等待时间。
这些视图总结了按主机分组的语句阶段。 默认情况下,行按主机排序并降低总延迟。
在
host_summary_by_stages
和
x$host_summary_by_stages
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
event_name
舞台活动名称。
total
主机的stage事件的总发生次数。
total_latency
主机的阶段事件的定时发生的总等待时间。
avg_latency
主机的阶段事件每次定时发生的平均等待时间。
这些视图总结了按主机分组的整体语句统计信息。 默认情况下,行按降序总延迟排序。
在
host_summary_by_statement_latency
和
x$host_summary_by_statement_latency
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
total
主机的语句总数。
total_latency
主机的定时语句的总等待时间。
max_latency
主机的定时语句的最大单个等待时间。
lock_latency
等待主机的定时语句锁定的总时间。
rows_sent
主机语句返回的总行数。
rows_examined
通过主机语句从存储引擎读取的总行数。
rows_affected
受主机语句影响的总行数。
full_scans
按主机语句的全表扫描总数。
这些视图总结了有关执行的语句的信息,按主机和语句类型分组。 默认情况下,行按主机排序并降低总延迟。
在
host_summary_by_statement_type
和
x$host_summary_by_statement_type
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
statement
语句事件名称的最后一个组成部分。
total
主机的语句事件的总发生次数。
total_latency
主机的语句事件的定时发生的总等待时间。
max_latency
主机语句事件的定时发生的最大单个等待时间。
lock_latency
由主机的语句事件的定时发生等待锁定的总时间。
rows_sent
主机的语句事件的返回返回的总行数。
rows_examined
通过发生主机的语句事件从存储引擎读取的总行数。
rows_affected
受主机的语句事件发生影响的总行数。
full_scans
按主机的语句事件发生的全表扫描总数。
这些视图总结了
INFORMATION_SCHEMA
INNODB_BUFFER_PAGE
表中
的信息
,按模式分组。
默认情况下,行按缓冲区大小递减排序。
查询访问该
INNODB_BUFFER_PAGE
表的
视图
可能会影响性能。
除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询这些视图。
为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。
在
innodb_buffer_stats_by_schema
和
x$innodb_buffer_stats_by_schema
意见有这些列:
object_schema
对象的模式名称,或者
InnoDB
System
表是否属于
InnoDB
存储引擎。
allocated
为架构分配的总字节数。
data
为模式分配的数据字节总数。
pages
为架构分配的总页数。
pages_hashed
为模式分配的散列页总数。
pages_old
为架构分配的旧页面总数。
rows_cached
架构的缓存行总数。
这些视图总结了
INFORMATION_SCHEMA
INNODB_BUFFER_PAGE
表中
的信息
,按模式和表分组。
默认情况下,行按缓冲区大小递减排序。
查询访问该
INNODB_BUFFER_PAGE
表的
视图
可能会影响性能。
除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询这些视图。
为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。
在
innodb_buffer_stats_by_table
和
x$innodb_buffer_stats_by_table
意见有这些列:
object_schema
对象的模式名称,或者
InnoDB
System
表是否属于
InnoDB
存储引擎。
object_name
表名。
allocated
为表分配的总字节数。
data
为表分配的数据字节数。
pages
为表分配的总页数。
pages_hashed
为表分配的散列页数。
pages_old
为表分配的旧页数。
rows_cached
表的缓存行数。
这些视图总结了
InnoDB
事务正在等待
的
锁。
默认情况下,行按降序锁定年龄排序。
在
innodb_lock_waits
和
x$innodb_lock_waits
意见有这些列:
wait_started
锁定等待开始的时间。
wait_age
锁等待多长时间,作为一个
TIME
值。
wait_age_secs
锁定等待的时间,以秒为单位。
locked_table_schema
包含锁定表的架构。
locked_table_name
锁定表的名称。
locked_table_partition
锁定分区的名称(如果有);
NULL
除此以外。
locked_table_subpartition
锁定子分区的名称(如果有);
NULL
除此以外。
locked_index
锁定索引的名称。
locked_type
等待锁的类型。
waiting_trx_id
等待事务的ID。
waiting_trx_started
等待事务开始的时间。
waiting_trx_age
等待事务等待的时间,作为
TIME
值。
waiting_trx_rows_locked
等待事务锁定的行数。
waiting_trx_rows_modified
等待事务修改的行数。
waiting_pid
等待事务的进程列表ID。
waiting_query
正在等待锁定的语句。
waiting_lock_id
等待锁的ID。
waiting_lock_mode
等待锁定的模式。
blocking_trx_id
阻止等待锁定的事务的ID。
blocking_pid
阻止事务的进程列表ID。
blocking_query
阻塞事务正在执行的语句。 如果发出阻塞查询的会话变为空闲,则此字段报告NULL。 有关更多信息,请参阅 在发布会话变为空闲后识别阻止查询 。
blocking_lock_id
阻止等待锁定的锁的ID。
blocking_lock_mode
锁定等待锁定的锁定模式。
blocking_trx_started
阻止事务开始的时间。
blocking_trx_age
阻塞事务执行了多长时间,作为一个
TIME
值。
blocking_trx_rows_locked
阻塞事务锁定的行数。
blocking_trx_rows_modified
阻塞事务修改的行数。
sql_kill_blocking_query
KILL
要执行
的
语句以终止阻塞语句。
sql_kill_blocking_connection
KILL
要执行
的
语句,以终止运行阻塞语句的会话。
这些视图总结了I / O使用者显示等待I / O的时间,按线程分组。 默认情况下,行按总I / O延迟降序排序。
在
io_by_thread_by_latency
和
x$io_by_thread_by_latency
意见有这些列:
user
对于前台线程,与该线程关联的帐户。 对于后台线程,线程名称。
total
线程的I / O事件总数。
total_latency
线程的定时I / O事件的总等待时间。
min_latency
线程的定时I / O事件的最短单个等待时间。
avg_latency
线程每次定时I / O事件的平均等待时间。
max_latency
线程的定时I / O事件的最大单个等待时间。
thread_id
线程ID。
processlist_id
对于前台线程,线程的进程列表ID。
对于后台线程,
NULL
。
这些视图总结了全局I / O使用者以显示按文件分组的I / O量。 默认情况下,行按下降的总I / O(读取和写入的字节数)进行排序。
在
io_global_by_file_by_bytes
和
x$io_global_by_file_by_bytes
意见有这些列:
file
文件路径名。
count_read
文件的读取事件总数。
total_read
从文件中读取的总字节数。
avg_read
每次从文件读取的平均字节数。
count_write
文件的写事件总数。
total_written
写入文件的总字节数。
avg_write
每次写入文件的平均字节数。
total
为文件读取和写入的总字节数。
write_pct
写入的I / O总字节数的百分比。
这些视图汇总了全局I / O使用者,以显示按文件分组的等待I / O的时间。 默认情况下,行按降序总延迟排序。
在
io_global_by_file_by_latency
和
x$io_global_by_file_by_latency
意见有这些列:
file
文件路径名。
total
文件的I / O事件总数。
total_latency
文件的定时I / O事件的总等待时间。
count_read
文件的读取I / O事件总数。
read_latency
定时读取文件的I / O事件的总等待时间。
count_write
文件的写入I / O事件总数。
write_latency
定时写入文件的I / O事件的总等待时间。
count_misc
文件的其他I / O事件的总数。
misc_latency
为文件计时其他I / O事件的总等待时间。
这些视图总结了全局I / O使用者,以显示按事件分组的I / O数量和等待I / O的时间。 默认情况下,行按下降的总I / O(读取和写入的字节数)进行排序。
在
io_global_by_wait_by_bytes
和
x$io_global_by_wait_by_bytes
意见有这些列:
event_name
I / O事件名称,
wait/io/file/
前缀已剥离。
total
I / O事件的总发生次数。
total_latency
I / O事件定时发生的总等待时间。
min_latency
I / O事件定时发生的最短单个等待时间。
avg_latency
每次定时发生I / O事件的平均等待时间。
max_latency
I / O事件定时发生的最大单个等待时间。
count_read
I / O事件的读取请求数。
total_read
为I / O事件读取的字节数。
avg_read
I / O事件的每次读取的平均字节数。
count_write
I / O事件的写请求数。
total_written
为I / O事件写入的字节数。
avg_written
I / O事件的每次写入的平均字节数。
total_requested
为I / O事件读取和写入的总字节数。
这些视图总结了全局I / O使用者,以显示按事件分组的I / O数量和等待I / O的时间。 默认情况下,行按降序总延迟排序。
在
io_global_by_wait_by_latency
和
x$io_global_by_wait_by_latency
意见有这些列:
event_name
I / O事件名称,
wait/io/file/
前缀已剥离。
total
I / O事件的总发生次数。
total_latency
I / O事件定时发生的总等待时间。
avg_latency
每次定时发生I / O事件的平均等待时间。
max_latency
I / O事件定时发生的最大单个等待时间。
read_latency
I / O事件的定时读取发生的总等待时间。
write_latency
I / O事件的定时写入发生的总等待时间。
misc_latency
等待其他I / O事件发生的总等待时间。
count_read
I / O事件的读取请求数。
total_read
为I / O事件读取的字节数。
avg_read
I / O事件的每次读取的平均字节数。
count_write
I / O事件的写请求数。
total_written
为I / O事件写入的字节数。
avg_written
I / O事件的每次写入的平均字节数。
这些视图汇总了文件I / O活动,按文件和线程分组。 默认情况下,行首先按最近的I / O排序。
在
latest_file_io
和
x$latest_file_io
意见有这些列:
thread
对于前台线程,与线程关联的帐户(以及TCP / IP连接的端口号)。 对于后台线程,线程名称和线程ID
file
文件路径名。
latency
文件I / O事件的等待时间。
operation
操作类型。
requested
为文件I / O事件请求的数据字节数。
这些视图总结了按主机分组的内存使用情况。 默认情况下,行按降序使用的内存量进行排序。
在
memory_by_host_by_current_bytes
和
x$memory_by_host_by_current_bytes
意见有这些列:
host
客户端连接的主机。
假定
HOST
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
current_count_used
尚未为主机释放的当前已分配内存块数。
current_allocated
尚未为主机释放的当前已分配字节数。
current_avg_alloc
主机每个内存块的当前分配字节数。
current_max_alloc
主机的最大单个当前内存分配(以字节为单位)。
total_allocated
主机的总内存分配(以字节为单位)。
这些视图总结了内存使用情况,按线程分组。 默认情况下,行按降序使用的内存量进行排序。
在
memory_by_thread_by_current_bytes
和
x$memory_by_thread_by_current_bytes
意见有这些列:
thread_id
线程ID。
user
线程用户或线程名称。
current_count_used
尚未为线程释放的当前已分配内存块数。
current_allocated
尚未为该线程释放的当前已分配字节数。
current_avg_alloc
线程的每个内存块的当前分配字节数。
current_max_alloc
线程的最大单个当前内存分配(以字节为单位)。
total_allocated
线程的总内存分配(以字节为单位)。
这些视图总结了按用户分组的内存使用情况。 默认情况下,行按降序使用的内存量进行排序。
在
memory_by_user_by_current_bytes
和
x$memory_by_user_by_current_bytes
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
current_count_used
尚未为用户释放的当前已分配内存块数。
current_allocated
尚未为用户释放的当前已分配字节数。
current_avg_alloc
用户每个内存块的当前分配字节数。
current_max_alloc
用户的最大单个当前内存分配(以字节为单位)。
total_allocated
用户的总内存分配(以字节为单位)。
这些视图总结了内存使用情况,按分配类型(即按事件)分组。 默认情况下,行按降序使用的内存量进行排序。
在
memory_global_by_current_bytes
和
x$memory_global_by_current_bytes
意见有这些列:
event_name
内存事件名称。
current_count
事件的总发生次数。
current_alloc
尚未为事件释放的当前已分配字节数。
current_avg_alloc
事件的每个内存块的当前分配字节数。
high_count
分配给事件的内存块数量的高水位标记。
high_alloc
分配给事件的字节数的高水位标记。
high_avg_alloc
分配给事件的每个内存块的平均字节数的高水位标记。
这些视图总结了服务器内的总内存使用情况。
在
memory_global_total
和
x$memory_global_total
意见有这些列:
total_allocated
服务器内分配的内存总字节数。
此视图总结了MySQL服务器度量标准,以显示变量名称,值,类型以及是否已启用它们。 默认情况下,行按变量类型和名称排序。
该
metrics
视图包含以下信息:
Performance Schema
global_status
表中的
全局状态变量
InnoDB
INFORMATION_SCHEMA
INNODB_METRICS
表中的
指标
当前和总内存分配,基于性能模式内存检测
当前时间(人类可读和Unix时间戳格式)
在
global_status
和
INNODB_METRICS
表
之间存在一些信息重复,
metrics
视图消除了这些信息。
该
metrics
视图包含以下列:
Variable_name
度量标准名称。 度量标准类型确定从中获取名称的来源:
对于全局状态变量:
表
的
VARIABLE_NAME
列
global_status
对于
InnoDB
指标:
表格
的
NAME
列
INNODB_METRICS
对于其他指标:视图提供的描述性字符串
Variable_value
指标值。 度量标准类型确定从中获取值的源:
对于全局状态变量:
表
的
VARIABLE_VALUE
列
global_status
对于
InnoDB
指标:
表格
的
COUNT
列
INNODB_METRICS
对于内存指标:Performance Schema
memory_summary_global_by_event_name
表中
的相关列
对于当前时间:
NOW(3)
或
的值
UNIX_TIMESTAMP(NOW(3))
Type
指标类型:
对于全局状态变量:
Global
Status
对于
InnoDB
指标:
InnoDB
Metrics - %
,其中
%
替换
SUBSYSTEM
为
INNODB_METRICS
表
的
列
的值
对于内存指标:
Performance
Schema
目前的时间:
System Time
Enabled
是否启用了指标:
对于全局状态变量:
YES
为
InnoDB
指标:
YES
如果
STATUS
所述的列
INNODB_METRICS
表是
enabled
,
NO
否则
对于内存指标:
NO
,,
YES
或
PARTIAL
(当前
PARTIAL
仅针对内存指标发生,表示并非所有
memory/%
仪器都已启用;性能模式内存仪器始终启用)
目前的时间:
YES
这些视图总结了进程列表信息。
它们提供比
SHOW
PROCESSLIST
声明和
INFORMATION_SCHEMA
PROCESSLIST
表格
更完整的信息
,并且也是非阻塞的。
默认情况下,行按降序处理时间和降序等待时间排序。
这里的列描述很简短。
有关其他信息,请参见
第26.12.17.5节“线程表”
中的性能模式
threads
表
的说明
。
在
processlist
和
x$processlist
意见有这些列:
thd_id
线程ID。
conn_id
连接ID。
user
线程用户或线程名称。
db
线程的默认数据库,
NULL
如果没有。
command
对于前台线程,线程代表客户端执行的命令类型,或者
Sleep
会话是否空闲。
state
指示线程正在执行的操作,事件或状态。
time
线程处于当前状态的时间(以秒为单位)。
current_statement
线程正在执行的语句,或者
NULL
它是否正在执行任何语句。
statement_latency
声明执行了多长时间。
progress
支持进度报告的阶段完成的工作百分比。 请参见 第27.3节“sys Schema Progress Reporting” 。
lock_latency
当前语句等待锁定所花费的时间。
rows_examined
当前语句从存储引擎读取的行数。
rows_sent
当前语句返回的行数。
rows_affected
受当前语句影响的行数。
tmp_tables
当前语句创建的内部内存临时表的数量。
tmp_disk_tables
当前语句创建的内部磁盘临时表的数量。
full_scan
当前语句执行的全表扫描数。
last_statement
如果当前没有执行语句或等待,则由线程执行的最后一个语句。
last_statement_latency
最后一个语句执行了多长时间。
current_memory
线程分配的字节数。
last_wait
线程的最近等待事件的名称。
last_wait_latency
线程最近等待事件的等待时间。
source
包含生成事件的检测代码的源文件和行号。
trx_latency
线程当前事务的等待时间。
trx_state
线程当前事务的状态。
trx_autocommit
当前事务启动时是否启用了自动提交模式。
pid
客户端进程ID。
program_name
客户端程序名称。
此视图返回有关丢失的性能模式工具的信息,以指示性能模式是否无法监视所有运行时数据。
该
ps_check_lost_instrumentation
视图包含以下列:
variable_name
Performance Schema状态变量名称,指示丢失了哪种类型的仪器。
variable_value
丢失的工具数量。
此视图指示哪些表具有
AUTO_INCREMENT
列并提供有关这些列的信息,例如当前和最大列值以及使用率(已用于可能值的比率)。
默认情况下,行按降序使用率和最大列值排序。
在这些模式中的表被排除在视图输出:
mysql
,
sys
,
INFORMATION_SCHEMA
,
performance_schema
。
该
schema_auto_increment_columns
视图包含以下列:
table_schema
包含表的架构。
table_name
包含该
AUTO_INCREMENT
列
的表
。
column_name
AUTO_INCREMENT
列
的名称
。
data_type
列的数据类型。
column_type
列的列类型,即数据类型以及可能的其他信息。
例如,对于具有
bigint(20) unsigned
列类型
的
列,数据类型就是
bigint
。
is_signed
列类型是否已签名。
is_unsigned
列类型是否为无符号。
max_value
列的最大允许值。
auto_increment
AUTO_INCREMENT
列
的当前
值。
auto_increment_ratio
列的已使用值与允许值的比率。 这表明有多少值的序列被 “ 用完了”。 ”
这些视图提供索引统计。 默认情况下,行按总索引延迟降序排序。
在
schema_index_statistics
和
x$schema_index_statistics
意见有这些列:
table_schema
包含表的架构。
table_name
包含索引的表。
index_name
索引的名称。
rows_selected
使用索引读取的总行数。
select_latency
使用索引读取的总等待时间。
rows_inserted
插入索引的总行数。
insert_latency
定时插入索引的总等待时间。
rows_updated
索引中更新的总行数。
update_latency
索引中定时更新的总等待时间。
rows_deleted
从索引中删除的总行数。
delete_latency
定时的总等待时间从索引中删除。
此视图总结了每个模式中的对象类型。 默认情况下,行按架构和对象类型排序。
对于具有大量对象的MySQL实例,此视图可能需要很长时间才能执行。
该
schema_object_overview
视图包含以下列:
db
架构名称。
object_type
对象类型:
BASE TABLE
,
,
,
,
,
,
。
INDEX
(
index_type
)EVENT
FUNCTION
PROCEDURE
TRIGGER
VIEW
count
给定类型的模式中的对象数。
该
schema_redundant_indexes
视图显示与其他索引重复或由它们构成冗余的索引。
该
x$schema_flattened_keys
视图是针对助手视图
schema_redundant_indexes
。
在以下列描述中,主导索引是使冗余索引冗余的索引。
该
schema_redundant_indexes
视图包含以下列:
table_schema
包含表的架构。
table_name
包含索引的表。
redundant_index_name
冗余索引的名称。
redundant_index_columns
冗余索引中列的名称。
redundant_index_non_unique
冗余索引中的非唯一列数。
dominant_index_name
主导指数的名称。
dominant_index_columns
主导索引中列的名称。
dominant_index_non_unique
主导索引中非唯一列的数量。
subpart_exists
索引是否仅索引列的一部分。
sql_drop_index
执行以删除冗余索引的语句。
该
x$schema_flattened_keys
视图包含以下列:
table_schema
包含表的架构。
table_name
包含索引的表。
index_name
索引名称。
non_unique
索引中非唯一列的数量。
subpart_exists
索引是否仅索引列的一部分。
index_columns
索引中列的名称。
这些视图显示阻止等待元数据锁定的会话以及阻止它们的内容。
这里的列描述很简短。
有关其他信息,请参见
第26.12.12.3节“metadata_locks表”
中的性能模式
metadata_locks
表
的说明。
。
在
schema_table_lock_waits
和
x$schema_table_lock_waits
意见有这些列:
object_schema
包含要锁定的对象的模式。
object_name
已检测对象的名称。
waiting_thread_id
正在等待锁定的线程的线程ID。
waiting_pid
正在等待锁定的线程的进程列表ID。
waiting_account
与等待锁定的会话关联的帐户。
waiting_lock_type
等待锁的类型。
waiting_lock_duration
等待锁等待多长时间。
waiting_query
正在等待锁定的语句。
waiting_query_secs
声明等待了多长时间,以秒为单位。
waiting_query_rows_affected
受语句影响的行数。
waiting_query_rows_examined
语句从存储引擎读取的行数。
blocking_thread_id
阻塞等待锁的线程的线程ID。
blocking_pid
阻止等待锁定的线程的进程列表ID。
blocking_account
与阻止等待锁定的线程关联的帐户。
blocking_lock_type
阻止等待锁定的锁定类型。
blocking_lock_duration
阻塞锁已经持有多长时间。
sql_kill_blocking_query
KILL
要执行
的
语句以终止阻塞语句。
sql_kill_blocking_connection
KILL
要执行
的
语句,以终止运行阻塞语句的会话。
这些视图总结了表统计信息。 默认情况下,行按降序总等待时间排序(具有最多争用的表)。
这些视图使用帮助器视图
x$ps_schema_table_statistics_io
。
在
schema_table_statistics
和
x$schema_table_statistics
意见有这些列:
table_schema
包含表的架构。
table_name
表名。
total_latency
表的定时I / O事件的总等待时间。
rows_fetched
从表中读取的总行数。
fetch_latency
表的定时读取I / O事件的总等待时间。
rows_inserted
插入表中的总行数。
insert_latency
表的定时插入I / O事件的总等待时间。
rows_updated
表中更新的总行数。
update_latency
表的定时更新I / O事件的总等待时间。
rows_deleted
从表中删除的总行数。
delete_latency
定时删除表的I / O事件的总等待时间。
io_read_requests
表的读取请求总数。
io_read
从表中读取的总字节数。
io_read_latency
从表中读取的总等待时间。
io_write_requests
表的写请求总数。
io_write
写入表的总字节数。
io_write_latency
写入表的总等待时间。
io_misc_requests
表的其他I / O请求总数。
io_misc_latency
表的其他I / O请求的总等待时间。
这些视图汇总了表统计信息,包括
InnoDB
缓冲池统计信息。
默认情况下,行按降序总等待时间排序(具有最多争用的表)。
这些视图使用帮助器视图
x$ps_schema_table_statistics_io
。
在
schema_table_statistics_with_buffer
和
x$schema_table_statistics_with_buffer
意见有这些列:
table_schema
包含表的架构。
table_name
表名。
rows_fetched
从表中读取的总行数。
fetch_latency
表的定时读取I / O事件的总等待时间。
rows_inserted
插入表中的总行数。
insert_latency
表的定时插入I / O事件的总等待时间。
rows_updated
表中更新的总行数。
update_latency
表的定时更新I / O事件的总等待时间。
rows_deleted
从表中删除的总行数。
delete_latency
定时删除表的I / O事件的总等待时间。
io_read_requests
表的读取请求总数。
io_read
从表中读取的总字节数。
io_read_latency
从表中读取的总等待时间。
io_write_requests
表的写请求总数。
io_write
写入表的总字节数。
io_write_latency
写入表的总等待时间。
io_misc_requests
表的其他I / O请求总数。
io_misc_latency
表的其他I / O请求的总等待时间。
innodb_buffer_allocated
InnoDB
为表分配
的
缓冲区字节
总数
。
innodb_buffer_data
InnoDB
为表分配
的
数据字节
总数
。
innodb_buffer_free
InnoDB
为表分配
的
非数据字节
总数
(
innodb_buffer_allocated
-
innodb_buffer_data
)。
innodb_buffer_pages
InnoDB
为表分配
的总
页数。
innodb_buffer_pages_hashed
InnoDB
为表分配
的
散列页
总数
。
innodb_buffer_pages_old
InnoDB
为表分配
的
旧页
总数
。
innodb_buffer_rows_cached
InnoDB
表
的
缓存行
总数
。
这些视图显示使用全表扫描访问哪些表。 默认情况下,行按扫描的下行进行排序。
在
schema_tables_with_full_table_scans
和
x$schema_tables_with_full_table_scans
意见有这些列:
object_schema
架构名称。
object_name
表名。
rows_full_scanned
完全扫描表扫描的总行数。
latency
完全扫描表的总等待时间。
这些视图显示没有事件的索引,表示它们未被使用。 默认情况下,行按架构和表排序。
当服务器启动并处理足够长的时间以使其工作负载具有代表性时,此视图最有用。 否则,此视图中存在索引可能没有意义。
该
schema_unused_indexes
视图包含以下列:
object_schema
架构名称。
object_name
表名。
index_name
未使用的索引名称。
这些视图与
processlist
和
类似
x$processlist
,但它们会过滤掉后台进程以仅显示用户会话。
有关列的说明,请参见
第27.4.3.22节“processlist和x $ processlist视图”
。
For each connection, this view displays the SSL version, cipher, and count of reused SSL sessions.
The session_ssl_status
view has
these columns:
thread_id
The thread ID for the connection.
ssl_version
The version of SSL used for the connection.
ssl_cipher
The SSL cipher used for the connection.
ssl_sessions_reused
连接的重用SSL会话数。
这些视图列出了带有聚合统计信息的规范化语句。 该内容模仿MySQL Enterprise Monitor查询分析视图。 默认情况下,行按降序总延迟排序。
在
statement_analysis
和
x$statement_analysis
意见有这些列:
query
规范化的语句字符串。
db
语句的缺省数据库,
NULL
如果没有,则为
缺省数据库
。
full_scan
由语句的出现执行的全表扫描的总数。
exec_count
语句执行的总次数。
err_count
语句出现产生的错误总数。
warn_count
声明出现时产生的警告总数。
total_latency
语句定时发生的总等待时间。
max_latency
语句定时发生的最大单个等待时间。
avg_latency
每次定时发生的平均等待时间。
lock_latency
由语句的定时发生等待锁定的总时间。
rows_sent
语句出现返回的总行数。
rows_sent_avg
每次出现语句时返回的平均行数。
rows_examined
通过语句的出现从存储引擎读取的总行数。
rows_examined_avg
每次出现语句时从存储引擎读取的平均行数。
rows_affected
受语句出现影响的总行数。
rows_affected_avg
每次出现语句时受影响的平均行数。
tmp_tables
由语句的出现创建的内部内存临时表的总数。
tmp_disk_tables
由语句的出现创建的内部磁盘临时表的总数。
rows_sorted
按语句的出现次数排序的总行数。
sort_merge_passes
排序合并的总数除以语句的出现次数。
digest
声明摘要。
first_seen
首次看到该陈述的时间。
last_seen
最近看到该陈述的时间。
这些视图显示已生成错误或警告的规范化语句。 默认情况下,行按降序错误和警告计数排序。
在
statements_with_errors_or_warnings
和
x$statements_with_errors_or_warnings
意见有这些列:
query
规范化的语句字符串。
db
语句的缺省数据库,
NULL
如果没有,则为
缺省数据库
。
exec_count
语句执行的总次数。
errors
语句出现产生的错误总数。
error_pct
产生错误的语句出现的百分比。
warnings
声明出现时产生的警告总数。
warning_pct
产生警告的语句出现的百分比。
first_seen
首次看到该陈述的时间。
last_seen
最近看到该陈述的时间。
digest
声明摘要。
这些视图显示已执行全表扫描的规范化语句。 默认情况下,行按完整扫描的下降百分比和总延迟下降进行排序。
在
statements_with_full_table_scans
和
x$statements_with_full_table_scans
意见有这些列:
query
规范化的语句字符串。
db
语句的缺省数据库,
NULL
如果没有,则为
缺省数据库
。
exec_count
语句执行的总次数。
total_latency
语句的定时语句事件的总等待时间。
no_index_used_count
未使用索引扫描表的总次数。
no_good_index_used_count
没有好的索引用于扫描表的总次数。
no_index_used_pct
没有使用索引扫描表的时间百分比。
rows_sent
从表返回的总行数。
rows_examined
从表的存储引擎读取的总行数。
rows_sent_avg
从表返回的平均行数。
rows_examined_avg
从表的存储引擎读取的平均行数。
first_seen
首次看到该陈述的时间。
last_seen
最近看到该陈述的时间。
digest
声明摘要。
这些视图列出了运行时间在第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
声明摘要。
这些视图列出了已执行排序的规范化语句。 默认情况下,行按降序总延迟排序。
在
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
声明摘要。
这些视图列出了使用临时表的规范化语句。 默认情况下,行按照使用的磁盘上临时表的减少数量和使用的内存中临时表的数量下降进行排序。
在
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
声明摘要。
这些视图汇总了按用户分组的语句活动,文件I / O和连接。 默认情况下,行按降序总延迟排序。
在
user_summary
和
x$user_summary
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
statements
用户的语句总数。
statement_latency
用户的定时语句的总等待时间。
statement_avg_latency
用户每个timed语句的平均等待时间。
table_scans
用户的表扫描总数。
file_ios
用户的文件I / O事件总数。
file_io_latency
用户的定时文件I / O事件的总等待时间。
current_connections
用户的当前连接数。
total_connections
用户的连接总数。
unique_hosts
用户连接所源自的不同主机的数量。
current_memory
当前为用户分配的内存量。
total_memory_allocated
为用户分配的内存总量。
这些视图汇总了按用户分组的文件I / O. 默认情况下,行按总文件I / O延迟降序排序。
在
user_summary_by_file_io
和
x$user_summary_by_file_io
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
ios
用户的文件I / O事件总数。
io_latency
用户的定时文件I / O事件的总等待时间。
这些视图汇总了按用户和事件类型分组的文件I / O. 默认情况下,行按用户排序并降低总延迟。
在
user_summary_by_file_io_type
和
x$user_summary_by_file_io_type
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
event_name
文件I / O事件名称。
total
用户的文件I / O事件的总发生次数。
latency
用户的文件I / O事件的定时发生的总等待时间。
max_latency
用户的文件I / O事件的定时发生的最大单个等待时间。
这些视图汇总了按用户分组的阶段。 默认情况下,行按用户排序并降低总阶段延迟。
在
user_summary_by_stages
和
x$user_summary_by_stages
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
event_name
舞台活动名称。
total
用户的舞台事件的总发生次数。
total_latency
用户的阶段事件的定时发生的总等待时间。
avg_latency
用户的阶段事件每次定时发生的平均等待时间。
这些视图总结了按用户分组的整体语句统计信息。 默认情况下,行按降序总延迟排序。
在
user_summary_by_statement_latency
和
x$user_summary_by_statement_latency
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
total
用户的语句总数。
total_latency
用户的定时语句的总等待时间。
max_latency
用户的定时语句的最大单个等待时间。
lock_latency
等待用户的定时语句锁定的总时间。
rows_sent
用户语句返回的总行数。
rows_examined
通过用户的语句从存储引擎读取的总行数。
rows_affected
受用户语句影响的总行数。
full_scans
按用户语句的全表扫描总数。
这些视图总结了有关执行的语句的信息,按用户和语句类型分组。 默认情况下,行按用户排序并降低总延迟。
在
user_summary_by_statement_type
和
x$user_summary_by_statement_type
意见有这些列:
user
客户端用户名。
假定
USER
基础Performance Schema表中
的
列的
行用于
NULL
后台线程,并使用主机名报告
background
。
statement
语句事件名称的最后一个组成部分。
total
用户的语句事件的总发生次数。
total_latency
用户的语句事件的定时发生的总等待时间。
max_latency
用户的语句事件的定时发生的最大单个等待时间。
lock_latency
由用户的语句事件的定时发生等待锁定的总时间。
rows_sent
用户的语句事件的返回返回的总行数。
rows_examined
通过发生用户的语句事件从存储引擎读取的总行数。
rows_affected
受用户发生语句事件影响的总行数。
full_scans
按用户的语句事件的事件发生的全表扫描总数。
这些视图总结了等级类平均延迟,按事件类分组。 默认情况下,行按降序平均延迟排序。 空闲事件被忽略。
通过从事件名称中删除前三个组件之后的所有内容来确定事件类。
例如,类
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
类中事件发生的最长单个等待时间。
这些视图总结了等待类总延迟,按事件类分组。 默认情况下,行按降序总延迟排序。 空闲事件被忽略。
通过从事件名称中删除前三个组件之后的所有内容来确定事件类。
例如,类
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
类中事件发生的最长单个等待时间。
这些视图总结了按主机和事件分组的等待事件。 默认情况下,行按主机排序并降低总延迟。 空闲事件被忽略。
在
waits_by_host_by_latency
和
x$waits_by_host_by_latency
意见有这些列:
host
发起连接的主机。
event
事件名称。
total
主机事件的总发生次数。
total_latency
主机事件定时发生的总等待时间。
avg_latency
主机事件每次定时发生的平均等待时间。
max_latency
主机事件定时发生的最长单个等待时间。
这些视图汇总了按用户和事件分组的等待事件。 默认情况下,行按用户排序并降低总延迟。 空闲事件被忽略。
在
waits_by_user_by_latency
和
x$waits_by_user_by_latency
意见有这些列:
user
与连接关联的用户。
event
事件名称。
total
用户事件的总发生次数。
total_latency
用户的事件定时发生的总等待时间。
avg_latency
用户每次发生事件的平均等待时间。
max_latency
用户的事件定时发生的最大单个等待时间。
这些视图汇总了按事件分组的等待事件。 默认情况下,行按降序总延迟排序。 空闲事件被忽略。
在
waits_global_by_latency
和
x$waits_global_by_latency
意见有这些列:
events
事件名称。
total
事件的总发生次数。
total_latency
事件发生时间的总等待时间。
avg_latency
每次定时事件发生的平均等待时间。
max_latency
事件定时发生的最大单个等待时间。
以下部分描述了
sys
模式存储过程。
给定模式名称,此过程将创建一个同义词模式,其中包含引用原始模式中所有表和视图的视图。
例如,这可用于创建一个较短的名称,通过该名称引用具有长名称(例如
info
而不是
INFORMATION_SCHEMA
)的模式。
MySQL的>SHOW DATABASES;
+ -------------------- + | 数据库| + -------------------- + | information_schema | | mysql | | performance_schema | | sys | | 世界| + -------------------- + MySQL的>CALL sys.create_synonym_db('INFORMATION_SCHEMA', 'info');
+ --------------------------------------- + | 摘要| + --------------------------------------- + | 在info数据库中创建了63个视图 + --------------------------------------- + MySQL的>SHOW DATABASES;
+ -------------------- + | 数据库| + -------------------- + | information_schema | | 信息| | mysql | | performance_schema | | sys | | 世界| + -------------------- + MySQL的>SHOW FULL TABLES FROM info;
+ --------------------------------------- + --------- --- + | Tables_in_info | Table_type | + --------------------------------------- + --------- --- + | character_sets | 查看| | collation_character_set_applicability | 查看| | 整理| 查看| | column_privileges | 查看| | 列| 查看| ...
创建当前服务器状态的报告以进行诊断。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
收集的数据
diagnostics()
包括以下信息:
metrics
视图中的
信息
(参见
第27.4.3.21节“度量标准视图”
)
来自其他相关
sys
模式视图的信息,例如确定第95百分位数中的查询的信息
ndbinfo
如果MySQL服务器是NDB Cluster的一部分,则
来自
模式的
信息
复制状态(主服务器和从服务器)
某些sys模式视图计算为初始(可选),总体和delta值:
初始视图是过程开始时视图的内容
diagnostics()
。
此输出与用于增量视图的起始值相同。
如果
diagnostics.include_raw
配置选项是,
则包括初始视图
ON
。
整体视图是
diagnostics()
过程
结束时视图的内容
。
此输出与用于delta视图的结束值相同。
始终包含整体视图。
增量视图是从过程执行的开始到结束的差异。
最小值和最大值分别是端视图中的最小值和最大值。
它们不一定反映监测期间的最小值和最大值。
除
metrics
视图外,仅在第一个和最后一个输出之间计算增量。
in_max_runtime INT UNSIGNED
:以秒为单位的最大数据收集时间。
使用
NULL
收集的数据为60秒的默认值。
否则,请使用大于0的值。
in_interval INT UNSIGNED
:数据收集之间的休眠时间(以秒为单位)。
使用
NULL
进入睡眠状态30秒的默认。
否则,请使用大于0的值。
in_auto_config ENUM('current', 'medium',
'full')
:要使用的性能架构配置。
允许的值是:
current
:使用当前的仪器和使用者设置。
medium
:启用一些仪器和消费者。
full
:启用所有仪器和消费者。
启用的仪器和消费者越多,对MySQL服务器性能的影响就越大。
请注意
medium
设置,尤其是
full
设置,这会对性能产生很大影响。
使用
medium
或
full
设置需要
SUPER
特权。
如果
current
选择了
除以外
的设置,则在过程结束时恢复当前设置。
diagnostics()
可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见
第27.4.2.1节“sys_config表”
):
debug
,
@sys.debug
如果是此选项
ON
,则生成调试输出。
默认是
OFF
。
diagnostics.allow_i_s_tables
,
@sys.diagnostics.allow_i_s_tables
如果是此选项
ON
,
diagnostics()
则允许
该
过程在表上执行表扫描
INFORMATION_SCHEMA.TABLES
。
如果有很多表,这可能会很昂贵。
默认是
OFF
。
diagnostics.include_raw
,
@sys.diagnostics.include_raw
如果是此选项
ON
,则
diagnostics()
过程输出包括查询
metrics
视图
的原始输出
。
默认是
OFF
。
statement_truncate_len
,
@sys.statement_truncate_len
format_statement()
函数
返回的语句的最大长度
。
较长的语句被截断为此长度。
默认值为64。
创建一个诊断报告,每30秒启动一次迭代,并使用当前的性能模式设置运行最多120秒:
MySQL的> CALL sys.diagnostics(120, 30, 'current');
要在运行时捕获
diagnostics()
文件中过程
的输出
,请使用
mysql
客户端
和
命令(请参见
第4.5.1.2节“mysql客户端命令”
):
tee
filename
notee
mysql>tee diag.out;
mysql>CALL sys.diagnostics(120, 30, 'current');
mysql>notee;
将SQL语句作为字符串,将其作为预准备语句执行。 准备好的语句在执行后被释放,因此不需要重用。 因此,此过程主要用于一次性执行动态语句。
此过程
sys_execute_prepared_stmt
用作准备的语句名称。
如果在调用过程时存在该语句名称,则会销毁其先前的内容。
execute_prepared_stmt()
可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见
第27.4.2.1节“sys_config表”
):
debug
,
@sys.debug
如果是此选项
ON
,则生成调试输出。
默认是
OFF
。
禁用名称包含参数的Performance Schema使用者。 生成一个结果集,指示已禁用的消费者数量。 已经残疾的消费者不计算在内。
consumer VARCHAR(128)
:用于匹配使用者名称的值,这些名称通过
%consumer%
用作
LIKE
模式匹配
的操作数来
标识
。
''
匹配所有消费者的
价值
。
禁用名称包含参数的Performance Schema工具。 生成一个结果集,指示已禁用的仪器数量。 已经禁用的工具不计算在内。
in_pattern VARCHAR(128)
:用于匹配仪器名称的值,通过
%in_pattern%
用作
LIKE
模式匹配
的操作数来
识别
。
''
匹配所有乐器的
值
。
禁用特定仪器:
MySQL的> CALL sys.ps_setup_disable_instrument('wait/lock/metadata/sql/mdl');
+ ----------------------- +
| 摘要|
+ ----------------------- +
| 禁用1个仪器|
+ ----------------------- +
禁用所有互斥锁乐器:
MySQL的> CALL sys.ps_setup_disable_instrument('mutex');
+ -------------------------- +
| 摘要|
+ -------------------------- +
| 禁用177仪器|
+ -------------------------- +
给定连接ID,禁用该线程的性能模式检测。 生成一个结果集,指示已禁用的线程数。 已经禁用的线程不计算在内。
in_connection_id BIGINT
:连接ID。
这是
PROCESSLIST_ID
Performance Schema
threads
表的
Id
列
或
SHOW PROCESSLIST
输出
列中
给出的类型的值
。
通过其连接ID禁用特定连接:
MySQL的> CALL sys.ps_setup_disable_thread(225);
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +
禁用当前连接:
MySQL的> CALL sys.ps_setup_disable_thread(CONNECTION_ID());
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +
使用包含参数的名称的Performance Schema使用者。 生成一个结果集,指示启用了多少个使用者。 已经启用的消费者不计算在内。
consumer VARCHAR(128)
:用于匹配使用者名称的值,这些名称通过
%consumer%
用作
LIKE
模式匹配
的操作数来
标识
。
''
匹配所有消费者的
价值
。
启用名称包含参数的Performance Schema工具。 生成一个结果集,指示启用了多少仪器。 已启用的仪器不计算在内。
in_pattern VARCHAR(128)
:用于匹配仪器名称的值,通过
%in_pattern%
用作
LIKE
模式匹配
的操作数来
识别
。
''
匹配所有乐器的
值
。
启用特定工具:
MySQL的> CALL sys.ps_setup_enable_instrument('wait/lock/metadata/sql/mdl');
+ ---------------------- +
| 摘要|
+ ---------------------- +
| 启用1个仪器|
+ ---------------------- +
启用所有互斥仪器:
MySQL的> CALL sys.ps_setup_enable_instrument('mutex');
+ ------------------------- +
| 摘要|
+ ------------------------- +
| 启用177个仪器|
+ ------------------------- +
给定连接ID,为线程启用Performance Schema检测。 生成一个结果集,指示启用了多少个线程。 已经启用的线程不计算在内。
in_connection_id BIGINT
:连接ID。
这是
PROCESSLIST_ID
Performance Schema
threads
表的
Id
列
或
SHOW PROCESSLIST
输出
列中
给出的类型的值
。
使用重新加载先前在同一会话中保存的性能架构配置
ps_setup_save()
。
有关更多信息,请参阅的说明
ps_setup_save()
。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
将Performance Schema配置重置为其默认设置。
MySQL的> CALL sys.ps_setup_reset_to_default(TRUE)\G
*************************** 1。排******************** *******
状态:重置:setup_actors
删除
FROM performance_schema.setup_actors
哪里没有(HOST ='%'和USER ='%'和ROLE ='%')
*************************** 1。排******************** *******
状态:重置:setup_actors
INSERT IGNORE INTO performance_schema.setup_actors
VALUES('%','%','%')
...
保存当前的性能架构配置。
这使您可以临时更改配置以进行调试或其他目的,然后通过调用
ps_setup_reload_saved()
过程
将其还原到以前的状态
。
要防止其他同时调用以保存配置,请
通过调用该
函数
ps_setup_save()
获取命名的咨询锁
。
获取超时参数以指示如果锁已存在则等待多少秒(这表示某些其他会话已保存未完成的配置)。
如果超时到期而未获得锁定,则
失败。
sys.ps_setup_save
GET_LOCK()
ps_setup_save()
ps_setup_save()
您打算
ps_setup_reload_saved()
稍后在
同一
会话中
调用
,
ps_setup_save()
因为配置保存在
TEMPORARY
表中。
ps_setup_save()
删除临时表并释放锁。
如果在不调用
ps_setup_save()
的
情况下结束会话
,则表和锁会自动消失。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
显示当前禁用的所有Performance Schema配置。
mysql> CALL sys.ps_setup_show_disabled(TRUE,TRUE); + ---------------------------- + | performance_schema_enabled | + ---------------------------- + | 1 | + ---------------------------- + + --------------- + | enabled_users | + --------------- + | '%'@'%'| + --------------- + + ------------- + ---------------------- + --------- + - ----- + | object_type | 对象| 启用| 定时| + ------------- + ---------------------- + --------- + - ----- + | 活动| mysql。%| 没有| 没有| | 活动| performance_schema。%| 没有| 没有| | 活动| information_schema。%| 没有| 没有| | 功能| mysql。%| 没有| 没有| | 功能| performance_schema。%| 没有| 没有| | 功能| information_schema。%| 没有| 没有| | 程序| mysql。%| 没有| 没有| | 程序| performance_schema。%| 没有| 没有| | 程序| information_schema。%| 没有| 没有| | 表| mysql。%| 没有| 没有| | 表| performance_schema。%| 没有| 没有| | 表| information_schema。%| 没有| 没有| | TRIGGER | mysql。%| 没有| 没有| | TRIGGER | performance_schema。%| 没有| 没有| | TRIGGER | information_schema。%| 没有| 没有| + ------------- + ---------------------- + --------- + - ----- + ...
显示当前禁用的所有Performance Schema使用者。
MySQL的> CALL sys.ps_setup_show_disabled_consumers();
+ ---------------------------------- +
| disabled_consumers |
+ ---------------------------------- +
| events_stages_current |
| events_stages_history |
| events_stages_history_long |
| events_statements_history |
| events_statements_history_long |
| events_transactions_history |
| events_transactions_history_long |
| events_waits_current |
| events_waits_history |
| events_waits_history_long |
+ ---------------------------------- +
显示当前禁用的所有性能架构工具。 这可能是一个很长的清单。
MySQL的> CALL sys.ps_setup_show_disabled_instruments()\G
*************************** 1。排******************** *******
disabled_instruments:wait / synch / mutex / sql / TC_LOG_MMAP :: LOCK_tc
定时:没有
*************************** 2.排******************** *******
disabled_instruments:wait / synch / mutex / sql / THD :: LOCK_query_plan
定时:没有
*************************** 3。排******************** *******
disabled_instruments:wait / synch / mutex / sql / MYSQL_BIN_LOG :: LOCK_commit
定时:没有
...
显示当前启用的所有Performance Schema配置。
MySQL的> CALL sys.ps_setup_show_enabled(FALSE, FALSE);
+ ---------------------------- +
| performance_schema_enabled |
+ ---------------------------- +
| 1 |
+ ---------------------------- +
1排(0.01秒)
+ --------------- +
| enabled_users |
+ --------------- +
| '%'@'%'|
+ --------------- +
1排(0.01秒)
+ ------------- + --------- + --------- + ------- +
| object_type | 对象| 启用| 定时|
+ ------------- + --------- + --------- + ------- +
| 活动| %。%| 是的| 是的|
| 功能| %。%| 是的| 是的|
| 程序| %。%| 是的| 是的|
| 表| %。%| 是的| 是的|
| TRIGGER | %。%| 是的| 是的|
+ ------------- + --------- + --------- + ------- +
5行(0.02秒)
+ ----------------------------- +
| enabled_consumers |
+ ----------------------------- +
| events_statements_current |
| events_statements_history |
| events_transactions_current |
| events_transactions_history |
| global_instrumentation |
| statements_digest |
| thread_instrumentation |
+ ----------------------------- +
显示当前启用的所有Performance Schema使用者。
MySQL的> CALL sys.ps_setup_show_enabled_consumers();
+ ----------------------------- +
| enabled_consumers |
+ ----------------------------- +
| events_statements_current |
| events_statements_history |
| events_transactions_current |
| events_transactions_history |
| global_instrumentation |
| statements_digest |
| thread_instrumentation |
+ ----------------------------- +
显示当前启用的所有Performance Schema工具。 这可能是一个很长的清单。
MySQL的> CALL sys.ps_setup_show_enabled_instruments()\G
*************************** 1。排******************** *******
enabled_instruments:wait / io / file / sql / map
定时:是的
*************************** 2.排******************** *******
enabled_instruments:wait / io / file / sql / binlog
定时:是的
*************************** 3。排******************** *******
enabled_instruments:wait / io / file / sql / binlog_cache
定时:是的
...
显示性能模式
events_statements_summary_by_digest
表中
跟踪的所有规范化语句的平均延迟值的文本直方图
。
此过程可用于显示在此MySQL实例中运行的语句的延迟分布的非常高级别的图片。
直方图以语句单位输出。
例如,
* = 2 units
在直方图图例中表示每个
*
字符代表2个语句。
MySQL的> CALL sys.ps_statement_avg_latency_histogram()\G
*************************** 1。排******************** *******
性能架构声明摘要平均延迟直方图:
。= 1个单位
* = 2个单位
#= 3个单位
(0 - 66ms)88 | #############################
(66 - 133ms)14 | ..............
(133 - 199ms)4 | ....
(199 - 265ms)5 | **
(265 - 332ms)1 | 。
(332 - 398ms)0 |
(398 - 464ms)1 | 。
(464 - 531ms)0 |
(531 - 597ms)0 |
(597 - 663ms)0 |
(663 - 730ms)0 |
(730 - 796ms)0 |
(796 - 863ms)0 |
(863 - 929ms)0 |
(929 - 995ms)0 |
(995 - 1062ms)0 |
总报表:114; 铲斗:16; 铲斗尺寸:66毫秒;
跟踪特定语句摘要的所有Performance Schema检测。
如果在Performance Schema
events_statements_summary_by_digest
表中
找到感兴趣的语句,请
DIGEST
为此过程
指定其
MD5列值,并指示轮询持续时间和间隔。
结果是针对间隔的摘要在性能模式中跟踪的所有统计信息的报告。
该过程还尝试
EXPLAIN
在间隔期间
执行
摘要中运行时间最长的示例。
此尝试可能会失败,因为性能架构会截断长
SQL_TEXT
值。
因此,
EXPLAIN
由于解析错误而失败。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
in_digest VARCHAR(32)
:要分析的语句摘要标识符。
in_runtime INT
:在几秒钟内运行分析多长时间。
in_interval DECIMAL(2,2)
:以秒为单位的分析间隔(可以是小数),尝试拍摄快照。
in_start_fresh BOOLEAN
:是否
在启动之前
截断性能模式
events_statements_history_long
和
events_stages_history_long
表。
in_auto_enable BOOLEAN
:是否自动启用所需的消费者。
MySQL的> CALL sys.ps_trace_statement_digest('891ec6860f98ba46d89dd20b0c03652c', 10, 0.1, TRUE, TRUE);
+ -------------------- +
| 摘要统计|
+ -------------------- +
| 摘要统计|
+ -------------------- +
1排(9.11秒)
+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
| 执行| exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scans |
+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
| 21 | 4.11毫秒| 2.00毫秒| 0 | 21 | 0 | 0 |
+ ------------ + ----------- ----------- + + ----------- + --------------- + ------------ + ------------ +
1排(9.11秒)
------------------------------------------ + ------ + - + ----------- +
| event_name | 计数| 延迟|
------------------------------------------ + ------ + - + ----------- +
| stage / sql / statistics | 16 | 546.92我们|
| stage / sql / freeing items | 18 | 520.11我们|
| stage / sql / init | 51 | 466.80我们|
...
| stage / sql /清理| 18 | 11.92我们|
| stage / sql / execution | 16 | 6.95我们|
------------------------------------------ + ------ + - + ----------- +
17行(9.12秒)
+ --------------------------- +
| 最长的运行声明|
+ --------------------------- +
| 最长的运行声明|
+ --------------------------- +
1排(9.16秒)
+ ----------- ----------- + + ----------- ----------- + + - -------------- + ------------ + ----------- +
| thread_id | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scan |
+ ----------- ----------- + + ----------- ----------- + + - -------------- + ------------ + ----------- +
| 166646 | 618.43我们| 1.00毫秒| 0 | 1 | 0 | 0 |
+ ----------- ----------- + + ----------- ----------- + + - -------------- + ------------ + ----------- +
1排(9.16秒)
#为清晰起见截断...
+ ------------------------------------------------- ---------------- +
| sql_text |
+ ------------------------------------------------- ---------------- +
| 选择hibeventhe0_.id为id1382_,hibeventhe0_.createdTime ... |
+ ------------------------------------------------- ---------------- +
1排(9.17秒)
------------------------------------------ + ------ + ----- +
| event_name | 延迟|
------------------------------------------ + ------ + ----- +
| stage / sql / init | 8.61我们|
| stage / sql / init | 331.07 ns |
...
| stage / sql / freeing items | 30.46我们|
| stage / sql /清理| 662.13 ns |
------------------------------------------ + ------ + ----- +
18行(9.23秒)
+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- - + ------- +
| id | select_type | 表| 类型| possible_keys | 关键| key_len | ref | 行| 额外的|
+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- - + ------- +
| 1 | 简单| hibeventhe0_ | const | fixedTime | fixedTime | 775 | const,const | 1 | NULL |
+ ---- + ------------- + -------------- + ------- ------- + -------- + ----------- + --------- + ------------- + ----- - + ------- +
1排(9.27秒)
查询正常,0行受影响(9.28秒)
将已检测线程的所有性能模式数据转储到
.dot
格式化图形文件(对于DOT图形描述语言)。
从过程返回的每个结果集都应该用于完整的图形。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
in_thread_id INT
:要跟踪的线程。
in_outfile VARCHAR(255)
:用于
.dot
输出文件
的名称
。
in_max_runtime DECIMAL(20,2)
:收集数据的最大秒数(可以是小数)。
使用
NULL
收集的数据为60秒的默认值。
in_interval DECIMAL(20,2)
:数据集合之间休眠的秒数(可以是小数)。
使用
NULL
睡1秒的默认值。
in_start_fresh BOOLEAN
:是否在跟踪之前重置所有Performance Schema数据。
in_auto_setup BOOLEAN
:是否禁用所有其他线程并启用所有仪器和消费者。
这也会在运行结束时重置设置。
in_debug BOOLEAN
:是否
file:lineno
在图表中
包含
信息。
MySQL的> CALL sys.ps_trace_thread(25, CONCAT('/tmp/stack-', REPLACE(NOW(), ' ', '-'), '.dot'), NULL, NULL, TRUE, TRUE, TRUE);
+ ------------------- +
| 摘要|
+ ------------------- +
| 禁用1个线程|
+ ------------------- +
1排(0.00秒)
+ --------------------------------------------- +
| 信息|
+ --------------------------------------------- +
| 从THREAD_ID = 25开始的数据收集
+ --------------------------------------------- +
1排(0.03秒)
+ ------------------------------------------------- ---------- +
| 信息|
+ ------------------------------------------------- ---------- +
| 堆栈跟踪写入/tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ---------- +
1排(60.07秒)
+ ------------------------------------------------- ------------------ +
| 转换为PDF |
+ ------------------------------------------------- ------------------ +
| dot -Tpdf -o /tmp/stack_25.pdf /tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ------------------ +
1排(60.07秒)
+ ------------------------------------------------- ------------------ +
| 转换为PNG |
+ ------------------------------------------------- ------------------ +
| dot -Tpng -o /tmp/stack_25.png /tmp/stack-2014-02-16-21:18:41.dot |
+ ------------------------------------------------- ------------------ +
1排(60.07秒)
+ ------------------ +
| 摘要|
+ ------------------ +
| 启用1个线程|
+ ------------------ +
1排(60.32秒)
创建服务器上运行的语句的报告。 视图基于总体和/或delta活动计算。
此过程通过
sql_log_bin
操作系统变量
的会话值来禁用其执行期间的二进制日志记录
。
这是一个受限制的操作,因此该过程需要足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
in_action ENUM('snapshot', 'overall', 'delta',
'create_tmp', 'create_table', 'save',
'cleanup')
:要采取的行动。
允许这些值:
snapshot
:存储快照。
默认设置是创建Performance Schema
events_statements_summary_by_digest
表
的当前内容的快照
。
通过设置
in_table
,可以覆盖它以复制指定表的内容。
快照存储在
sys
架构
tmp_digests
临时表中。
overall
:根据指定的表的内容生成分析
in_table
。
对于整体分析,
in_table
可以
NOW()
使用全新的快照。
这会覆盖现有快照。
使用
NULL
了
in_table
使用现有的快照。
如果
in_table
是
NULL
且不存在快照,则创建新快照。
该
in_views
参数和
statement_performance_analyzer.limit
配置选项会影响这个过程的操作。
delta
:生成增量分析。
在由指定的引用表
in_table
和必须存在的快照
之间计算增量
。
此操作使用
sys
架构
tmp_digests_delta
临时表。
该
in_views
参数和
statement_performance_analyzer.limit
配置选项会影响这个过程的操作。
create_table
:创建适合存储快照以供以后使用的常规表(例如,用于计算增量)。
create_tmp
:创建适合存储快照以供以后使用的临时表(例如,用于计算增量)。
save
:将快照保存在指定的表中
in_table
。
该表必须存在且具有正确的结构。
如果不存在快照,则会创建新快照。
cleanup
:删除用于快照和增量的临时表。
in_table VARCHAR(129)
:用于参数指定的某些操作的表
in_action
参数。
使用格式
db_name.tbl_name
或
tbl_name
不使用任何反引号(
`
)标识符引用字符。
.
数据库和表名称不支持
Periods(
)。
in_table
各
in_action
值
的含义
在各个
in_action
值描述中
详细
说明。
in_views SET
('with_runtimes_in_95th_percentile', 'analysis',
'with_errors_or_warnings', 'with_full_table_scans',
'with_sorting', 'with_temp_tables', 'custom')
:要包含哪些视图。
此参数是一个
SET
值,因此它可以包含多个视图名称,以逗号分隔。
默认设置是包括除外的所有视图
custom
。
允许以下值:
with_runtimes_in_95th_percentile
:使用
statements_with_runtimes_in_95th_percentile
视图。
analysis
:使用
statement_analysis
视图。
with_errors_or_warnings
:使用
statements_with_errors_or_warnings
视图。
with_full_table_scans
:使用
statements_with_full_table_scans
视图。
with_sorting
:使用
statements_with_sorting
视图。
with_temp_tables
:使用
statements_with_temp_tables
视图。
custom
:使用自定义视图。
必须使用
statement_performance_analyzer.view
配置选项
指定此视图
以命名查询或现有视图。
statement_performance_analyzer()
可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见
第27.4.2.1节“sys_config表”
):
debug
,
@sys.debug
如果是此选项
ON
,则生成调试输出。
默认是
OFF
。
statement_performance_analyzer.limit
,
@sys.statement_performance_analyzer.limit
对于没有内置限制的视图,要返回的最大行数。 默认值为100。
statement_performance_analyzer.view
,
@sys.statement_performance_analyzer.view
要使用的自定义查询或视图。
如果选项值包含空格,则将其解释为查询。
否则,它必须是查询Performance Schema
events_statements_summary_by_digest
表
的现有视图的名称
。
LIMIT
如果
statement_performance_analyzer.limit
配置选项大于0
,则查询或视图定义中
不能有任何
子句。
如果指定视图,请使用与
in_table
参数
相同的格式
。
默认为
NULL
(未定义自定义视图)。
要创建一个报告,其中包含自上次截断以来的第95个百分点
events_statements_summary_by_digest
以及具有一分钟增量周期的查询:
创建临时表以存储初始快照。
创建初始快照。
将初始快照保存在临时表中。
等一分钟。
创建新快照。
根据新快照执行分析。
根据初始快照和新快照之间的增量执行分析。
MySQL的>CALL sys.statement_performance_analyzer('create_tmp', 'mydb.tmp_digests_ini', NULL);
查询正常,0行受影响(0.08秒) MySQL的>CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.02秒) MySQL的>CALL sys.statement_performance_analyzer('save', 'mydb.tmp_digests_ini', NULL);
查询正常,0行受影响(0.00秒) MySQL的>DO SLEEP(60);
查询OK,0行受影响(1分0.00秒) MySQL的>CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.02秒) MySQL的>CALL sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile');
+ ----------------------------------------- + | 下一个输出| + ----------------------------------------- + | 运行时查询百分之九十五 + ----------------------------------------- + 1排(0.05秒) ... MySQL的>CALL sys.statement_performance_analyzer('delta', 'mydb.tmp_digests_ini', 'with_runtimes_in_95th_percentile');
+ ----------------------------------------- + | 下一个输出| + ----------------------------------------- + | 运行时查询百分之九十五 + ----------------------------------------- + 1排(0.03秒) ...
使用全表扫描创建第95百分位查询和前10个查询的总体报告:
MySQL的>CALL sys.statement_performance_analyzer('snapshot', NULL, NULL);
查询OK,0行受影响(0.01秒) MySQL的>SET @sys.statement_performance_analyzer.limit = 10;
查询正常,0行受影响(0.00秒) MySQL的>CALL sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile,with_full_table_scans');
+ ----------------------------------------- + | 下一个输出| + ----------------------------------------- + | 运行时查询百分之九十五 + ----------------------------------------- + 1排(0.01秒) ... + ------------------------------- + | 下一个输出| + ------------------------------- + | 全表扫描的前10个查询| + ------------------------------- + 1排(0.09秒) ...
使用自定义视图显示按总执行时间排序的前10个查询,使用 Linux中 的 watch 命令 每分钟刷新视图 :
MySQL的>CREATE OR REPLACE VIEW mydb.my_statements AS
SELECT sys.format_statement(DIGEST_TEXT) AS query,
SCHEMA_NAME AS db,
COUNT_STAR AS exec_count,
sys.format_time(SUM_TIMER_WAIT) AS total_latency,
sys.format_time(AVG_TIMER_WAIT) AS avg_latency,
ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg,
ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg,
ROUND(IFNULL(SUM_ROWS_AFFECTED / NULLIF(COUNT_STAR, 0), 0)) AS rows_affected_avg,
DIGEST AS digest
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC;
查询正常,0行受影响(0.10秒) MySQL的>CALL sys.statement_performance_analyzer('create_table', 'mydb.digests_prev', NULL);
查询正常,0行受影响(0.10秒) 壳>watch -n 60 "mysql sys --table -e \"
>SET @sys.statement_performance_analyzer.view = 'mydb.my_statements';
>SET @sys.statement_performance_analyzer.limit = 10;
>CALL statement_performance_analyzer('snapshot', NULL, NULL);
>CALL statement_performance_analyzer('delta', 'mydb.digests_prev', 'custom');
>CALL statement_performance_analyzer('save', 'mydb.digests_prev', NULL);
>\""
每60.0s:mysql sys --table -e“... 2014年12月22日10:58:51 + ---------------------------------- + | 下一个输出| + ---------------------------------- + | 使用自定义视图排名前10的查询| + ---------------------------------- + + ------------------- ------- + ------------ + -------- + ------- + ------------- + --------------- + ------------ ------- + ------------------- + ---------------------- ------------ + | 查询| db | exec_count | total_latency | avg_latency | rows_sent_avg | rows_examined_avg | rows_affected_avg | 消化| + ------------------- ------- + ------------ + -------- + ------- + ------------- + --------------- + ------------ ------- + ------------------- + ---------------------- ------------ + ...
测试给定表是作为常规表,
TEMPORARY
表还是视图存在。
该过程在
OUT
参数中
返回表类型
。
如果存在具有给定名称的临时表和永久表,
TEMPORARY
则返回
该表
。
in_db VARCHAR(64)
:要检查表存在的数据库的名称。
in_table VARCHAR(64)
:检查存在的表的名称。
out_exists ENUM('', 'BASE TABLE', 'VIEW',
'TEMPORARY')
:返回值。
这是一个
OUT
参数,因此它必须是可以存储表类型的变量。
过程返回时,变量具有以下值之一以指示表是否存在:
''
:表名不作为基表,
TEMPORARY
表或视图存在。
BASE TABLE
:表名作为基(永久)表存在。
VIEW
:表名作为视图存在。
TEMPORARY
:表名作为
TEMPORARY
表
存在
。
MySQL的>CREATE DATABASE db1;
查询OK,1行受影响(0.01秒) MySQL的>USE db1;
数据库已更改 MySQL的>CREATE TABLE t1 (id INT PRIMARY KEY);
查询正常,0行受影响(0.03秒) MySQL的>CREATE TABLE t2 (id INT PRIMARY KEY);
查询OK,0行受影响(0.20秒) MySQL的>CREATE view v_t1 AS SELECT * FROM t1;
查询OK,0行受影响(0.02秒) MySQL的>CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
查询正常,0行受影响(0.00秒) MySQL的>CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
查询OK,0行受影响(0.01秒) + ----------- + | @exists | + ----------- + | TEMPORARY | + ----------- + 1排(0.00秒) MySQL的>CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
查询OK,0行受影响(0.02秒) + ------------ + | @exists | + ------------ + | 基础表| + ------------ + 1排(0.00秒) MySQL的>CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
查询OK,0行受影响(0.02秒) + --------- + | @exists | + --------- + | 查看| + --------- + 1排(0.00秒) MySQL的>CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
查询正常,0行受影响(0.00秒) + --------- + | @exists | + --------- + | | + --------- + 1排(0.00秒)
以下部分描述了
sys
模式存储函数。
给定文件路径名,返回表示模式名称的路径组件。
此函数假定文件名位于架构目录中。
因此,它不适用于使用自己的
DATA_DIRECTORY
表选项
定义的分区或表
。
从包含文件路径名的性能架构中提取文件I / O信息时,此功能非常有用。 它提供了一种显示模式名称的便捷方式,可以比完整路径名称更容易理解,并且可以在对象模式名称的连接中使用。
MySQL的> SELECT sys.extract_schema_from_file_name('/usr/local/mysql/data/world/City.ibd');
+ ------------------------------------------------- -------------------------- +
| sys.extract_schema_from_file_name('/ usr / local / mysql / data / world / City.ibd')|
+ ------------------------------------------------- -------------------------- +
| 世界|
+ ------------------------------------------------- -------------------------- +
给定文件路径名,返回表示表名的路径组件。
从包含文件路径名的性能架构中提取文件I / O信息时,此功能非常有用。 它提供了一种显示表名的便捷方式,可以比完整路径名更容易理解,也可以用于对象表名的连接。
MySQL的> SELECT sys.extract_table_from_file_name('/usr/local/mysql/data/world/City.ibd');
+ ------------------------------------------------- ------------------------- +
| sys.extract_table_from_file_name('/ usr / local / mysql / data / world / City.ibd')|
+ ------------------------------------------------- ------------------------- +
| 城市|
+ ------------------------------------------------- ------------------------- +
自MySQL 8.0.16起,
format_bytes()
不推荐使用,将在未来的MySQL版本中删除。
应该迁移使用它的应用程序以使用内置
FORMAT_BYTES()
函数。
请参见
第12.22节“性能模式函数”
给定字节计数,将其转换为人类可读的格式并返回由值和单位指示符组成的字符串。
取决于值的大小,所述单元的部分是
bytes
,
KiB
(kibibytes),
MiB
(mebibytes),
GiB
(gibibytes),
TiB
(tebibytes),或
PiB
(pebibytes)。
MySQL的> SELECT sys.format_bytes(512), sys.format_bytes(18446644073709551615);
+ ----------------------- + ------------------------- --------------- +
| sys.format_bytes(512)| sys.format_bytes(18446644073709551615)|
+ ----------------------- + ------------------------- --------------- +
| 512字节| 16383.91 PiB |
+ ----------------------- + ------------------------- --------------- +
给定路径名,在替换与以下系统变量的值匹配的子路径后,按顺序返回已修改的路径名:
DATADIR TMPDIR slave_load_tmpdir innodb_data_home_dir innodb_log_group_home_dir innodb_undo_directory BASEDIR
与系统变量值匹配的值将
sysvar
替换为字符串
。
@@GLOBAL.
sysvar
MySQL的> SELECT sys.format_path('/usr/local/mysql/data/world/City.ibd');
+ ------------------------------------------------- -------- +
| sys.format_path('/ usr / local / mysql / data / world / City.ibd')|
+ ------------------------------------------------- -------- +
| /usr/local/mysql/data/world/City.ibd |
+ ------------------------------------------------- -------- +
给定一个字符串(通常表示一个SQL语句),将其减少到
statement_truncate_len
配置选项
给定的长度
,并返回结果。
如果字符串短于,则不会发生截断
statement_truncate_len
。
否则,字符串的中间部分将由省略号(
...
)
替换
。
此函数对于将从Performance Schema表中检索的可能冗长的语句格式化为已知的固定最大长度非常有用。
format_statement()
可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见
第27.4.2.1节“sys_config表”
):
statement_truncate_len
,
@sys.statement_truncate_len
format_statement()
函数
返回的语句的最大长度
。
较长的语句被截断为此长度。
默认值为64。
默认情况下,
format_statement()
截断语句不超过64个字符。
设置
@sys.statement_truncate_len
更改当前会话的截断长度:
mysql>SET @stmt = 'SELECT variable, value, set_time, set_by FROM sys_config';
mysql>SELECT sys.format_statement(@stmt);
+ ------------------------------------------------- --------- + | sys.format_statement(@stmt)| + ------------------------------------------------- --------- + | SELECT变量,value,set_time,set_by FROM sys_config | + ------------------------------------------------- --------- + mysql>SET @sys.statement_truncate_len = 32;
mysql>SELECT sys.format_statement(@stmt);
+ ----------------------------------- + | sys.format_statement(@stmt)| + ----------------------------------- + | SELECT variabl ... ROM sys_config | + ----------------------------------- +
自MySQL 8.0.16起,
format_time()
不推荐使用,将在未来的MySQL版本中删除。
应该迁移使用它的应用程序以使用内置
FORMAT_PICO_TIME()
函数。
请参见
第12.22节“性能模式函数”
给定性能模式延迟或等待时间(以皮秒为单位),将其转换为人类可读格式并返回由值和单位指示符组成的字符串。
根据值的大小,单位部分是
ps
(纳秒),
ns
(纳秒),
us
(微秒),
ms
(毫秒),
s
(秒),
m
(分钟),
h
(小时),
d
(天)或
w
(周)。
MySQL的> SELECT sys.format_time(3501), sys.format_time(188732396662000);
+ ----------------------- + ------------------------- --------- +
| sys.format_time(3501)| sys.format_time(188732396662000)|
+ ----------------------- + ------------------------- --------- +
| 3.50 ns | 3.15米|
+ ----------------------- + ------------------------- --------- +
将值添加到以逗号分隔的值列表中并返回结果。
该功能并
list_drop()
可以用于操纵系统变量,如的值是有用的
sql_mode
,并
optimizer_switch
认为采取逗号分隔的值的列表。
MySQL的>SELECT @@sql_mode;
+ ---------------------------------------- + | @@ sql_mode | + ---------------------------------------- + | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES | + ---------------------------------------- + mysql>SET @@sql_mode = sys.list_add(@@sql_mode, 'NO_ENGINE_SUBSTITUTION');
mysql>SELECT @@sql_mode;
+ ------------------------------------------------- -------------- + | @@ sql_mode | + ------------------------------------------------- -------------- + | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | + ------------------------------------------------- -------------- + mysql>SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
mysql>SELECT @@sql_mode;
+ -------------------------------------------- + | @@ sql_mode | + -------------------------------------------- + | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | + -------------------------------------------- +
返回
YES
或
NO
指示是否启用了给定的Performance Schema使用者,或者
NULL
该参数是否是有效的使用者名称。
此功能考虑了使用者层次结构,因此除非启用了依赖于所有依赖项的所有使用者,否则不会将使用者视为已启用。 有关使用者层次结构的信息,请参见 第26.4.7节“按使用者预过滤” 。
MySQL的> SELECT sys.ps_is_consumer_enabled('thread_instrumentation');
+ ------------------------------------------------- ----- +
| sys.ps_is_consumer_enabled('thread_instrumentation')|
+ ------------------------------------------------- ----- +
| 是的|
+ ------------------------------------------------- ----- +
返回
YES
或
NO
指示默认情况下是否启用给定的Performance Schema工具。
MySQL的>SELECT sys.ps_is_instrument_default_enabled('memory/innodb/row_log_buf');
+ ------------------------------------------------- ------------------ + | sys.ps_is_instrument_default_enabled('memory / innodb / row_log_buf')| + ------------------------------------------------- ------------------ + | 没有| + ------------------------------------------------- ------------------ + MySQL的>SELECT sys.ps_is_instrument_default_enabled('statement/sql/alter_user');
+ ------------------------------------------------- ----------------- + | sys.ps_is_instrument_default_enabled('statement / sql / alter_user')| + ------------------------------------------------- ----------------- + | 是的| + ------------------------------------------------- ----------------- +
返回
YES
或
NO
指示默认情况下给定的Performance Schema工具是否定时。
MySQL的>SELECT sys.ps_is_instrument_default_timed('memory/innodb/row_log_buf');
+ ------------------------------------------------- ---------------- + | sys.ps_is_instrument_default_timed('memory / innodb / row_log_buf')| + ------------------------------------------------- ---------------- + | 没有| + ------------------------------------------------- ---------------- + MySQL的>SELECT sys.ps_is_instrument_default_timed('statement/sql/alter_user');
+ ------------------------------------------------- --------------- + | sys.ps_is_instrument_default_timed('statement / sql / alter_user')| + ------------------------------------------------- --------------- + | 是的| + ------------------------------------------------- --------------- +
返回
YES
或
NO
指示是否启用了给定连接ID的Performance Schema检测,
UNKNOWN
ID是否未知,或者
NULL
ID是否为
NULL
。
in_connection_id BIGINT UNSIGNED
:连接ID。
这是
PROCESSLIST_ID
Performance Schema
threads
表的
Id
列
或
SHOW PROCESSLIST
输出
列中
给出的类型的值
。
MySQL的>SELECT sys.ps_is_thread_instrumented(43);
+ ----------------------------------- + | sys.ps_is_thread_instrumented(43)| + ----------------------------------- + | 未知| + ----------------------------------- + MySQL的>SELECT sys.ps_is_thread_instrumented(CONNECTION_ID());
+ ------------------------------------------------ + | sys.ps_is_thread_instrumented(CONNECTION_ID())| + ------------------------------------------------ + | 是的| + ------------------------------------------------ +
给定Performance Schema线程ID,返回
与线程关联
的
帐户。
user_name
@host_name
in_thread_id BIGINT UNSIGNED
:要为其返回帐户的线程ID。
该值应与
THREAD_ID
某些Performance Schema
threads
表行
中的
列
匹配
。
MySQL的> SELECT sys.ps_thread_account(sys.ps_thread_id(CONNECTION_ID()));
+ ------------------------------------------------- --------- +
| sys.ps_thread_account(sys.ps_thread_id(CONNECTION_ID()))|
+ ------------------------------------------------- --------- +
| root @ localhost |
+ ------------------------------------------------- --------- +
自MySQL 8.0.16起,
ps_thread_id()
不推荐使用,将在未来的MySQL版本中删除。
应该迁移使用它的应用程序以使用内置
函数
PS_THREAD_ID()
和
PS_CURRENT_THREAD_ID()
函数。
请参见
第12.22节“性能模式函数”
返回分配给给定连接ID的Performance Schema线程ID,如果连接ID为,则返回当前连接的线程ID
NULL
。
in_connection_id BIGINT UNSIGNED
:要为其返回线程ID的连接的ID。
这是
PROCESSLIST_ID
Performance Schema
threads
表的
Id
列
或
SHOW PROCESSLIST
输出
列中
给出的类型的值
。
返回给定线程ID的Performance Schema中所有语句,阶段和事件的JSON格式堆栈。
in_thread_id BIGINT
:要跟踪的线程的ID。
该值应与
THREAD_ID
某些Performance Schema
threads
表行
中的
列
匹配
。
in_verbose BOOLEAN
:是否
file:lineno
在事件中
包含
信息。
MySQL的> SELECT sys.ps_thread_stack(37, FALSE) AS thread_stack\G
*************************** 1。排******************** *******
thread_stack:{“rankdir”:“LR”,“nodesep”:“0.10”,
“stack_created”:“2014-02-19 13:39:03”,“mysql_version”:“8.0.2-dmr-debug-log”,
“mysql_user”:“root @ localhost”,“events”:[{“nesting_event_id”:“0”,
“event_id”:“10”,“timer_wait”:256.35,“event_info”:“sql / select”,
“wait_info”:“选择@@ version_comment limit 1 \ nerrors:0 \ nwarnings:0 \ nlock time:
...
返回包含有关给定线程的信息的JSON对象。
该信息包括当前事务及其已执行的语句,这些语句是从性能模式
events_transactions_current
和
events_statements_history
表中
派生的
。
(必须启用这些表的使用者才能获取JSON对象中的完整数据。)
如果输出超过截断长度(默认为65535),则返回JSON错误对象,例如:
{“error”:“Trx信息被截断:第6行被GROUP_CONCAT()删除”}
对于在函数执行期间引发的其他警告和异常,将返回类似的错误对象。
in_thread_id BIGINT UNSIGNED
:要为其返回事务信息的线程ID。
该值应与
THREAD_ID
某些Performance Schema
threads
表行
中的
列
匹配
。
ps_thread_trx_info()
可以使用以下配置选项或其相应的用户定义变量来修改操作(请参见
第27.4.2.1节“sys_config表”
):
ps_thread_trx_info.max_length
,
@sys.ps_thread_trx_info.max_length
输出的最大长度。 默认值为65535。
MySQL的> SELECT sys.ps_thread_trx_info(48)\G
*************************** 1。排******************** *******
sys.ps_thread_trx_info(48):[
{
“时间”:“790.70我们”,
“州”:“委托”,
“模式”:“读写”,
“自动提交”:“不”,
“gtid”:“AUTOMATIC”,
“隔离”:“可重读”,
“statements_executed”:[
{
“sql_text”:“INSERT INTO info VALUES(1,\'foo \')”,
“时间”:“471.02我们”,
“schema”:“trx”,
“rows_examined”:0,
“rows_affected”:1,
“rows_sent”:0,
“tmp_tables”:0,
“tmp_disk_tables”:0,
“sort_rows”:0,
“sort_merge_passes”:0
},
{
“sql_text”:“COMMIT”,
“时间”:“254.42我们”,
“schema”:“trx”,
“rows_examined”:0,
“rows_affected”:0,
“rows_sent”:0,
“tmp_tables”:0,
“tmp_disk_tables”:0,
“sort_rows”:0,
“sort_merge_passes”:0
}
]
},
{
“时间”:“426.20我们”,
“州”:“委托”,
“模式”:“读写”,
“自动提交”:“不”,
“gtid”:“AUTOMATIC”,
“隔离”:“可重读”,
“statements_executed”:[
{
“sql_text”:“INSERT INTO info VALUES(2,\'bar \')”,
“时间”:“107.33我们”,
“schema”:“trx”,
“rows_examined”:0,
“rows_affected”:1,
“rows_sent”:0,
“tmp_tables”:0,
“tmp_disk_tables”:0,
“sort_rows”:0,
“sort_merge_passes”:0
},
{
“sql_text”:“COMMIT”,
“时间”:“213.23我们”,
“schema”:“trx”,
“rows_examined”:0,
“rows_affected”:0,
“rows_sent”:0,
“tmp_tables”:0,
“tmp_disk_tables”:0,
“sort_rows”:0,
“sort_merge_passes”:0
}
]
}
]
给定一个字符串参数,此函数生成一个适合包含在SQL语句中的带引号的标识符。
当要用作标识符的值是保留字或包含backtick(
`
)字符
时,这很有用
。
MySQL的>SELECT sys.quote_identifier('plain');
+ ------------------------------- + | sys.quote_identifier('plain')| + ------------------------------- + | `plain` | + ------------------------------- + MySQL的>SELECT sys.quote_identifier('trick`ier');
+ ----------------------------------- + | sys.quote_identifier('trick`ier')| + ----------------------------------- + | `trick``ier` | + ----------------------------------- + MySQL的>SELECT sys.quote_identifier('integer');
+ --------------------------------- + | sys.quote_identifier('integer')| + --------------------------------- + | `integer` | + --------------------------------- +
给定配置选项名称,
如果表中不存在该选项
,则返回表中的选项值
sys_config
或提供的默认值(可能是
NULL
)。
如果
sys_get_config()
返回默认值且该值为
NULL
,则调用者应该能够处理
NULL
给定的配置选项。
按照惯例,
sys_get_config()
首先
调用的例程
检查相应的用户定义变量是否存在且是否为非
NULL
。
如果是这样,例程使用变量值而不读取
sys_config
表。
如果变量不存在或者是
NULL
,则例程从表中读取选项值并将用户定义的变量设置为该值。
有关配置选项与其相应的用户定义变量之间关系的更多信息,请参见
第27.4.2.1节“sys_config表”
。
如果要检查配置选项是否已设置,如果不是,请使用返回值
sys_get_config()
,您可以使用
IFNULL(...)
(请参阅后面的示例)。
但是,这不应该在循环内部完成(例如,对于结果集中的每一行),因为对于仅在第一次迭代中需要赋值的重复调用,使用
IFNULL(...)
期望比使用
IF (...) THEN ... END
IF;
块
明显更慢
(请参阅后面的例子)。
in_variable_name VARCHAR(128)
:要为其返回值的配置选项的名称。
in_default_value VARCHAR(128)
:如果在
sys_config
表中
找不到配置选项,则返回默认值
。
从
sys_config
表中
获取配置值,如果
表中没有该选项,则返回默认值128:
MySQL的> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value;
+ ------- +
| 价值|
+ ------- +
| 64 |
+ ------- +
单行示例:检查选项是否已设置;
如果不是,则分配
IFNULL(...)
结果(使用
sys_config
表中
的值
):
MySQL的>SET @sys.statement_truncate_len =
IFNULL(@sys.statement_truncate_len,
sys.sys_get_config('statement_truncate_len', 64));
IF (...) THEN ... END IF;
阻止示例:检查选项是否已设置;
如果没有,请从
sys_config
表中
分配值
:
IF(@ sys.statement_truncate_len IS NULL)那么 SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len',64); 万一;