tidb 内存悲观锁

TiKV 在 v6.0.0 中引入了内存悲观锁功能。开启内存悲观锁功能后,悲观锁通常只会被存储在 Region leader 的内存中,而不会将锁持久化到磁盘,也不会通过 Raft 协议将锁同步到其他副本,

因此可以大大降低悲观事务加锁的开销,提升悲观事务的吞吐并降低延迟。当内存悲观锁占用的内存达到 Region 或节点的阈值时,加悲观锁会回退为使用 pipelined 加锁流程。

当 Region 发生合并或 leader 迁移时,为避免悲观锁丢失,TiKV 会将内存悲观锁写入磁盘并同步到其他副本。

内存悲观锁实现了和 pipelined 加锁类似的表现,即集群无异常时不影响加锁表现,但当 TiKV 出现网络隔离或者节点宕机时,事务加的悲观锁可能丢失。

如果业务逻辑依赖加锁或等锁机制,或者即使在集群异常情况下也要尽可能保证事务提交的成功率,应关闭内存悲观锁功能。

该功能默认开启。如要关闭,可修改 TiKV 配置:
内存悲观锁(默认为开启):
show config where type='tikv' and name in ('pessimistic-txn.in-memory','pessimistic-txn.pipelined');

#关闭

set config tikv `pessimistic-txn.in-memory`=false;
set config tikv `pessimistic-txn.pipelined`=false;

posted @ 2022-08-25 11:08  东哥加油!!!  阅读(127)  评论(0编辑  收藏  举报