MySQL 8.0新特性之原子DDL
文章来源:爱可生云数据库
简介
MySQL8.0 开始支持原⼦ DDL(atomic DDL),数据字典的更新,存储引擎操作,写⼆进制日志结合成了一个事务。在没有原⼦DDL之前,DROP TABLE test1,test2;如遇到server crash,可能会有test1被drop了,test2没有被drop掉。下面来看下在MySQL8.0之前和MySQL8.0 数据字典的区别。
存储引擎⽀持
查看error log
原子DDL 操作步骤
准备:创建所需的对象并将DDL⽇志写入 mysql.innodb_ddl_log表中。DDL日志定义了如何前滚和回滚DDL操作。
执行:执⾏DDL操作。例如,为CREATE TABLE操作执⾏创建。
提交:更新数据字典并提交数据字典事务。
Post-DDL:重播并从mysql.innodb_ddl_log表格中删除DDL⽇志。为确保回滚可以安全执⾏⽽不引⼊不⼀致性,在此最后阶段执⾏⽂件操作(如重命名或删除数据文件)。这一阶段还从 mysql.innodb_dynamic_metadata的数据字典表删除的动态元数据为了DROP TABLE,TRUNCATE和其它重建表的DDL操作。
⽆论事务是提交还是回滚,DDL日志都会mysql.innodb_ddl_log在Post-DDL阶段重播并从表中删除 。mysql.innodb_ddl_log如果服务器在DDL操作期间暂停,DDL⽇志应该只保留在表中。在这种情况下,DDL⽇志会在恢复后重播并删除。
原⼦DDL ⽀持类型
• DROP TABLES , all tables dropped or none
• DROP SCHEMA, all entities in the schema are dropped, or none
• Note that atomic DDL statements will be rolled back or committed even in case of crash, e.g. RENAME TABLES
• CREATE TABLE would be successfully committed or rolled back (no orphan ibd left)
• TRUNCATE TABLE (including InnoDB tables with FTS AUX tables) would be successfully committed or rolled back
• RENAME TABLES, all or none
• ALTER TABLE successful or not done
示例
结论
在MySQL8.0之前,alter table 操作在server crash的情况下,会遗留.frm,.ibd文件。MySQL8.0 能实现原⼦DDL(包括 DROP TABLE, DROP SCHEMA, CREATE TABLE, TRUNCATE TABLE, ALTER TABLE),alter table 操作,在server crash的情况下,不会遗留.frm,.ibd临时文件。让我们⼀起期待MySQL8.0 GA的到来吧!
参考:
https://www.youtube.com/watch?v=jM53hSU9L70
https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html
转载于:https://www.cnblogs.com/DataArt/p/10095653.html
MySQL 8.0新特性之原子DDL相关推荐
- mysql 8.0基于事务ddl_MySQL8.0新特性——支持原子DDL语句
MySQL 8.0开始支持原子数据定义语言(DDL)语句.此功能称为原子DDL.原子DDL语句将与DDL操作关联的数据字典更新,存储引擎操作和二进制日志写入组合到单个原子事务中.即使服务器在操作期间暂 ...
- MySQL 8.0新特性--CTE Recurive(二)
上一篇介绍了CTE的基本用法,参考MySQL 8.0新特性--CTE(一),本篇再来介绍一下CTE Recurive递归. 1.什么是CTE Recurive? A recursive common ...
- mysql8.0创建属性,MySQL 8.0新特性 — 管理端口的使用简介
前言 下面这个报错,相信大多数童鞋都遇见过:那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现"too many connection"报错,超级用户root ...
- mysql3819错误,MySQL 8.0新特性 ― 检查性约束的使用简介
前言 在MySQL 8.0版本中,引入了一个非常有用的新特性 ― 检查性约束,它可以提高对非法或不合理数据写入的控制能力:接下来我们就来详细了解一下. 检查性约束 创建.删除与查看 (1)可以在建表时 ...
- MySql 8.0新特性:窗口函数
MySQL8.0新特性:窗口函数 1.1 使用窗口函数前后对比 假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额: CREATE TABLE sales( id INT PRIM ...
- sql server的密码采用自带什么密码技术存储_【技术分享】浅谈MYSQL 8.0新特性
于树文 云技术管理处 01 MySQL 8.0中添加的功能 1. 新的系统字典表 整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储. 2. 支持DDL 原子操作 I ...
- mysql+8.0+新特性_MySQL 8.0备受瞩目的新特性大放送!
原标题:MySQL 8.0备受瞩目的新特性大放送! 作者介绍 杨奇龙,目前就职于有赞科技,负责数据库运维工作,熟悉MySQL性能优化.故障诊断.性能压测. MySQL于 2016-09-12正式发布8 ...
- mysql 6.0 新特性 2014_MySQL 各版本的特性
Mysql5.5 特性,相对于Mysql5.1 性能提升 默认存储引擎更改为 InnoDB引擎.具有提交.回滚和宕机恢复功能 和ACID兼容. 行级锁. 表与索引存储在表空间中, 表大小无限制. 支持 ...
- mysql8.0 的新特性_What's New In MySQL 8.0(MySQL 8.0 新特性)
由于8.0内有很多C++11特性.需要gcc4.8版本以上.Rhel6系列默认gcc是4.7.在安装gcc6.1之后仍然检查不过. 原因可能是6.1版本不一定高于4.7,暂不讨论.鉴于升级gcc耗时较 ...
最新文章
- 聊天机器人革命即将到来 开发者入局需谨慎
- 区块链研习 | 什么是区块链的链外交易和链内交易
- 【TensorFlow】ValueError: Shape must be rank 1 but is rank 0 for ' ’ with input shapes: [].问题
- linux监控是否运行脚本,监控网站是否可以正常打开的Shell脚本分享
- P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
- c++读取utf8文件_Node.js 进阶之 fs 文件模块学习
- bzoj1974 [Sdoi2010]代码拍卖会 循环+背包
- (195)FPGA上电后IO的默认状态(ISE软件默认为1)
- VideoMemory, SystemMemory And AGPMemory
- CLOSE_WAIT状态的原因与解决方法(2)
- 【图像配准】基于matlab互信息图像配准【含Matlab源码 1210期】
- ubuntu 截图快捷键设置
- Echarts实现以秒为单位的动态三条折线图显示
- winform设置默认打印机
- 一篇文章搞懂【Emmet】语法规则(前端必备技能)
- 国家涉及身份安全新规解读 | 《关键信息基础设施安全保护要求》
- 第 11 场双周赛-5089. 安排会议日程(双指针)
- Batch Normalization论文读后感
- 阴阳鱼之周期性振幅,与面积
- 上传多组带标题的图片