MySQL 8.0新特性--数据字典

版权声明:未经博主允许不允许转载 https://blog.csdn.net/qianglei6077/article/details/86685521

MySQL现在包含一个事务数据字典,用于存储有关数据库对象的信息。在以前的MySQL版本中,字典相关数据是存储在元数据文件和非事务表中。

数据字典的好处:

  • 统一集中存储字典数据

  • 移除了基于文件的元数据存储

  • 字典数据的事务性,安全性

  • 字典对象的集中和统一的缓存

  • 一些INFORMATION_SCHEMA中表的更简单和改进的实现。

  • 原子DDL

数据字典表是不可见的。 不能用SELECT语句查询,也无法通过SHOW TABLES命令查看,也不存储在INFORMATION_SCHEMA中。 但是,在大多数情况下,可以查询相应的INFORMATION_SCHEMA中的表。 从概念上讲,INFORMATION_SCHEMA只是提供了一个相应的视图,MySQL通过该视图提供一些数据字典元数据给用户查看。 如:

无法直接访问mysql中的数据字典表

mysql> SELECT * FROM mysql.schemata;

ERROR 3554 (HY000): Access to data dictionary table 'mysql.schemata' is rejected.

mysql> desc schemata;

ERROR 3554 (HY000): Access to data dictionary table 'mysql.schemata' is rejected.

可通过INFORMATION_SCHEMA中国的schemata视图来访问

mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA/G

*************************** 1. row ***************************

              CATALOG_NAME: def

               SCHEMA_NAME: mysql

DEFAULT_CHARACTER_SET_NAME: utf8mb4

    DEFAULT_COLLATION_NAME: utf8mb4_0900_ai_ci

                  SQL_PATH: NULL

省略。。。

5 rows in set (0.00 sec)

注:并不是所有数据字典表,都有相应的视图以供查询。例如:mysql.indexes,但是INFORMATION_SCHEMA.STATISTICS包含了大部分相同的信息。

在MySQL8.0之前版本中的一些系统表已经被数据字典所取代:

  • 数据字典表event取代了event系统表

  • parameters 和routines数据字典表一起取代了proc系统表

注:升级到MySQL8.0应该注意这方面的问题,具体升级注意事项查看官方文档:

https://dev.mysql.com/doc/refman/8.0/en/upgrading.html

附录
MySQL8.0中所有的数据字典表:

  • catalogs:目录信息。

  • character_sets:有关可用字符集的信息。

  • collations:有关每个字符集的排序规则的信息。

  • column_statistics:列值的直方图统计信息。

  • column_type_elements:有关列使用的类型的信息。

  • columns:有关表中列的信息。

  • dd_properties:标识数据字典属性(例如其版本)的表。服务器使用它来确定是否必须将数据字典升级到较新的版本。

  • events:有关事件计划程序事件的信息。服务器在其启动序列期间加载此表中列出的事件,除非使用–skip-grant-tables选项启动。

  • foreign_keys,foreign_key_column_usage:有关外键的信息。

  • index_column_usage:有关索引使用的列的信息。

  • index_partitions:有关索引使用的分区的信息。

  • index_stats:用于存储执行ANALYZE TABLE时生成的动态索引统计信息。

  • indexes:有关表索引的信息。

  • innodb_ddl_log:存储用于崩溃安全DDL操作的DDL日志。

  • parameter_type_elements:有关存储过程和函数参数的信息,以及有关存储函数的返回值的信息。

  • parameters:有关存储过程和函数的信息。

  • resource_groups:有关资源组的信息。

  • routines:有关存储过程和函数的信息。

  • schemata:有关schemata的信息。在MySQL中,模式是一个数据库,因此该表提供了有关数据库的信息。

  • st_spatial_reference_systems:有关空间数据的可用空间参照系的信息。

  • table_partition_values:有关表分区使用的值的信息。

  • table_partitions:有关表使用的分区的信息。

  • table_stats:执行ANALYZE TABLE时生成的动态表统计信息。

  • tables:有关数据库中表的信息。

  • tablespace_files:有关表空间使用的文件的信息。

  • tablespaces:有关活动表空间的信息。

  • triggers:触发器的信息。

  • view_routine_usage:有关视图与它们使用的存储函数之间的依赖关系的信息。

  • view_table_usage:用于跟踪视图及其基础表之间的依赖关系。

猜你喜欢

转载自blog.csdn.net/qianglei6077/article/details/86685521