mysql 8.0基于事务ddl_MySQL8.0新特性——支持原子DDL语句

MySQL 8.0引入了原子DDL,将DDL语句与数据字典更新、存储引擎操作和二进制日志写入合并到单个事务中。这一特性保证了即使在操作中断时,DDL变更也会完整提交或回滚。目前只有InnoDB存储引擎支持原子DDL,包括对表和非表的DDL操作。部分DDL语句如DROP TABLE、DROP DATABASE等行为有所变化,部分执行不再允许。要查看DDL日志,可以借助隐藏的mysql.innodb_ddl_log表。
摘要由CSDN通过智能技术生成

MySQL 8.0开始支持原子数据定义语言(DDL)语句。此功能称为原子DDL。原子DDL语句将与DDL操作关联的数据字典更新,存储引擎操作和二进制日志写入组合到单个原子事务中。即使服务器在操作期间暂停,也会提交事务,并将适用的更改保留到数据字典,存储引擎和二进制日志,或者回滚事务。

通过在MySQL 8.0中引入MySQL数据字典,可以实现Atomic DDL。在早期的MySQL版本中,元数据存储在元数据文件,非事务性表和存储引擎特定的字典中,这需要中间提交。MySQL数据字典提供的集中式事务元数据存储消除了这一障碍,使得将DDL语句操作重组为原子事务成为可能。

官方文档:

https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html

1、支持的DDL语句

原子DDL功能支持表和非表DDL语句。与表相关的DDL操作需要存储引擎支持,而非表DDL操作则不需要。目前,只有InnoDB存储引擎支持原子DDL。

①:受支持的表DDL语句包括 CREATE,ALTER和 DROP对数据库,表,表和索引,以及语句 TRUNCATE TABLE声明。

②:支持的非表DDL语句包括:

CREATE和DROP 语句,以及(如果适用)ALTER 存储程序,触发器,视图和用户定义函数(UDF)的语句。

账户管理语句: CREATE,ALTER, DROP,,如果适用, RENAME报表用户和角色,以及GRANT 和REVOKE报表。

1.1、原子DDL功能不支持以下语句:

①:涉及除存储引擎之外的存储引擎的与表相关的DDL语句InnoDB。

②:INSTALL PLUGIN和 UNINSTALL PLUGIN 陈述。

③:INSTALL COMPONENT和 UNINSTALL COMPONENT 陈述。

④:CREATE SERVER, ALTER SERVER和 DROP SERVER语句。

2、原子DDL特性:

①:元数据更新,二进制日志写入和存储引擎操作(如果适用)将合并为单个事务。

②:在DDL操作期间,SQL层没有中间提交。

③:在适用的情况下:

数据字典,程序,事件和UDF高速缓存的状态与DDL操作的状态一致,这意味着更新高速缓存以反映DDL操作是成功完成还是回滚。

DDL操作中涉及的存储引擎方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值