在 MariaDB 中,默认的隔离级别是可重复读。我理解这意味着当我打开事务时,我不会看到任何对数据库的并发写入。
我还遇到一种情况,需要确保不对行进行并发更改。为此,我可以获得独占锁。我的问题实际上是关于两者如何结合使用。
如果我在更新事务中获取锁,则意味着我可能打开事务并被阻止,因为另一个进程具有排它锁,当我获取锁时,可能已对我看不到但可能需要的行进行了更改要知道。
我对于更改隔离级别犹豫不决,因为这是一个特定的场景。
目前,我已决定在开始更新事务之前获取锁,但这使得释放锁变得更加成问题,因为一旦我的事务提交,锁就不会被释放。我错过了一些明显的东西吗?所以基本上我打开一个事务 SELECT FOR UPDATE。然后打开第二个事务来进行更新。
半相关:以上是否意味着当事务级别是可重复读取时乐观锁定是一种禁忌?乐观锁定涉及检查版本/时间戳以确保自最初读取以来没有其他事务对其进行修改。通过可重复读取,在事务完成之前我们无法看到其他事务,这违背了目的。或者这只是意味着我应该在事务之外获取锁?