问题描述
这不适用于行级锁定 我只想知道是否可以选择像这样的行
select * from table where folder like %344443%**
然后使用
更新行update table set folder = '{"bin":"44456","venv":4366}' where id = 'i-instanceid'
解决方法
你不能。
问题是UPDATE
必须扫描整个表以找到需要更改的行。这样做会锁定整个表。
不要将要搜索的内容埋入JSON字符串中。让它们自己作为索引列。这样一来,您可以锁定一行,并且可以更快地运行更新。
或查看索引部分JSON列。这种情况仍在发展。您正在使用什么版本的MySQL?
此外,为什么要先选择ID,然后再进行更新?您不能简单地进行更新吗?如果您实际上是在“交易”中执行其他操作,请这样说。您可能需要SELECT
。届时,它应该是SELECT ... FOR UPDATE
。