使用vertica数据库系统获取java jpa的行级锁

Posted

技术标签:

【中文标题】使用vertica数据库系统获取java jpa的行级锁【英文标题】:Using the vertica database system to get row level locks for java jpa 【发布时间】:2021-11-10 12:59:06 【问题描述】:

当多个线程尝试更新同一个表中的不同记录时,我收到死锁 X。在使用带有 Java JPA 的 Vertica DB 系统时,是否有一种方法可以获取行级锁而不是表级锁?

【问题讨论】:

【参考方案1】:

没有。

Vertica 是一个专用的大数据数据库,在 15 年前设计时考虑了 OLAP 工作负载 - 不利于对 OLTP 工作负载的支持。

行级锁属于 OLTP 数据库。

Vertica 可以毫无压力地提交和回滚数百万行的事务。为了能够做到这一点,它必须惩罚对单行事务的支持。

支持这种行为的设计的一部分是它是一个只插入的数据库。删除是稍后在后台解决的删除标记;该行仍然存在,标记为已删除。在后台运行碎片整理期间,稍后,已删除的行会被物理删除。

更新是删除后插入。

在事务期间,每个 Delete 事务都会在受影响的表上获得并保持一个排他的“X”锁。

【讨论】:

完美的解释!!!

以上是关于使用vertica数据库系统获取java jpa的行级锁的主要内容,如果未能解决你的问题,请参考以下文章

如何获取我的 SQL/Vertica 表中每个日期的上个月数据

如何在 vertica 中获取最后发布的序列 ID?

Vertica SQL 用于按列获取数据

如何使用 Apache Apex 将数据从 DB2 批量摄取到 Vertica

java 使用jpa获取的date日期后面会加上.0 怎么解决

Vertica:将字符串拆分为数组并将其分组以获取一组唯一值?