完蛋,公司被一条 update 语句干趴了!
Hollis
共 6621字,需浏览 14分钟
· 2021-10-02
昨晚在群划水的时候,看到有位读者说了这么一件事。
大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩了,被老板教训了一波
这次我们就来看看:
-
为什么会发生这种的事故? -
又该如何避免这种事故的发生?
select ... from
语句,其他语句都会被锁住不能执行,业务会因此停滞,接下来等着你的,就是老板的挨骂。
sql_safe_updates
参数设置为 1,开启安全更新模式。
官方的解释:
If set to 1, MySQL aborts UPDATE or DELETE statements that do not use a key in the WHERE clause or a LIMIT clause. (Specifically, UPDATE statements must have a WHERE clause that uses a key or a LIMIT clause, or both. DELETE statements must have both.) This makes it possible to catch UPDATE or DELETE statements where keys are not used properly and that would probably change or delete a large number of rows. The default value is 0.
-
使用 where,并且 where 条件中必须有索引列; -
使用 limit; -
同时使用 where 和 limit,此时 where 条件中可以没有索引列;
-
使用 where,并且 where 条件中必须有索引列; -
同时使用 where 和 limit,此时 where 条件中可以没有索引列;
force index([index_name])
可以告诉优化器使用哪个索引,以此避免有几率锁全表带来的隐患。
force index([index_name])
可以告诉优化器使用哪个索引。
最近有很多人问,有没有读者交流群,想知道怎么加入。
最近我创建了一些群,大家可以加入。交流群都是免费的,只需要大家加入之后不要随便发广告,多多交流技术就好了。
目前创建了多个交流群,全国交流群、北上广杭深等各地区交流群、面试交流群、资源共享群等。
有兴趣入群的同学,可长按扫描下方二维码,一定要备注:全国 Or 城市 Or 面试 Or 资源,根据格式备注,可更快被通过且邀请进群。
往期推荐
千万不要再这样创建集合了!极容易内存泄露!
80 后该退出 IT 行业?网友怒了
Win11 神优化!CPU、内存占用暴降,速度飞快让人秒弃 Win10
评论