MySQL5.7版本引入了一个革命性的功能——sys视图,这一功能为数据库的性能诊断、监控与优化提供了前所未有的便利
本文将深入探讨MySQL5.7中的sys视图,揭示其强大的功能和实际应用价值
一、sys视图简介 sys视图是MySQL5.7及更高版本中引入的一个虚拟数据库(或称为schema),它基于performance_schema和information_schema构建,旨在简化性能监控和优化工作
sys视图由一系列的存储过程、函数和视图组成,这些对象共同为数据库管理员和开发人员提供了一个直观、易用的性能监控和优化平台
sys视图中的数据大多来源于performance_schema,但经过精心设计和优化,使得性能数据的获取和分析变得更加简单和高效
通过sys视图,用户可以轻松地获取数据库的资源使用情况、IO性能、内存分配、会话状态、表统计信息和索引使用情况等关键数据,从而快速定位性能瓶颈并进行优化
二、sys视图分类与功能 sys视图涵盖了数据库管理的多个方面,按照功能可以分为以下几类: 1.主机相关信息视图 以host_summary开头的视图主要汇总了IO延迟的信息,从主机、文件事件类型、语句类型等角度全面展示文件IO的详细情况
这些视图对于分析主机层面的性能瓶颈、优化IO性能具有重要意义
-host_summary:提供主机层面的IO性能汇总信息,包括IO等待时间、读写请求数等
-host_summary_by_file_io:按文件IO类型展示主机的IO性能数据,帮助用户了解哪些文件产生了最多的IO请求
-host_summary_by_stages:展示主机在执行不同阶段任务时的性能数据,有助于分析任务执行过程中的性能瓶颈
2. InnoDB相关信息视图 以innodb开头的视图汇总了InnoDB存储引擎的关键性能数据,包括InnoDB缓冲池的使用情况、事务等待锁信息等
这些视图对于优化InnoDB存储引擎的性能至关重要
-innodb_buffer_stats_by_schema:按schema展示InnoDB缓冲池的使用情况,帮助用户了解不同schema对缓冲池的占用情况
-innodb_lock_waits:展示InnoDB当前事务锁等待信息,有助于快速定位和解决锁等待问题
3. IO使用情况视图 以IO开头的视图总结了IO使用者的信息,包括等待IO的情况、IO使用量情况等
这些视图对于分析数据库IO性能、优化磁盘使用具有重要意义
-io_global_by_file_by_bytes:按文件展示全局IO使用情况,包括读写字节数、平均IO大小等,有助于用户了解哪些文件产生了最多的IO负载
-io_by_thread_by_latency:按线程和延迟展示IO使用情况,有助于分析线程层面的IO性能瓶颈
4. 内存相关信息视图 以memory开头的视图从主机、线程、用户、事件等多个角度展示内存使用情况
这些视图对于监控和优化数据库内存分配具有重要意义
-memory_by_host_by_current_bytes:按主机展示当前内存使用情况,有助于用户了解不同主机对内存的占用情况
-memory_global_total:展示全局内存使用的总览信息,包括已分配内存、空闲内存等
5. 连接与会话相关信息视图 processlist和session相关的视图总结了会话相关的信息,包括当前连接状态、执行的SQL语句等
这些视图对于监控数据库连接状态、分析用户行为具有重要意义
-sys.processlist:提供比传统SHOW PROCESSLIST命令更详细的会话信息,包括行数情况、临时表使用情况等
-sys.session:展示当前用户会话的进程列表信息,过滤掉了后台线程,只显示与前台(用户)线程相关的统计数据
6. 表相关信息视图 以schema_table开头的视图从全表扫描、InnoDB缓冲池等方面展示了表统计信息
这些视图对于分析表级别的性能瓶颈、优化表结构具有重要意义
-schema_table_statistics:展示表的IO统计信息,包括读写请求数、IO延迟等
-schema_table_lock_waits:展示表级别的锁等待信息,有助于快速定位和解决表锁问题
7.索引相关信息视图 包含index的视图统计了索引使用的情况,以及重复索引和未使用的索引情况
这些视图对于优化索引结构、提高查询性能具有重要意义
-schema_redundant_indexes:展示冗余索引的信息,包括冗余索引的名称、列等,有助于用户识别并删除冗余索引
-schema_unused_indexes:展示未使用索引的信息,有助于用户清理无用索引,优化索引结构
8.语句相关信息视图 以statement开头的视图统计了规范化后的语句使用情况,包括错误数、警告数、执行全表扫描的语句、使用临时表的语句等
这些视图对于分析SQL语句的性能、优化查询具有重要意义
-statements_with_errors_or_warnings:展示包含错误或警告的SQL语句信息,有助于用户识别并修复SQL语句中的问题
-statements_with_full_table_scans:展示执行全表扫描的SQL语句信息,有助于用户优化这些语句,避免不必要的全表扫描
9. 用户相关信息视图 以user开头的视图统计了用户使用的文件IO、执行的语句统计信息等
这些视图对于分析用户行为、优化用户权限配置具有重要意义
-user_summary:按用户展示资源使用情况汇总信息,包括IO请求数、CPU使用时间等
-user_summary_by_file_io:按用户和文件IO类型展示资源使用情况,有助于用户了解不同用户对文件的IO负载
10.等待事件相关信息视图 以wait开头的视图从主机和事件角度展示等待类事件的延迟情况
这些视图对于分析等待事件、优化数据库性能具有重要意义
-waits_by_host_by_latency:按主机和延迟展示等待事件信息,有助于用户了解不同主机的等待事件情况
-waits_global_by_latency:展示全局等待事件的延迟情况,有助于用户快速定位性能瓶颈
三、sys视图的实际应用 sys视图在数据库性能监控与优化中发挥着重要作用
以下是一些实际应用场景: 1.查看数据库连接