博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL 8 Serialized Dictionary Information
阅读量:2169 次
发布时间:2019-05-01

本文共 965 字,大约阅读时间需要 3 分钟。

随着MYSQL 8 越来越稳定,并且开始使用的人和公司越来越多起来,掌握MYSQL 8 的工具变得越来越重要。不赶到别人前头,那就只能follower.

MYSQL 8 与MYSQL 5.7之间的变动中,最大的一个变动就是数据字典的原子性得到了保证。再也不是FRM 文件和Idb文件,在进行数据表的DDL部分操作中,总有那么些恐慌。而其中重大的改变其中有一条叫 Serialized Dicitionary information.

之前MYSQL 5.X有一个工具集,其中可以通过mysqlfrm (通过PYTHON)撰写的工具集来在MYSQL 停机的状态下读取FRM 文件,并展示出表的结构。而MYSQL 8 将不再有这样的东西,并且工具集其实也早就下线了,所以MYSQL 8 推出了新的方式来读取数据的格式文件。

这个工具就是 ibd2sdi

我们可以通过ibd2sdi来在系统启动的情况下,来读取数据的表结构,并输

出成json格式。

在MYSQL 8 中字典表将不能进行查看,如果需要查看则在编译MYSQL时需要添加debug参数,并且需要运行特殊的命令来进行数据的查看。

为什么要这样干,主要的原因是原先的MYSQL 5.x 的字典表难以扩展,并且不具有一致性,而MYSQL8 则改掉这个问题,将数据字典以 SDI的方式以JSON的方式进行存储。

通过工具我们初步看到了SDI 的信息,但具体SDI 带来了什么

1  进行DDL 操作时,由于非事务存储造成的非一致性

2  当DDL 操作失败时可以安全的 Crash 

3  避免了复制是具有挑战性的问题因为 DDL 不具有原子性

4  表结构的扩展困难的问题

5  添加了SDI 的cache,通过添加了元数据metadata的cache来加速数据的查询,通过LRU的方式来管理相关CACHE

同时这样做也是有弊端的,就是DDL 时可能需要更多的时间,因为他要重新写入存储,undo log , redo log 而不再是直接写入到frm文件了

上图也是8.0新添加的功能,以前我们读取表的status  是直接进行读取的,而mysql 8.014后的版本,添加上面的参数,读取的表的status是去读取缓存,而要刷新缓存,可以通过上的挑战过期时间或者analyze table.

转载地址:http://khazb.baihongyu.com/

你可能感兴趣的文章
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机11:Java内存异常原理与实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析3:Spring IOC容器的加载过程
查看>>
Spring源码剖析4:懒加载的单例Bean获取过程分析
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
Spring源码剖析7:AOP实现原理详解
查看>>