完蛋,公司被一条 update 语句干趴了!
大家好,我是小林。
为什么会发生这种的事故?
又该如何避免这种事故的发生?
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])
可以告诉优化器使用哪个索引。评论