MySQL5.7新特性之sys schema视图应用

sys schema视图摘要
    sys schema视图中包含了很多以各种方式总结的Performance Schema表的视图,这些视图大多数都是成对出现,使得每组视图中的一个成员具有与另一个成员相同的名称,加上一个X$前缀。例如host_summary_by_file_io视图汇总按照主机分组的文件I/O延迟。没有X$前缀的视图提供了更加友好且易阅读的数据,X$前缀的视图提供了原始数据,更多用于需要对数据进行处理的其他工具。
视图按照展示信息可以分为如下几类。
主机相关信息:以host_summary开头的视图,主要汇总了IO延迟的信息,从主机、文件事件类型、语句类型等角度展示文件IO的信息。
InnoDB相关信息:以innodb开头的视图,汇总了innodb buffer page信息和事务等待InnoDB锁信息。
IO使用情况:以io开头的视图,总结了io使用者的信息,包括等待I/O的情况、I/O使用量情况,从各个角度分组展示。
内存使用情况:以memory开头的视图,从主机、线程、用户、事件角度展示内存使用情况。
连接与会话信息:其中,processlist和session相关的视图,总结了会话相关信息。
表相关信息:以schema_table开头的视图,从全表扫描、InnoDB缓冲池等方面展示了表统计信息。
索引信息:其中包含index的视图,统计了索引使用情况,以及重复索引和未使用的索引情况。
语句相关信息:以statement开头的视图,统计的规范化后的语句使用情况,包括错误数、警告数、执行全表扫描的、使用临时表、执行排序等信息。
用户的相关信息以user开头的视图,统计了用户使用的文件IO、执行的语句统计信息等。
等待事件相关信息:以wait开头的视图,从主机和事件角度展示等待类事件的延迟情况。
sys schema重点视图的应用场景
查看表的访问量

点击(此处)折叠或打开

  1. mysql> select table_schema,table_name,io_read_requests+io_write_requests as total from schema_table_statistics;
  2. +--------------+--------------------------------+-------+
  3. | table_schema | table_name        | total |
  4. +--------------+--------------------------------+-------+
  5. | sys          | sys_config        | 19 |
  6. | dedecms      | dede_member_group | 13 |
  7. | dedecms      | dede_scores       | 12 |
  8. | dedecms      | dede_ratings      | 12 |
  9. | dedecms      | dede_pwd_tmp      | 12 |
  10. | dedecms      | dede_purview      | 12 |
  11. | dedecms      | dede_plus         | 12 |
    我们可以监控每张表访问量的变化情况,或者监控某个库的访问量变化等。如果某个库、某个表发生变化,DBA能够及时知道每个表的访问情况。
冗余索引与未使用的索引检查

点击(此处)折叠或打开

  1. mysql> select * from sys.schema_redundant_indexes \G
  2. *************************** 1. row ***************************
  3.               table_schema: dedecms
  4.                 table_name: dede_member_group
  5.       redundant_index_name: id
  6.    redundant_index_columns: id
  7. redundant_index_non_unique: 1
  8.        dominant_index_name: PRIMARY
  9.     dominant_index_columns: id
  10.  dominant_index_non_unique: 0
  11.             subpart_exists: 0
  12.             sql_drop_index: ALTER TABLE `dedecms`.`dede_member_group` DROP INDEX `id`
    针对冗余索引,DBA可以及时清理掉,减少磁盘的压力,提高数据库性能。
表自增ID监控
   

点击(此处)折叠或打开

  1. mysql> select * from sys.schema_auto_increment_columns \G
  2. *************************** 1. row ***************************
  3.         table_schema: dedecms
  4.           table_name: dede_sys_enum
  5.          column_name: id
  6.            data_type: smallint
  7.          column_type: smallint(5) unsigned
  8.            is_signed: 0
  9.          is_unsigned: 1
  10.            max_value: 65535
  11.       auto_increment: 20040
  12. auto_increment_ratio: 0.3058
  13. *************************** 2. row ***************************
  14.         table_schema: dedecms
  15.           table_name: dede_member_tj
  16.          column_name: mid
  17.            data_type: mediumint
  18.          column_type: mediumint(8)
  19.            is_signed: 1
  20.          is_unsigned: 0
  21.            max_value: 8388607
  22.       auto_increment: 247352
  23. auto_increment_ratio: 0.0295
    展示了表的自增量列名、数据类型、当前使用量、最大值及使用率情况,极大地方便了DBA快速了解数据库自增量的使用情况。
