mysql DDL可重入讨论

server/2025/1/30 8:25:40/

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.ppmy.cn/server/163017.html

相关文章

【STL】list 双向循环链表的使用介绍

STL中list容器的详细使用说明 一.list的文档介绍二. list的构造函数三.list中的访问与遍历操作四.list中的修改操作4.1 list中的各种修改操作4.2 list的迭代器失效问题 五.list中的其他一些操作 一.list的文档介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器…

PC端实现PDF预览(支持后端返回文件流 || 返回文件URL)

一、使用插件 插件名称:vue-office/pdf 版本:2.0.2 安装插件:npm i vue-office/pdf^2.0.2 1、“vue-office/pdf”: “^2.0.2”, 2、 npm i vue-office/pdf^2.0.2 二、代码实现 // 引入组件 (在需要使用的页面中直接引入&#x…

Web3 与数据隐私:如何让用户掌控个人信息

随着数字化时代的快速发展,互联网已经渗透到我们生活的方方面面,个人数据的收集与使用也变得越来越普遍。与此同时,数据隐私问题逐渐成为全球关注的焦点。传统的互联网平台通常将用户的数据存储在中心化的服务器上,这意味着平台拥…

Android 自定义View时四个构造函数使用详解

该文章我们以自定义View继承TextView为例来讲解 创建自定义View命名MyTextView,并使其继承TextView 1、自定义View时第一个构造函数 // 第一个构造函数主要是在Java代码中声明一个MyTextView时所用 // 类似这种(MyTextView myTextViewnew MyTextView(this);) // 不…

MyBatis-Plus之常用注解

一、TableName 经过一系列的测试,在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在 Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表 由此得出结论, MyBatis-Plus在确…

win11系统,Java web程序连不上数据的的解决办法

买了台新笔记本电脑,把代码和数据考了过来,想着能愉快的写代码了,程序起来发现连不上数据库。 所有的配置翻了一遍,也没发现问题,遂怀疑是系统的问题,原电脑是win10,现电脑是win11,所以晚上冲浪…

人工智能学习框架:深入解析与实战指南

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 随着人工智能(AI)技术的飞速发展,深度学习、强化学习和自然语言处理等领域的应用愈加广…

DeepSeek-R1:强化学习驱动的推理模型

1月20日晚,DeepSeek正式发布了全新的推理模型DeepSeek-R1,引起了人工智能领域的广泛关注。该模型在数学、代码生成等高复杂度任务上表现出色,性能对标OpenAI的o1正式版。同时,DeepSeek宣布将DeepSeek-R1以及相关技术报告全面开源。…