加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

在 MySQL 5.7 中如何使用 sys schema 的视图

发布时间:2023-10-12 13:44:04 所属栏目:MySql教程 来源:
导读:小编给大家分享一下MySQL5.7中sys schema视图怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!sys schema视图中包含了很多以

小编给大家分享一下MySQL5.7中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重点视图的应用场景

查看表的访问量

点击(此处)折叠或打开

mysql> select table_schema,table_name,io_read_requests+io_write_requests as total from schema_table_statistics;

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

| table_schema | table_name    | total |

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

| sys     | sys_config    | 19 |

| dedecms   | dede_member_group | 13 |

| dedecms   | dede_scores    | 12 |

| dedecms   | dede_ratings   | 12 |

| dedecms   | dede_pwd_tmp   | 12 |

| dedecms   | dede_purview   | 12 |

| dedecms   | dede_plus     | 12 |

  我们可以监控每张表访问量的变化情况,或者监控某个库的访问量变化等。如果某个库、某个表发生变化,DBA能够及时知道每个表的访问情况。

冗余索引与未使用的索引检查

点击(此处)折叠或打开

mysql> select * from sys.schema_redundant_indexes \G

*************************** 1. row ***************************

              table_schema: dedecms

                table_name: dede_member_group

      redundant_index_name: id

   redundant_index_columns: id

redundant_index_non_unique: 1

       dominant_index_name: PRIMARY

    dominant_index_columns: id

 dominant_index_non_unique: 0

            subpart_exists: 0

            sql_drop_index: ALTER TABLE `dedecms`.`dede_member_group` DROP INDEX `id`

  针对冗余索引,DBA可以及时清理掉,减少磁盘的压力,提高数据库性能。

表自增ID监控

点击(此处)折叠或打开

mysql> select * from sys.schema_auto_increment_columns \G

*************************** 1. row ***************************

        table_schema: dedecms

          table_name: dede_sys_enum

         column_name: id

           data_type: smallint

         column_type: smallint(5) unsigned

           is_signed: 0

         is_unsigned: 1

           max_value: 65535

      auto_increment: 20040

auto_increment_ratio: 0.3058

*************************** 2. row ***************************

        table_schema: dedecms

          table_name: dede_member_tj

         column_name: mid

           data_type: mediumint

         column_type: mediumint(8)

           is_signed: 1

         is_unsigned: 0

           max_value: 8388607

      auto_increment: 247352

auto_increment_ratio: 0.0295

  展示了表的自增量列名、数据类型、当前使用量、最大值及使用率情况,极大地方便了DBA快速了解数据库自增量的使用情况。

监控全表扫描的SQL语句

点击(此处)折叠或打开

mysql> select * from sys.statements_with_full_table_scans \G

*************************** 1. row ***************************

                   query: SELECT * FROM `sys_config` LIMIT ?, ...

                      db: sys

              exec_count: 1

           total_latency: 74.62 ms

     no_index_used_count: 1

no_good_index_used_count: 0

       no_index_used_pct: 100

               rows_sent: 6

           rows_examined: 6

           rows_sent_avg: 6

       rows_examined_avg: 6

              first_seen: 2018-03-21 08:52:47

               last_seen: 2018-03-21 08:52:47

                  digest: befd5e5f4382f78675bbc86d495dfac2

*************************** 2. row ***************************

                   query: SELECT `performance_schema` . ... name` . `SUM_TIMER_WAIT` DESC

                      db: sys

              exec_count: 2

           total_latency: 644.19 ms

     no_index_used_count: 2

no_good_index_used_count: 0

       no_index_used_pct: 100

               rows_sent: 155

           rows_examined: 1481

           rows_sent_avg: 78

       rows_examined_avg: 741

              first_seen: 2018-03-22 03:27:54

               last_seen: 2018-03-22 03:44:09

                  digest: 6f58edd9cee71845f592cf5347f8ecd7

*************************** 3. row ***************************

                   query: SELECT * FROM `INNODB_SYS_TABLESPACES

从查询结果中可以看到这些语句执行的次数,其中没有使用索引的次数。

点击(此处)折叠或打开

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;

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

| file                            | avg_io |

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

| @@datadir/mysql/db.MYD                    | 1464  |

| @@datadir/sys/io_global_by_wait_by_latency.frm       | 1015  |

| @@datadir/sys/user_summary.frm               | 958  |

| @@datadir/sys/x@0024schema_table_statistics_with_buffer.frm | 955  |

| @@datadir/mysql/tables_priv.MYD               | 947  |

| @@datadir/sys/x@0024io_global_by_wait_by_bytes.frm     | 943  |

| @@datadir/sys/host_summary_by_statement_type.frm      | 911  |

| @@datadir/sys/user_summary_by_statement_type.frm      | 904  |

| @@datadir/sys/x@0024user_summary.frm            | 898  |

| @@datadir/sys/io_by_thread_by_latency.frm          | 897  |

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

   DBA可以通过该查询来大致了解磁盘IO消耗在哪里,哪些文件消耗的最多。

操作风险

  虽然这些视图方便了DBA对数据库的监控,但建议不要大量在线上部署通过查询sys或performance_schema中的表或者视图来完成一些监控,因为查询这些信息时,MySQL会消耗大量的资源去收集相关信息,严重的可能会导致业务请求被阻塞,从而引起故障。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章