监控全表扫描的SQL语句

点击(此处)折叠或打开

  1. mysql> select * from sys.statements_with_full_table_scans \G
  2. *************************** 1. row ***************************
  3.                    query: SELECT * FROM `sys_config` LIMIT ?, ...
  4.                       db: sys
  5.               exec_count: 1
  6.            total_latency: 74.62 ms
  7.      no_index_used_count: 1
  8. no_good_index_used_count: 0
  9.        no_index_used_pct: 100
  10.                rows_sent: 6
  11.            rows_examined: 6
  12.            rows_sent_avg: 6
  13.        rows_examined_avg: 6
  14.               first_seen: 2018-03-21 08:52:47
  15.                last_seen: 2018-03-21 08:52:47
  16.                   digest: befd5e5f4382f78675bbc86d495dfac2
  17. *************************** 2. row ***************************
  18.                    query: SELECT `performance_schema` . ... name` . `SUM_TIMER_WAIT` DESC
  19.                       db: sys
  20.               exec_count: 2
  21.            total_latency: 644.19 ms
  22.      no_index_used_count: 2
  23. no_good_index_used_count: 0
  24.        no_index_used_pct: 100
  25.                rows_sent: 155
  26.            rows_examined: 1481
  27.            rows_sent_avg: 78
  28.        rows_examined_avg: 741
  29.               first_seen: 2018-03-22 03:27:54
  30.                last_seen: 2018-03-22 03:44:09
  31.                   digest: 6f58edd9cee71845f592cf5347f8ecd7
  32. *************************** 3. row ***************************
  33.                    query: SELECT * FROM `INNODB_SYS_TABLESPACES
从查询结果中可以看到这些语句执行的次数,其中没有使用索引的次数。

点击(此处)折叠或打开

  1. mysql> select file,avg_read+avg_write as avg_io from sys.io_global_by_file_by_bytes order by avg_io desc limit 10;
  2. +-------------------------------------------------------------+--------+
  3. | file                                                        | avg_io |
  4. +-------------------------------------------------------------+--------+
  5. | @@datadir/mysql/db.MYD                                      | 1464   |
  6. | @@datadir/sys/io_global_by_wait_by_latency.frm              | 1015   |
  7. | @@datadir/sys/user_summary.frm                              | 958    |
  8. | @@datadir/sys/x@0024schema_table_statistics_with_buffer.frm | 955    |
  9. | @@datadir/mysql/tables_priv.MYD                             | 947    |
  10. | @@datadir/sys/x@0024io_global_by_wait_by_bytes.frm          | 943    |
  11. | @@datadir/sys/host_summary_by_statement_type.frm            | 911    |
  12. | @@datadir/sys/user_summary_by_statement_type.frm            | 904    |
  13. | @@datadir/sys/x@0024user_summary.frm                        | 898    |
  14. | @@datadir/sys/io_by_thread_by_latency.frm                   | 897    |
  15. +-------------------------------------------------------------+--------+
    DBA可以通过该查询来大致了解磁盘IO消耗在哪里,哪些文件消耗的最多。
操作风险
    虽然这些视图方便了DBA对数据库的监控,但建议不要大量在线上部署通过查询sys或performance_schema中的表或者视图来完成一些监控,因为查询这些信息时,MySQL会消耗大量的资源去收集相关信息,严重的可能会导致业务请求被阻塞,从而引起故障。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30135314/viewspace-2152109/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30135314/viewspace-2152109/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值