Mysql 并行查询-选择和更新-选择太快或更新太慢问题
我在几个线程中启动了一个脚本,它从数据库中获取一些数据Mysql 并行查询-选择和更新-选择太快或更新太慢问题,mysql,sql,concurrency,transactions,Mysql,Sql,Concurrency,Transactions,我在几个线程中启动了一个脚本,它从数据库中获取一些数据 SELECT * from `base` LIMIT 1 where `used` = 0 然后更新这一行 UPDATE `base` set `used` = 1 where id ... 问题是:并行线程通常从表中获取相同的记录。无法及时更新以避免此问题 我该怎么办?谢谢你,戈登·林诺夫! 我应该使用锁表TABLEWRITE,然后解锁表 (1)用您正在使用的数据库标记您的问题。(2) 了解数据库中的表锁定。对于Postgres,我
SELECT * from `base` LIMIT 1 where `used` = 0
然后更新这一行
UPDATE `base` set `used` = 1 where id ...
问题是:并行线程通常从表中获取相同的记录。无法及时更新以避免此问题
我该怎么办?谢谢你,戈登·林诺夫!
我应该使用锁表
TABLE
WRITE,然后解锁表 (1)用您正在使用的数据库标记您的问题。(2) 了解数据库中的表锁定。对于Postgres,我认为您应该使用select。。。对于update skip locked
,使用可怕的非标准反勾表示您正在使用MySQL。最坏的情况是,使用事务,最好将其重写为单个语句,这样您就可以隐式使用一个语句,或者重写您的处理过程,这样就不再需要它了。