使用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 表中每个日期的上个月数据
如何使用 Apache Apex 将数据从 DB2 批量摄取到 Vertica