暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

mysql8.0查看数据字典

原创 黄江平 2022-01-17
3201

1.查看8.0的数据字典
MySQL8.0 服务器合并了一个事务性数据字典,用来存储关于数据库对象的信息,也有了原子DDL功能。在MySQL8.0以前的版本中,字典数据存储在元数据文件、非事务性表和特定于存储引擎的数据字典中。要查看8.0数据字典,首先要编译一个debug版本的mysql(可以自行到网上查怎么编译debug版)。

image.png

image.png

image.png

2.使用上与以前版本的区别
2.1 以前,启用innodb_read_only系统变量可以防止只在InnoDB存储引擎上创建和删除表。从MySQL 8.0开始,启用innodb_read_only可以防止所有存储引擎执行这些操作。任何存储引擎的表创建和删除操作都会修改mysql系统数据库中的数据字典表,但是这些表使用InnoDB存储引擎,启用innodb_read_only后不可修改。同样的原则也适用于其他需要修改数据字典表的表操作。例如:
ANALYZE TABLE失败是因为它更新了表统计信息,这些信息存储在数据字典中。
ALTER TABLE tbl_name ENGINE=engine_name失败,因为它更新了存储引擎名称,存储引擎名称存储在数据字典中。
2.2 mysql8.0以前,mysql系统数据库中的表对DML和DDL语句是可见的。
MySQL 8.0,数据字典表是不可见的,不能直接修改或查询。但是,在大多数情况下,可以转而查询相应的INFORMATION_SCHEMA表。这使得在服务器开发过程中可以更改底层数据字典表,同时维护一个稳定的INFORMATION_SCHEMA接口以供应用程序使用。
2.3 mysql8.0以前,对statistics和TABLES表中的表统计信息的INFORMATION_SCHEMA查询直接从存储引擎检索统计信息。从MySQL 8.0开始,缓存表统计数据默认使用。information_schema_stats_expiry系统变量定义缓存表统计信息过期之前的一段时间。缺省值是86400秒(24小时)。
(要在任何时候更新给定表的缓存值,使用ANALYZE table。)如果没有缓存的统计信息或统计信息已经过期,则在查询表统计信息列时从存储引擎中检索统计信息。
2.4 mysqldump和mysqlpump不再转储INFORMATION_SCHEMA数据库,即使在命令行上显式指定也无效。
2.5 CREATE TABLE dst_tbl LIKE src_tbl要求src_tbl是一个基表,如果它是一个INFORMATION_SCHEMA表,是数据字典表的视图,则会失败。
2.6 Mysql8.0以前,创建包含非法字符的存储例程会产生警告。在MySQL 8.0,会产生错误。

3.数据字典限制
不支持手动创建data目录下的数据库目录(例如使用mkdir)。MySQL服务器无法识别手动创建的数据库目录。
DDL操作需要更长的时间,因为写入存储,撤消日志,重做日志,而不是。frm文件。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论