您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

深聊MySQL,从入门到入坟之:MySQL竟然也有后悔药!!!

时间:03-19来源:作者:点击数:

1、引言

小屌丝:鱼哥, 请问,如何防止我手抖, 误删库。

小鱼:看样子你今天是来搞事情!

小屌丝:我就是为了防止自己手抖…颤抖…

小鱼:请问一个妹子去药店,问医师要"后悔药",知道是啥不?

小屌丝:额,鱼哥,果然是老司机啊, 你这要飙车了~

小鱼:扯淡, 我就是联想一下而已…而已…

扯远了,不过,别说,还真有后悔药,就是防止删库, 蹲牢的那种。

今天我们来搞一搞MySQL的后悔药

2、5种后悔药

2.1 limit

我们在执行delete或者update操作时, 如果不是十**(被)(逼)(无)(奈)**,

还是在语句的最后,加上个limit。防止看铁窗

执行语句

delete from tesst_table where  username != '小明'  limit 100; 

小明从小就是明星。

好处

  • .降低写错SQL的代价

如果不添加limit,可能删除所有数据,如果添加limit,则指删除100条;

  • SQL执行效率提高

如果第一条就命中目标 return, 没有 limit 的话,还会继续执行扫描表

  • 避免了长事务

delete 执行时,如果 age 加了索引,MySQL 会将所有相关的行加写锁和间隙锁,所有执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。

  • 避免因为执行大数据量,把CPU顶满

如果你删除数据量很大时,不加 limit 限制一下记录数,容易把 CPU 打满,导致越删越慢的(小鱼就干过一次这事)

2.2 先测试后生产

以下三点,很重要:

  • 变更 SQL 操作先在测试环境测试,避免有语法错误就放到生产上了
  • 变更 SQL 操作需要写明详细操作步骤,尤其有依赖关系的时候,如:先修改表结构再补充对应的数据。
  • 变更 SQL 操作要有回滚方案,并在上生产前,review 对应变更 SQL。

2.3 删除前,先备份

为了防止看铁窗,咱们还是按规矩来:

修改或者删除数据,在执行sql前,一定要备份…备份…备份…

如果删数据, 不备份,想想都有啥后果:

  • 轻则 boss “指导” 你
  • 重则 牢头 “指导” 你

2.4 删除前,先查询

修改或者删除数据,在执行sql前,一定要where一下,确认是自己想要的,然后再delete 或者update

2.5 修改时, begin+commit

在执行SQL修改数据时, 建议 使用begin + commit事务的习惯

例子:

begin:

update test_table set sort = 100000
where ext_name like '%小明';

commit:

3、 总结

小屌丝:鱼哥, 有了这5种后悔药, 再也不怕自己手抖了

小鱼: 养成好习惯,不仅方便他人,还方便自己。

小屌丝:鱼哥, 那有没有MySQL 优化的内容呢?

小鱼: 有啊 ,难道你不记得,我专门写过这篇MySQL优化?

就是这篇《关于MySQL性能优化方式,这一篇就够!》。

而MySQL专栏,又包含:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门