墨墨导读:MySQL8.0 数据字典(Data Dictionary)也在进化中。MyISAM系统表全部换成InnoDB表 ,支持原子DDL。复杂度增加了。考虑过是否跟业务数据库有资源抢夺的现象,这些都是实际使用中需要观察关注的问题。
转发活动倒计时:《闯荡江湖,没点儿本事怎么行?》,朋友圈集赞就有机会赢得专业课程和经典书籍,参与直播互动更有机会赢百元京东卡!!
1
数据字典
MySQL中数据字典是数据库重要的组成部分之一,包含表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等对象的基础信息。MySQL INFORMATION_SCHEMA库提供了对数据局元数据、统计信息、以及有关MySQL server的访问信息(例如:数据库名或表名,字段的数据类型和访问权限等)。
1.1. 架构对比
MySQL8.0之前和MySQL8.0 数据字典的区别
备注:
· frm文件 存放表结构信息
· opt文件,记录了每个库的一些基本信息,包括库的字符集等信息
· TRN,.TRG文件用于存放触发器的信息内容
备注:原先存放于数据字典文件中的信息,全部存放到数据库系统表中,即将之前版本的.frm,.opt,.par,.TRN,.TRG,.isl文件进行了移除。
对mysql,sys系统库中的存储引擎做了改进,原使用MyISAM存储引擎的数据字典表都改为使用InnoDB存储引擎存放。从不支持事务的MyISAM存储引擎转变到支持事务的InnoDB存储引擎,典数据由相同的提交、回滚和崩溃恢复功能保护,为原子DDL的实现,提供了可能性。
1.2. 引擎变化
5.7.30
mysql> SELECT TABLE_SCHEMA ,ENGINE ,COUNT(*) from information_schema.tables where table_schema in ('information_schema' ,'mysql','performance_schema', 'sys') group by TABLE_SCHEMA ,ENGINE;+--------------------+--------------------+----------+| TABLE_SCHEMA | ENGINE | COUNT(*) |+--------------------+--------------------+----------+| information_schema | InnoDB | 10 || information_schema | MEMORY | 51 || mysql | CSV | 2 || mysql | InnoDB | 20 || mysql | MyISAM