26.2 使用 sys 模式

您可以将sys模式设置为默认模式,以便对其引用的对象无需使用模式名称进行限定:

mysql> USE sys;
Database changed
mysql> SELECT * FROM version;
+-------------+------------------+
| sys_version | mysql_version    |
+-------------+------------------+
| 1.5.1       | 5.7.24-debug-log |
+-------------+------------------+

(version视图显示sys模式和 MySQL 服务器版本。)

要在其他模式为默认模式(或简单地说是明确的)下访问sys模式对象,请使用模式名称限定对象引用:

mysql> SELECT * FROM sys.version;
+-------------+------------------+
| sys_version | mysql_version    |
+-------------+------------------+
| 1.5.1       | 5.7.24-debug-log |
+-------------+------------------+

sys模式包含许多视图,这些视图以各种方式总结了性能模式 table。这些视图中的大多数成对出现,因此该对中的一个成员与另一个成员具有相同的名称,外加x$前缀。例如,host_summary_by_file_io视图汇总了按主机分组的文件 I/O,并显示了从皮秒转换为更易读的值(带有单位)的延迟;

mysql> SELECT * FROM sys.host_summary_by_file_io;
+------------+-------+------------+
| host       | ios   | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s     |
| background |  3468 | 4.18 s     |
+------------+-------+------------+

x$host_summary_by_file_io视图汇总了相同的数据,但显示了未格式化的皮秒延迟:

mysql> SELECT * FROM sys.x$host_summary_by_file_io;
+------------+-------+---------------+
| host       | ios   | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+

没有x$前缀的视图旨在提供对用户更友好且更易于阅读的输出。带有x$前缀的视图以原始形式显示相同的值,该视图更适合与其他对数据执行自己的处理的工具一起使用。有关非x$视图和x$视图之间差异的更多信息,请参见第 26.4.3 节“ sys 模式视图”

要检查sys模式对象定义,请使用适当的SHOW语句或INFORMATION_SCHEMA查询。例如,要检查session视图和format_bytes()函数的定义,请使用以下语句:

mysql> SHOW CREATE VIEW sys.session;
mysql> SHOW CREATE FUNCTION sys.format_bytes;

但是,这些语句以相对无格式的形式显示定义。要以更具可读性的格式查看对象定义,请访问 MySQL 源代码发行版中scripts/sys_schema下的各个.sql文件。在 MySQL 5.7.28 之前,源代码保存在单独的发行版中,该发行版可从sys模式开发网站https://github.com/mysql/mysql-sys获得。

默认情况下,mysqldumpmysqlpump都不会转储sys模式。要生成转储文件,请使用以下任一命令在命令行上显式命名sys模式:

mysqldump --databases --routines sys > sys_dump.sql
mysqlpump sys > sys_dump.sql

要从转储文件重新安装架构,请使用以下命令:

mysql < sys_dump.sql