9.3. 事务锁定


9.3.1. pessimistic 事务缓存

从锁定收购角度来看,在编写密钥时,基于密钥的 pess 事务会获得锁定。

  1. 将锁定请求发送到主所有者(可以是显式锁定请求或操作)
  2. 主要所有者会尝试获取锁定:

    1. 如果成功,它会发回一个正回复;
    2. 否则,会发送负回复,事务会被回滚。

例如:

transactionManager.begin();
cache.put(k1,v1); //k1 is locked.
cache.remove(k2); //k2 is locked when this returns
transactionManager.commit();

cache.put (k1,v1) 返回时,k1 被锁定,集群中的任何位置都没有运行其他事务。仍可读取 k1。当事务完成后(提交或回滚)时,k1 上的锁定会被释放。

注意

对于条件操作,验证在 originator 中执行。

9.3.2. 最佳事务缓存

使用最佳交易锁定会在事务准备时获取,并且仅持有事务提交(或回滚)的时间。这与 5.0 默认锁定模型不同,在写入时获取本地锁定,并在准备期间获取集群锁定。

  1. 准备发送给所有所有者。
  2. 主要所有者试图获取所需的锁定:

    1. 如果锁定成功,它将执行写入偏移检查。
    2. 如果写入偏移检查成功(或被禁用),请发送正回复。
    3. 否则,会发送负回复,并回滚事务。

例如:

transactionManager.begin();
cache.put(k1,v1);
cache.remove(k2);
transactionManager.commit(); //at prepare time, K1 and K2 is locked until committed/rolled back.
注意

对于条件命令,在原始卷中仍然会出现验证。

9.3.3. 我需要什么 - pessimistic 或 optimistic transaction?

从用例的角度来看,当多个事务同时运行的多个事务之间没有大量竞争时,应使用最佳事务。这是因为,如果数据在读取的时间和提交的时间(启用了写偏移检查)之间有所变化,则最佳事务回滚。

另一方面,当键和事务回滚非常竞争时,pessimistic 事务可能更适合。pessimistic 事务的性质更加昂贵:每个写入操作都可能涉及对锁定收购的 RPC。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.