安装过MySQL后,MySQL中自带了4个数据库。

information_schema

关于数据的数据,你可以叫做元数据。下面看下information_schema数据库中包含的表都是些什么。

  • CHARACTER_SETS:从名字看数据库支持的字符集
  • COLLATIONS:字符序。
  • COLUMNS:表中的列信息
  • ENGINES:存储引擎
  • SCHEMATE:提供所有数据库信息。show databases;
  • *_PRIVILEGES:权限信息

还有很多表,基本上看名字可以看出来存储的信息。

之前我就不太明白COLLATION的概念。这里了解了一下。COLLATION是对比方法,用于指定数据集如何排序,以及字符串的比较规则。先看下字符集里面utf8mb4对应的default collation是utf8mb4_general_ci。这里面ci代表case ignore我猜的。总结下COLLATION的定义有两种格式。

  1. <character_set>_<language/other>_<ci/cs>
  2. <character_set>_<bin>

cs就是 case sensitive。bin是二进制。

在查看一下COLLATIONS表中character_set为utf8mb4的结果,可以看到同一个字符集可以有很多COLLATIONS来选择,不同COLLATION的排序、字符对比的准确性和性能都不同。

MySQL数据库服务器有SHOW指令方便我们查询information_schema表中的信息。如常用的 show databasesshow tablesshow processlist等。

DESCRIBE TABLE也是使用到这个数据库中信息。

顺便提一下之前在使用Django migrate的时候在information_schema中某个表找信息帮助我定位到错误的。现在还没有安装环境没有办法验证。

mysql

就像名字里自带的高贵一样,这个表里面不用来放核心数据都说不过去。不要乱改。但是看看还是可以的。之前配置的主从同步就涉及到mysql.slave_master_info表。

performance_schema

show variables like 'performance_schema';查看了下我电脑上装的是开启的。

主要是服务器监控信。performance_schema数据库中的表都是使用preformance_schema引擎不占用磁盘存储。

其实我更没有使用过。先知道这么个东西吧。

sys

在MySQL 5.7中加入,包含了一系列的存储过程、自定义函数以及视图来帮助我们快速了解系统的元数据信息。

sys数据库下除了sys_config是表以为,其他都是视图。

我觉得这个可以认为是一个方便的工具集么。sys下面的视图分为几类

  • host_summary: 服务器层面
  • user_summary: 用户层级
  • InnoDB: InnoDB层面
  • IO: I/O层的统计
  • memory
  • schema
  • session
  • statement
  • wait

扩展阅读: