当前位置: 首页 > article >正文

mysql DDL可重入讨论

mysql的bug:当执行 MySQL online DDL 时,期间如有其他并发的 DML 对相同的表进行增量修改,比如 update、insert、insert into … on duplicate key、replace into 等,且增量修改的数据违背唯一约束,那么 DDL 最后都会执行失败,报错主键冲突。

这里的“增量修改的数据违背唯一约束”,从实践来看即使insert into on duplicate执行成功,依然有可能触发DDL报错,并非一定要DML执行失败。

参考:

https://blog.csdn.net/Tony_stark_L/article/details/127596879

解决方案:

  • 重试DDL
  • 使用第三方工具 pt-osc 或者 gh-ost 执行在线 DDL
  • 在 DDL 语句中指定 ALGORITHM=COPY,但该过程中只允许查询,不允许写入

方案2要引入额外的工具,方案3的话mysql内部要新建临时表,多占一倍空间,且改表结构时不能写入对业务影响也较大。

故选择方案1,建议确保DDL是可重入的,可以做工具完成DDL的可重入检查。


http://www.kler.cn/a/522051.html

相关文章:

  • 《一文读懂!Q-learning状态-动作值函数的直观理解》
  • 【C++ 真题】P1706 全排列问题
  • three.js用粒子使用canvas生成的中文字符位图材质
  • 【Jave全栈】Java与JavaScript比较
  • Python实现U盘数据自动拷贝
  • 【PowerQuery专栏】PowerQuery实现数据库访问系列函数
  • 面试题-Java集合框架
  • 【C++高并发服务器WebServer】-9:多线程开发
  • 图形编辑器基于Paper.js教程22:在图形矢量编辑器中,实现两个元素的差集,交集,并集,切割
  • 若依基本使用及改造记录
  • 【C++】0xc0000005写入位置时发生访问冲突解决方法
  • 基于51单片机和ESP8266(01S)、LCD1602、DS1302、独立按键的WiFi时钟
  • sprinboot车辆充电桩
  • 面试场景问题集合
  • AI大模型DreamShaper XL v2系列分享,适用于Stable Diffusion和ComfyUI
  • 【PySide6快速入门】ui文件的使用
  • 【机器学习】自定义数据集 使用paddlepaddle框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • Dismissible组件的用法
  • 【搜索回溯算法】:BFS的魔力--如何使用广度优先搜索找到最短路径
  • WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证
  • 病理AI领域基础模型及多实例学习方法的性能评估|顶刊精析·25-01-27
  • 算法刷题Day29:BM67 不同路径的数目(一)
  • 前端性能优化指标 - DCL - 计算 DCL 时间(使用 JavaScript、使用 Chrome DevTools)
  • LeetCode讲解篇之88. 合并两个有序数组
  • C语言算法实现:探索经典排序与查找算法的奥秘
  • 在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(下)