如何实现行级锁定

问题描述

这不适用于行级锁定 我只想知道是否可以选择像这样的行

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...