小屌丝:鱼哥, 请问,如何防止我手抖, 误删库。
小鱼:看样子你今天是来搞事情!
小屌丝:我就是为了防止自己手抖…颤抖…
小鱼:请问一个妹子去药店,问医师要"后悔药",知道是啥不?
小屌丝:额,鱼哥,果然是老司机啊, 你这要飙车了~
小鱼:扯淡, 我就是联想一下而已…而已…
扯远了,不过,别说,还真有后悔药,就是防止删库, 蹲牢的那种。
今天我们来搞一搞MySQL的后悔药
我们在执行delete或者update操作时, 如果不是十**(被)分(逼)把(无)握(奈)**,
还是在语句的最后,加上个limit。防止看铁窗
执行语句
delete from tesst_table where username != '小明' limit 100;
小明从小就是明星。
好处
如果不添加limit,可能删除所有数据,如果添加limit,则指删除100条;
如果第一条就命中目标 return, 没有 limit 的话,还会继续执行扫描表
delete 执行时,如果 age 加了索引,MySQL 会将所有相关的行加写锁和间隙锁,所有执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。
如果你删除数据量很大时,不加 limit 限制一下记录数,容易把 CPU 打满,导致越删越慢的(小鱼就干过一次这事)。
以下三点,很重要:
为了防止看铁窗,咱们还是按规矩来:
修改或者删除数据,在执行sql前,一定要备份…备份…备份…
如果删数据, 不备份,想想都有啥后果:
修改或者删除数据,在执行sql前,一定要where一下,确认是自己想要的,然后再delete 或者update
在执行SQL修改数据时, 建议 使用begin + commit事务的习惯
例子:
begin:
update test_table set sort = 100000
where ext_name like '%小明';
commit:
小屌丝:鱼哥, 有了这5种后悔药, 再也不怕自己手抖了
小鱼: 养成好习惯,不仅方便他人,还方便自己。
小屌丝:鱼哥, 那有没有MySQL 优化的内容呢?
小鱼: 有啊 ,难道你不记得,我专门写过这篇MySQL优化?
就是这篇《关于MySQL性能优化方式,这一篇就够!》。
而MySQL专栏,又包含: