读数据为什么不需要加锁?

读数据为什么不需要加锁?

3 个赞

@论坛小助手

1 个赞

在OceanBase数据库中,读数据不需要加锁的原因是在读已提交(Read Committed)隔离级别下,SELECT语句执行时只会读取到在此之前已经提交事务的数据。这意味着读操作不会阻塞其他事务的写操作,也不会被其他写操作阻塞,从而避免了读操作需要加锁的需求。此外,对于UPDATEDELETESELECT FOR UPDATE等更新操作,在搜索目标行时的行为与SELECT相同,即只能找到在语句开始前已经提交的行版本,如果该版本不满足更新操作的谓词条件,则直接跳过该行;如果满足条件,才尝试更新该行。这说明即使在没有加锁的情况下,数据库也能保证数据的一致性和完整性。

具体信息可参考以下文档:

  1. 锁表
  2. 使用 MySQL 租户做常见数据库开发

蒙了

主动发起读数据,为什么要加锁呢