MySQL自带的4个数据库
安装过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的定义有两种格式。
<character_set>_<language/other>_<ci/cs>
<character_set>_<bin>
cs
就是 case sensitive。bin是二进制。
在查看一下COLLATIONS表中character_set为utf8mb4的结果,可以看到同一个字符集可以有很多COLLATIONS来选择,不同COLLATION的排序、字符对比的准确性和性能都不同。
MySQL数据库服务器有SHOW指令方便我们查询information_schema表中的信息。如常用的
show databases
、show tables
、show 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
扩展阅读: