performance_schema 和 information_schema 的区别
Contents
performance_schema 和 information_schema 的区别
performance_schema
performance_schema这个库提供的是MySQL数据库性能的一些指标,主要保存 MySQL 服务器运行过程中的一些状态信息, 算是对MySQL 服务器的一个性能监控。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等等信息。
该功能可以显示关闭,也就是在my.cnf文件中配置performance_schema=off
。
查看是否开启:show variables like 'performance_schema';
5.6版本之后是默认开启的
与information_schema不同,performance_schema中的表是小写的。
其中的表的含义,记录什么内容,可以参考:
查看表的默认引擎:
|
|
查找执行最多的SQL:
|
|
此外其他列的含义如下,可以视情况加入select list
- AVG_TIMER_WAIT SQL的平均响应时间
- SUM_SORT_ROWS SQL排序记录数
- SUM_ROWS_EXAMINED SQL扫描记录数
- SUM_CREATED_TMP_TABLES,SUM_CREATED_TMP_DISK_TABLES SQL使用临时表
- SUM_ROWS_SENT SQL返回结果集
通过上述指标我们可以间接获得某类SQL的逻辑IO(SUM_ROWS_EXAMINED),CPU消耗(SUM_SORT_ROWS),网络带宽(SUM_ROWS_SENT)的对比,但还无法得到某类SQL的物理IO消耗,以及某类SQL访问数据的buffer命中率。
查找响应时间最长的SQL:
|
|
查找逻辑IO最高的表、文件(热数据):
|
|
查找使用最多的索引:
|
|
查找未使用过的索引:
|
|
查找最耗时的等待:
|
|
更多操作参考:
- MySQL中information_schema和performance_schema
- MySQL 中information_schema、mysql、performance_schema、sys 简介
information_schema
information_schema是mysql数据库的元信息库,里面的表存储了mysql的一些信息。information_schema里面的表本质是一些视图,他们使用了不同的存储引擎,并非全都是默认的innodb存储引擎。通过下面的SQL语句可以看出,有些表是memory的存储引擎,有些表是innodb的存储引擎。
|
|
information_schema数据库表说明:
1、SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
2、TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
3、COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
4、STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。
5、USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。
6、SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。
7、TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。
8、COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。
9、CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。
10、COLLATIONS表:提供了关于各字符集的对照信息。
11、COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
12、TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。
13、KEY_COLUMN_USAGE表:描述了具有约束的键列。
14、ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
15、VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。
16、TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表
查看引擎information_schema.ENGINS 对应于 show engines;
查看数据库information_schema.SCHEMATA 对应于 show databases;
查看表information_schema.TABLES 对应于 show tables;
查看列information_schema.COLUMNS 对应于show columns from table_name
查看索引information_schema.STATISTICS 对应于show index from table_name
查看线程information_schema.PROCESSLIST 对应于 show processlist
show语句:
|
|
参考
- MySQL中information_schema和performance_schema
- 漫谈MySQL四-系统数据库performance_schema详解
- 漫谈MySQL五-系统数据库information_schema详解
- information_schema和performance_schema的一点知识
- MySQL Performance-Schema(一) 配置篇
- MySQL Performance-Schema(二) 理论篇
- MySQL 中information_schema、mysql、performance_schema、sys 简介
- performance_schema全方位介绍