[英]InnoDB: Update a lock timeout on table and select the result efficiently
我有一个带有锁定超时列的InnoDB表。 如果此列为null,则没有锁,否则,该锁将根据该列中的时间戳而超时。
我遇到的问题是此表中有很多行,并且每分钟都在处理该表中的许多行,但是当前正在按照该模型进行处理:
1. select rows to be processed
2. iterate over rows to be processed in Java
a. Try to acquire a lock on row
b. if lock acquired, process row and continue; else continue
这会很快变得效率低下,所以如果我可以尝试在所有要处理的行上获取一个锁,然后返回一次或几笔事务都获取了该锁的行的结果集,那将是很好的选择更有效的交易。
你会推荐什么?
使用sql中的where子句,仅选择可以获取锁的行
where lock_timeout is null
另外,我希望它有多个线程,您可以在整个代码段中放置一个互斥体或其他东西。 从选择行,直到形成锁,所有的一切。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.