MySQL系统SYS数据库——各类统计视图整理
查看表的统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序查看不活跃的索引(没有任何事件发生的索引,这表示该索引从未使用过),默认情况下按照schema名称和表名进行排序查看表的统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序查看不活跃的索引(没有任何事件发生的
(1)按 host 分组统计视图
host_summary_by_file_io
按主机(与用户账号组成中的host值相同)分组统计的文件I/O的IO总数和IO延迟时间,默认按照总I/O等待时间降序排序。
SELECT * FROM host_summary_by_file_io;
host:客户端连接的主机名或IP。在Performance Schema表中的HOST列为NULL的行在这里假定为后台线程,且在该视图host列显示为background
ios:文件I/O事件总次数,即可以认为就是io总数
io_latency:文件I/O事件的总等待时间(执行时间)
host_summary
按照主机分组统计的语句延迟(执行)时间、次数、相关的文件I/O延迟、连接数和内存分配大小等摘要信息
SELECT * FROM host_summary;
host:客户端连接的主机名或IP。在Performance Schema表中的HOST列为NULL的行在这里假定为后台线程,且在该视图host列显示为background
statements:语句总执行次数
statement_latency:语句总延迟时间(执行时间)
statement_avg_latency:语句的平均延迟时间(执行时间)
table_scans:语句的表扫描总次数
file_ios:文件I/O事件总次数
file_io_latency:文件I/O事件总延迟时间(执行时间)
current_connections:当前连接数
total_connections:总历史连接数
unique_users:不同(去重)用户数量
current_memory:当前内存使用量
total_memory_allocated:总的内存分配量
host_summary_by_statement_latency
按照主机和事件名称分组的语句事件总次数、总执行时间、最大执行时间、锁时间以及数据行相关的统计信息,默认按照总延迟(执行)时间降序排序
SELECT * FROM host_summary_by_statement_latency;
host:客户端连接的主机名或IP。在Performance Schema表中的HOST列为NULL的行在这里假定为后台线程,且在该视图host列显示为background
total:语句总执行次数
total_latency:语句总延迟(执行)时间
max_latency:语句单个最大延迟(执行)时间
lock_latency:语句总锁延迟(执行)时间
rows_sent:语句返回给客户端的总数据行数
rows_examined:语句从存储引擎层读取的总数据行数
rows_affected:语句执行时受影响(DML会返回数据发生变更的受影响行数,select等不会产生数据变更的语句执行时不会有受影响行数返回)的总数据行数
full_scans:语句全表扫描总次数
(2)按 user 分组统计视图
user_summary
该视图可以查看活跃连接中按用户分组的总执行时间、平均执行时间、总的IOS、总的内存使用量、表扫描数量等统计信息,默认按照总延迟时间(执行时间)降序排序。
user:客户端访问用户名。如果在performance_schema表中user列为NULL,则假定为后台线程,该字段为’background’,如果为前台线程,则该字段对应具体的用户名
statements:对应用户执行的语句总数量
statement_latency:对应用户执行的语句总延迟时间(执行时间)
statement_avg_latency:对应用户执行的语句中,平均每个语句的延迟时间(执行时间)(SUM(stmt.total_latency/SUM(stmt.total))
table_scans:对应用户执行的语句发生表扫描总次数
file_ios:对应用户执行的语句产生的文件I/O事件总次数
file_io_latency:对应用户执行的语句产生的文件I/O事件的总延迟时间(执行时间)
current_connections:对应用户的当前连接数
total_connections:对应用户的历史总连接数
unique_hosts:对应用户来自不同主机(针对主机名去重)连接的数量
current_memory:对应用户的连接当前已使用的内存分配量
total_memory_allocated:对应用户的连接的历史内存分配量
user_summary_by_file_io
按照用户分组的文件I/O延迟时间、IOS统计信息,默认按照总文件I/O时间延迟时间(执行时间)降序排序
user:客户端用户名。如果在performance_schema表中user列为NULL,则假定为后台线程,该字段为’background’,如果为前台线程,则该字段对应具体的用户名
ios:对应用户的文件I/O事件总次数
io_latency:对应用户的文件I/O事件的总延迟时间(执行时间)
user_summary_by_statement_latency
按照用户分组的语句统计信息,默认情况下按照语句总延迟时间(执行时间)降序排序
user:客户端用户名。如果在performance_schema表中user列为NULL,则假定为后台线程,该字段为’background’,如果为前台线程,则该字段对应具体的用户名
total:对应用户执行的语句总数量
total_latency:对应用户执行的语句总延迟时间(执行时间)
max_latency:对应用户执行的语句单次最大延迟时间(执行时间)
lock_latency:对应用户执行的语句锁等待的总时间
rows_sent:对应用户执行的语句返回给客户端的总数据行数
rows_examined:对应用户执行的语句从存储引擎读取的总数据行数
rows_affected:对应用户执行的语句影响的总数据行数
full_scans:对应用户执行的语句的全表扫描总次数
user_summary_by_statement_type
按用户和语句事件类型分组的语句统计信息,默认情况下按照用户名和对应语句的总延迟时间(执行时间)降序排序
user:客户端用户名。如果在performance_schema表中user列为NULL,则假定为后台线程,该字段为’background’,如果为前台线程,则该字段对应具体的用户名
statement:语句事件名称的最后一部分字符串,与语句的command类型字符串类似
total:对应用户执行的语句总数量
total_latency:对应用户执行的语句总延迟时间(执行时间)
max_latency:对应用户执行的语句单次最大延迟时间(执行时间)
lock_latency:对应用户执行的语句锁等待的总时间
rows_sent:对应用户执行的语句返回给客户端的总数据行数
rows_examined:对应用户执行的语句从存储引擎读取的总数据行数
rows_affected:对应用户执行的语句影响的总数据行数
full_scans:对应用户执行的语句的全表扫描总次数
(3)语句效率统计视图
schema_tables_with_full_table_scans
查询执行过全扫描访问的表,默认情况下按照表扫描的行数进行降序排序。
object_schema:schema名称
OBJECT_NAME:表名
rows_full_scanned:全表扫描的总数据行数
latency:完整的表扫描操作的总延迟时间(执行时间)
statement_analysis
查看语句汇总统计信息,这些视图模仿MySQL企业版监控的查询分析视图列出语句的聚合统计信息,默认情况下按照总延迟时间(执行时间)降序排序。
query:经过标准化转换的语句字符串,不带x
的
视
图
默
认
长
度
限
制
为
64
字
节
,
带
x
的视图默认长度限制为64字节,带x
的视图默认长度限制为64字节,带x的视图默认长度限制为1024字节
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:语句摘要计算的md5 hash值
first_seen:该语句第一次出现的时间
last_seen:该语句最近一次出现的时间
statements_with_errors_or_warnings
查看产生错误或警告的语句,默认情况下,按照错误数量和警告数量降序排序。
query:经过标准化转换的语句字符串
db:语句对应的默认数据库,如果没有默认数据库,该字段为NULL
exec_count:语句执行的总次数
errors:语句发生的错误总次数
error_pct:语句产生错误的次数与语句总执行次数的百分比
warnings:语句发生的警告总次数
warning_pct:语句产生警告的与语句总执行次数的百分比
first_seen:该语句第一次出现的时间
last_seen:该语句最近一次出现的时间
digest:语句摘要计算的md5 hash值
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:语句摘要计算的md5 hash值
(4)统计信息查询视图
统计信息查询视图主要统计了数据库中表和索引相关的聚合信息
schema_auto_increment_columns
在所有数据库中(排除系统字典库 mysql,sys,INFORMATION_SCHEMA,performance_schema)查找带有自增列的基表及其相关的信息,默认按照自增值使用率和自增列类型最大值进行降序排序。
TABLE_SCHEMA:包含自增值的表的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
索引统计信息,默认按照使用索引执行增删改查操作的总延迟时间(执行时间)降序排序
TABLE_SCHEMA:包含索引的表所在的schema名称
TABLE_NAME:包含索引的表名
INDEX_NAME:索引的名称
rows_selected:使用索引读的总数据行数
select_latency:使用索引读的总延迟时间(执行时间)
rows_inserted:插入索引的总行数
insert_latency:插入索引行的总延迟时间(执行时间)
rows_updated:索引更新的总行数
update_latency:索引更新行的总延迟时间(执行时间)
rows_deleted:从索引中删除的总行数
delete_latency:从索引中删除行的总延迟时间(执行时间)
schema_object_overview
每个schema中包含的表、视图、索引等对象的统计信息,默认按照schema名称和对象类型进行排序
db:schema名称
OBJECT_TYPE:数据库对象类型,有效值为:BASE TABLE,INDEX(index_type),EVENT,FUNCTION,PROCEDURE,TRIGGER,VIEW
count:在每个schema下各个数据库对象的数量
schema_redundant_indexes
查找重复或冗余索引
TABLE_SCHEMA:包含冗余或重复索引的表对应的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:针对重复或冗余索引生成的drop index语句
schema_table_statistics
查看表的统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序
TABLE_SCHEMA:包含TABLE_NAME字段的表所在的schema名称
TABLE_NAME:表名
total_latency:表的I/O事件的总延迟时间(执行时间),针对表增删改查操作
rows_fetched:表读取操作的总数据行数,针对表查询操作
fetch_latency:表select操作的I/O事件的总延迟时间(执行时间),针对表查询操作
rows_inserted:表插入操作的总数据行数,针对表插入操作
insert_latency:表insert操作的I/O事件的延迟时间(执行时间),针对表插入操作
rows_updated:表更新操作的总数据行数,针对表更新操作
update_latency:表更新操作的I/O事件的总延迟时间(执行时间),针对表更新操作
rows_deleted:表删除操作的总数据行数,针对表删除操作
delete_latency:表删除操作的I/O事件的总延迟时间(执行时间),针对表删除操作
io_read_requests:表读取操作总请求次数,针对表.ibd和.frm文件的读I/O操作
io_read:表读操作相关的所有文件读取操作的总字节数,针对表.ibd和.frm文件的读I/O操作
io_read_latency:表读操作相关的所有文件读取操作的总延迟时间(执行时间),针对表.ibd和.frm文件的读I/O操作
io_write_requests:表写操作的总请求次数,针对表.ibd和.frm文件的写I/O操作
io_write:表写操作相关的所有文件写操作的总字节数,针对表.ibd和.frm文件的写I/O操作
io_write_latency:表写操作相关的所有文件写操作的总延迟时间(执行时间),针对表.ibd和.frm文件的写I/O操作
io_misc_requests:表其他各种混杂操作相关的所有文件的I/O请求总次数,针对表.ibd和.frm文件的其他混杂I/O操作
io_misc_latency:表其他各种混杂操作相关的所有文件的I/O请求的总延迟时间(执行时间),针对表.ibd和.frm文件的其他混杂I/O操作
schema_table_statistics_with_buffer
查询表的统计信息,其中还包括InnoDB缓冲池统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序
表相关的统计信息字段的含义与视图schema_table_statistics的字段含义相同,这里省略,详见schema_table_statistics,x$schema_table_statistics 视图解释部分
innodb_buffer_allocated:当前已分配给表的buffer pool总字节数
innodb_buffer_data:当前已分配给表的数据部分使用的buffer pool字节总数
innodb_buffer_free:当前已分配给表的非数据部分使用的buffer pool字节总数(即空闲页所在的字节数,计算公式:innodb_buffer_allocated - innodb_buffer_data)
innodb_buffer_pages:当前已分配给表的buffer pool总页数
innodb_buffer_pages_hashed:当前已分配给表的自适应hash索引页总数
innodb_buffer_pages_old:当前已分配给表的旧页总数(位于LRU列表中的旧块子列表中的页数)
innodb_buffer_rows_cached:buffer pool中为表缓冲的总数据行数
schema_unused_indexes
查看不活跃的索引(没有任何事件发生的索引,这表示该索引从未使用过),默认情况下按照schema名称和表名进行排序
object_schema:schema名称
OBJECT_NAME:表名
INDEX_NAME:未使用的索引名称
(5)会话和锁信息查询视图
以下介绍的视图对象描述了数据库执行的会话信息和锁等待信息,通过这些视图我们可以清晰地知道每个会话正在做什么事情,是否存在锁等待。
innodb_lock_waits
InnoDB当前锁等待信息,默认按照发生锁等待的开始时间升序排序–wait_started字段即innodb_trx表的trx_wait_started字段
wait_started:发生锁等待的开始时间
wait_age:锁已经等待了多久,该值是一个时间格式值
wait_age_secs:锁已经等待了几秒钟,该值是一个整型值,MySQL 5.7.9中新增
locked_table:锁等待的表名称。此列值格式为:schema_name.table_name
locked_index:锁等待的索引名称
locked_type:锁等待的锁类型
waiting_trx_id:锁等待的事务ID
waiting_trx_started:发生锁等待的事务开始时间
waiting_trx_age:发生锁等待的事务总的锁等待时间,该值是一个时间格式
waiting_trx_rows_locked:发生锁等待的事务已经锁定的行数(如果是复杂事务会累计)
waiting_trx_rows_modified:发生锁等待的事务已经修改的行数(如果是复杂事务会累计)
waiting_pid:发生锁等待的事务的processlist_id
waiting_query:发生锁等待的事务SQL语句文本
waiting_lock_id:发生锁等待的锁ID
waiting_lock_mode:发生锁等待的锁模式
processlist
包含所有前台和后台线程的processlist信息,默认按照进程等待时间和最近一个语句执行完成的时间降序排序。
thd_id:内部threqd ID
conn_id:连接ID,即processlist id
user:对于前台线程,该字段值为account名称,对于后台线程,该字段值为后台线程名称
db:线程的默认数据库,如果没有默认数据库,则该字段值为NULL
command:对于前台线程,表示线程正在执行的客户端代码对应的command名称,如果会话处于空闲状态则该字段值为’Sleep ',对于后台超线程,该字段值为NULL
state:表示线程正在做什么:什么事件或状态,与information_schema.processlist表中的state字段值一样
time:表示线程处于当前状态已经持续了多长时间(秒)
current_statement:线程当前正在执行的语句,如果当前没有执行任何语句,该字段值为NULL
详细字段描述见:
https://dev.mysql.com/doc/refman/5.7/en/sys-processlist.html
session
查看当前用户会话的进程列表信息,与processlist&x$processlist视图类似,但是session视图过滤掉了后台线程,只显示前台(用户)线程相关的统计数据
thd_id:内部threqd ID
conn_id:连接ID,即processlist id
user:对于前台线程,该字段值为account名称,对于后台线程,该字段值为后台线程名称
db:线程的默认数据库,如果没有默认数据库,则该字段值为NULL
command:对于前台线程,表示线程正在执行的客户端代码对应的command名称,如果会话处于空闲状态则该字段值为’Sleep ',对于后台超线程,该字段值为NULL
state:表示线程正在做什么:什么事件或状态,与information_schema.processlist表中的state字段值一样
time:表示线程处于当前状态已经持续了多长时间(秒)
current_statement:线程当前正在执行的语句,如果当前没有执行任何语句,该字段值为NULL
详细字段描述见:
https://dev.mysql.com/doc/refman/5.7/en/sys-session.html
schema_table_lock_waits
查看当前连接线程的MDL锁等待信息,显示哪些会话被MDL锁阻塞,是谁阻塞了这些会话。MDL锁的instruments默认没有启用,要使用需要显式开启
object_schema:发生MDL锁等待的schema名称
OBJECT_NAME:MDL锁等待监控对象的名称
waiting_thread_id:正在等待MDL锁的thread ID
waiting_pid:正在等待MDL锁的processlist ID
waiting_account:正在等待MDL锁的线程关联的account名称
waiting_lock_type:被阻塞的线程正在等待的MDL锁类型
https://dev.mysql.com/doc/refman/5.7/en/sys-schema-table-lock-waits.html
更多推荐
所有评论(0)