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

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

【问题讨论】:

    标签: spring hibernate spring-data-jpa deadlock vertica


    【解决方案1】:

    没有。

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

    行级锁属于 OLTP 数据库。

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

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

    更新是删除后插入。

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

    【讨论】:

    • 完美的解释!!!
    猜你喜欢
    • 2018-12-05
    • 2014-03-23
    • 2015-08-05
    • 2015-10-12
    • 2011-11-04
    • 1970-01-01
    • 2011-03-12
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多