我们在数据库表上遇到了一些规律性争用,并想评估一些不同的选项来解决这个问题。
为此,我需要在测试用例中重现具有可重复可靠性的表(任何表)上的争用。
我正在考虑的方法是反转锁的语义(例如java.util.concurrent.locks.ReentrantLock
)并在表上开始写入时释放锁,允许所有读取在写入开始时发生。
因此,一个写入器线程持有锁,直到在对表执行插入操作之前不久,然后释放锁,多个读取器线程将尝试对同一个表运行选择语句。
想知道是否对这种方法有任何想法,或者是否有一种更简单的方法可以以 100% 的可靠性重现数据库表上的争用。
谢谢