MySQL-8.0.x DDL 原子性
【1、mysql-8.0.x 新特性之 DDL 原子性】
在没有 DDL 原子性之前 DBA 对 DDL 语句基本上是无能为力的,比如说 DDL 执行的过程中停电了,这下就只有天知道了。实现上最终的愿景还是希望得到一个确定的结果,要么成功了,要么失败了。mysql-8.0.x 带来了 DDL 原子性
【2、mysql-5.6.x DDL 操作的表现】
mysql-5.6.x 并不保证原子性,所以当我们一次 drop 多个表的时候就有可能遇到部分成功的情况
mysql> select @@version; +-----------+ | @@version | +-----------+ | 5.6.44 | +-----------+ 1 row in set (0.00 sec) -- mysql-5.6.44 mysql> show tables; +------------------+ | Tables_in_tempdb | +------------------+ | t | +------------------+ 1 row in set (0.00 sec) -- 库中只有一个表 t mysql> drop table t,t_not_exists; ERROR 1051 (42S02): Unknown table 'tempdb.t_not_exists' -- 尝试一次删除多张表 t & t_not_exists mysql> show tables; Empty set (0.00 sec) -- 虽然 t_not_exists 表并不存在,但是 t 还是被删除了
【3、mysql-8.0.x DDL 操作原子性】
mysql-8.0.x 提供了原子性支持,保证了 DDL 操作要么全部成功、要么全部失败。
mysql> select @@version; +-----------+ | @@version | +-----------+ | 8.0.16 | +-----------+ 1 row in set (0.00 sec) mysql> show tables; +------------------+ | Tables_in_tempdb | +------------------+ | t | +------------------+ 1 row in set (0.00 sec) mysql> drop table t ,t_not_exists; ERROR 1051 (42S02): Unknown table 'tempdb.t_not_exists' mysql> show tables; +------------------+ | Tables_in_tempdb | +------------------+ | t | +------------------+ 1 row in set (0.00 sec) -- 因为对 t_not_exists 的操作失败了,所以整个 DDL 都回滚了;这也就解释了为什么 t 表还在。
【4、mysql-5.7.x 也表现出了 DDL 原子性的支持】
之所以说 5.7 是看起来像是支持 DDL 原子性,是因为在官方文档上并没有提到它支持,但是它表现了一些与 8.0 类似的行为能力。
mysql> select @@version; +------------+ | @@version | +------------+ | 5.7.26-log | +------------+ 1 row in set (0.00 sec) mysql> show tables; +------------------+ | Tables_in_tempdb | +------------------+ | t | +------------------+ 1 row in set (0.00 sec) mysql> drop table t ,t_not_exists; ERROR 1051 (42S02): Unknown table 'tempdb.t,tempdb.t_not_exists' -- 两者在错误信息上还是有一定的差别 -- 8.0 会报 t_not_exists 表不存在 -- 5.7 会报 t 和 t_not_exists 都不存在 mysql> show tables; +------------------+ | Tables_in_tempdb | +------------------+ | t | +------------------+ 1 row in set (0.00 sec)
引用自:https://www.sqlpy.com/blogs/books/1/chapters/12/articles/52
---
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2017-07-16 python--迭代器的实现