8.4. 写入 Skews


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

Data Grid 自动执行写入框架检查,以确保特定事务中的 REPEATABLE_READ 隔离级别的数据一致性。这允许数据仓库检测并回滚其中一个事务。

LOCAL 模式下运行时,写入 skew 检查依赖于 Java 对象引用来比较区别,它提供了可靠的技术来检查写入 skews。

8.4.1. 在 pessimitic 事务中的密钥强制写入锁定

为避免使用 pessimistic 事务写入 skews,使用 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
}
// 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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.