-
Notifications
You must be signed in to change notification settings - Fork 111
sys schema 初体验
xiaoboluo768 edited this page Jun 9, 2020
·
2 revisions
- 访问sys schema时,可以先使用use语句将sys schema设置为默认数据库,然后就可以不使用database前缀,如下:
# version视图可以查看sys 系统库和mysql server的版本号
root@localhost : (none) 12:13:22> select * from sys.version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 1.5.1 | 5.7.20-log |
+-------------+---------------+
1 row in set (0.01 sec)
- 也可以使用db_name.view_name、db_name.procedure_name、db_name.func_name等方式在不指定默认数据库的情况下访问sys schema中的对象(叫做名称限定对象引用),如下:
mysql> SELECT * FROM sys.version;
+ ------------- + ----------------- +
| sys_version | mysql_version |
+ ------------- + ----------------- +
| 1.5.0 | 5.7.9-debug-log |
+ ------------- + ----------------- +
- PS:下文中的示例中,对于sys schema的访问都是假定指定了默认数据库为sys schema
- sys schema下包含许多视图,它们以各种方式对performance_schema表进行聚合计算展示。这些视图中大部分都是成对出现,两个视图名称相同,但有一个视图是带'x$'字符前缀的,例如:host_summary_by_file_io和x$host_summary_by_file_io,代表聚合按照主机汇总的文件I/O性能数据,两个视图访问数据源是相同的,但是创建视图的语句中,不带x$的视图是把相关数值数据经过单位换算再显示的(显示为毫秒、秒、分钟、小时、天等),带x$前缀的视图显示的是原始的数据(皮秒),如下:
# x$host_summary_by_file_io视图汇总数据,显示未格式化的皮秒单位延迟时间,没有x$前缀字符的视图输出的信息经过单位换算之后可读性更高
mysql> SELECT * FROM host_summary_by_file_io;
+------------+-------+------------+
| host | ios | io_latency |
+------------+-------+------------+
| localhost | 67570 | 5.38 s |
| background | 3468 | 4.18 s |
+------------+-------+------------+
# 对于带x$的视图显示原始的皮秒单位数值,对于程序或工具获取使用更易于数据处理
mysql> SELECT * FROM x$host_summary_by_file_io;
+------------+-------+---------------+
| host | ios | io_latency |
+------------+-------+---------------+
| localhost | 67574 | 5380678125144 |
| background | 3474 | 4758696829416 |
+------------+-------+---------------+
- 要查看sys schema对象定义语句,可以使用适当的SHOW语句或INFORMATION_SCHEMA库查询。例如,要查看session视图和format_bytes()函数的定义,可以使用如下语句:
mysql> SHOW CREATE VIEW session;
mysql> SHOW CREATE FUNCTION format_bytes;
- 然而,这些语句是经过格式化的,可读性比较差。要查看更易读的格式对象定义语句,可以访问sys schema开发网站https://github.com/mysql/mysql-sys上的各个.sql文件,或者使用mysqldump与mysqlpump工具导出sys库,默认情况下,mysqldump和mysqlpump都不会导出sys schema。要生成包含sys schema的导出文件,可以使用如下命令显式指定sys schema(虽然可以导出视图定义,但是与原始的定义语句相比仍然缺失了相当一部分内容,只是可读性比直接show create view要好一些):
mysqldump --databases --routines sys> sys_dump.sql
mysqlpump sys> sys_dump.sql
- 如果要重新导入sys schema,可以使用如下命令:
mysql <sys_dump.sql
上一篇: sys schema使用基础环境 | 下一篇: sys schema 进度报告
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!