Online ddl和replace ddl

本文介绍了MySQL中.ibd和.frm文件的作用,以及Onlineddl的三种执行算法COPY、INPLACE和INSTANT,其中COPY阻塞DML,INPLACE接近Online,而INSTANT几乎无阻塞,实时修改元数据。
摘要由CSDN通过智能技术生成

在这个之前我们先来了解两种文件类型

1. .ibd文件

        表数据文件,存储了表的数据和索引信息,从Mysql8开始表定义信息,从.frm文件改为.dcl文件存储,而表数据和索引信息仍然储存在.ibd文件,.idb文件通常在书籍库目录下。

2. .frm文件

        是Mysql数据库中存储库中存储表结构的文件,它记录了表的结构信息,包括表的字段索引,触发器等信息。

        Mysql的存储引擎通过读取frm文件来了解表结构

Online ddl

Online ddl 在Mysql5.6对于部分alter table 新的执行算法可以进行DDL时,“并行”现有业务(DML)操作

目前支持主流算法有三种

COPY --MySQL 5.6之前非Online,都是执行这种算法

INPACE--5.6出现

INSTANT--Mysql8.0.12出现的

首先我们先来看看COPY

DDL时,生成(临时)新表,将原表书记逐行拷贝到新表中,在此期间会阻塞DML,offline(离线而非在线的)。

在准备阶段全程加锁,即不能写入数据,也不能查询数据,在执行和提交的时候容易造成数据库阻塞

INPLACE

MySQL5.6出现的新算法,无需拷贝全表数据到新表,但可能还是需要IN-PLACE方式重建整表

准备和提交过程加锁,不能进行DML,在执行过程可以进行DML,因为准备和提交时间占比很少,可以达到百分之九十多的Online状态。所以它几乎是Online的

Instant

只修改数据字典当中的元数据,无需拷贝数据,也无需重建整表,原表数据也不受影响,整个DDl过程几乎瞬间完成,也不会阻塞DDL

Online是否即为是否允许并发DML

Copy 算法执行的 DDL肯定不是 Online 的,Inplace 算法执行的 DDL 不一定是 Online 的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下水道程序员

你的鼓励将是我奋斗的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值