10.4. 写写 Skews


当两个事务独立并同时读取和写入同一密钥时,会发生写偏移。写偏移的结果是,两个事务都成功向同一键提交更新,但使用不同的值。

Data Grid 会自动执行写偏移检查,以确保在最佳事务中对 REPEATABLE_READ 隔离级别的数据一致性。这样,Data Grid 可以检测和回滚其中一个事务。

当以 LOCAL 模式运行时,写入偏移检查依赖于 Java 对象引用来比较差异,它提供了可靠的技术来检查写偏移。

10.4.1. 在 pessimitic 事务中强制强制写入锁定

为了避免带有 pessimistic 事务的写偏移,使用 Flag.FORCE_WRITE_LOCK 锁定密钥。

注意
  • 在非事务缓存中,Flag.FORCE_WRITE_LOCK 无法正常工作。get () 调用读取键值,但不会远程获取锁定。
  • 您应该使用 Flag.FORCE_WRITE_LOCK,并在稍后在同一事务中更新实体的事务。

将以下代码片段与 Flag.FORCE_WRITE_LOCK 示例进行比较:

// begin the transaction
if (!cache.getAdvancedCache().lock(key)) {
   // abort the transaction because the key was not locked
} else {
   cache.get(key);
   cache.put(key, value);
   // commit the transaction
}
Copy to Clipboard Toggle word wrap
// begin the transaction
try {
   // throws an exception if the key is not locked.
   cache.getAdvancedCache().withFlags(Flag.FORCE_WRITE_LOCK).get(key);
   cache.put(key, value);
} catch (CacheException e) {
   // mark the transaction rollback-only
}
// commit or rollback the transaction
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat