mysql开启并行执行update_MySQL执行update操作后引起的问题及解决

本文详细介绍了在MySQL中,由于研发人员误将`where`子句写成`and`,导致整表更新的问题。在执行update操作后立即中断(如使用ctrl+c),是否能够避免数据脏写。通过实验,发现对于InnoDB存储引擎,未完成的事务会回滚,数据保持一致;而对于MyISAM引擎,则可能部分更新数据。最后,文章探讨了MySQL的事务和autocommit模式对这种误操作的影响。
摘要由CSDN通过智能技术生成

简介

Part1:写在最前

上班正忙的不可开交呢,一个消息过来,得知研发人员误操作MySQL数据库了....不带where条件,整表更新Orz,还让不让人好好活了,心中一万只XXX啊~无奈,分清事情的轻重,优先处理这起事故。

在简单沟通后,了解到事故的原因是研发人员使用update忘记带where条件。这本身没什么诡异的,诡异的是在决定要不要进行恢复的时候,笔者稍微犹豫了一下,因为看起来是不需要恢复的,那么具体是什么样的情况呢?

Part2:危险场景再现

研发人员update使用了错误的语法,本意是update helei3 set a='1' where b='a';

结果写成了update helei3 set a='1' and b='a';

这样的话使得helei3这张表的a列被批量修改为0或1。

过了几秒钟,发现写错并且已经敲了回车后,此时update语句还没有更新完,立即ctrl+c

那么数据到底有没有被写脏?

复现

Part1:创建所需表

首先我们创建测试表,a列b列均为varchar类型

表中数据如下

Part2:错误语句生成

我们都知道,update的语法是update tablename set col1=val,col2=val2 where xxx;

那么当逗号换成了and,会出现什么样的严重后果呢?

这个时候由于没有where条件,导致整表更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值