数据字典
是数据库重要的组成部分之一,数据字典是对数据库中的数据、库对象、表对象等的元信息的集合。
包含内容
在MySQL中,数据字典信息内容就包括表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等内容。MySQL INFORMATION_SCHEMA库提供了对数据局元数据、统计信息、以及有关MySQL server的访问信息(例如:数据库名或表名,字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典。在MySQL8.0之前,MySQL的数据字典信息,并没有全部存放在系统数据库表中,部分数据库数据字典信息存放于文件中,其余的数据字典信息存放于数据字典库中(INFORMATION_SCHEMA,mysql,sys)。例如表结构信息存放在.frm
文件中,数据库表字段信息存放于INFORMATION_SCHEMA下的COLUMNS表中。早期,5.6版本之前,MyISAM是MySQL的默认存储引擎,而作为MyISAM存储引擎,它是没有数据字典的。只有表结构信息记录在.frm
文件中。MySQL5.6版本之后,将InnoDB存储引擎作为默认的存储引擎。在InnoDB存储引擎中,添加了一些数据字典文件用于存放数据字典元信息,例如:.opt
文件,记录了每个库的一些基本信息,包括库的字符集等信息,.TRN
,.TRG
文件用于存放触发器的信息内容。
最新的MySQL 8.0 发布之后,对数据库数据字典方面做了较大的改进。
- 首先是,将所有原先存放于数据字典文件中的信息,全部存放到数据库系统表中,即将之前版本的
.frm
,.opt
,.par
,.TRN
,.TRG
,.isl
文件都移除了,不再通过文件的方式存储数据字典信息。 - 其次是对INFORMATION_SCHEM,mysql,sys系统库中的存储引擎做了改进,原先使用MyISAM存储引擎的数据字典表都改为使用InnoDB存储引擎存放。从不支持事务的MyISAM存储引擎转变到支持事务的InnoDB存储引擎,为原子DDL的实现,提供了可能性。