🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、概述 information_schema和 performance_schema是mysql对外提供的可供监控的自带数据库; information_schema提供了访问数据库元数据; performance_schema用于收集数据库服务器性能参数; 普通用户需要访问这些信息,先要进行授权; 授权information_schema: ``` grant PROCESS ON *.* TO 'test'@'%' ``` 授权performance_schema: ``` grant select ON performance_schema.* TO 'test'@'%' ``` 这里要说明的并不是全部信息,而是涉及到关键运维监控的信息; ## 二、information_schema **INNODB_TRX**:提供有关InnoDB中当前正在执行的每个事务的信息,包括事务状态(例如,它是否正在运行或等待锁定),事务何时启动以及事务正在执行的特定SQL语句。 **DATA_LOCKS**:包含一行描述事务已请求的每个锁,以及它正在等待的每个锁。MySQL8开始,在performance_schema; **DATA_LOCK_WAITS**:指示哪些事务正在等待给定锁定,或者指定给定事务正在等待哪个锁定。此表包含每个被阻止事务的一个或多个行,指示它已请求的锁以及阻止该请求的任何锁;MySQL8开始,在performance_schema中; **PROCESSLIST**:里面存储了当前连接信息,跟show (full) processlist存储的一样,这个表非常有用,能看出很多问题,比如死锁、慢查询等等; ## 三、performance_schema 与information_schema不同,performance schema是可以选配的;performance_schema在5.7.x及其以上版本中默认启用(5.6.x及其以下版本默认关闭),如果要显式启用或关闭时,我们需要使用参performance_schema=ON|OFF设置,并在my.cnf中进行配置; performance schema主要关注数据库运行过程中的性能相关的数据; ``` show variables like 'performance_schema'; ``` ![](https://img.kancloud.cn/62/cb/62cbe6c9f2cf166f0299d34ab4d95dd8_509x140.png) ## 四、用途 比如如果有死锁或连接未关闭的情况, ![](https://img.kancloud.cn/7d/69/7d69101c27b8109a75af85d8c9d9c7ab_1354x490.png) 通过这张表,可以看到某个事务开始时间,和正在执行的语句,对应的thread_id,这个id在PROCESSLIST表中,就是ID字段; ![](https://img.kancloud.cn/57/61/57616a1c472033cc4a37d7552664df3b_1356x433.png) ## 五、常见手段 1、通过PROCESSLIST,里面出现的语句,都是可能有问题需要优化的语句;