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

Using the vertica database system to get row level locks for java jpa

当许多线程尝试更新同一个 table 中的不同记录时,我收到一个死锁 X。在使用 Vertica 时,有没有一种方法可以获得行级锁而不是 table 级锁使用 Java JPA 的数据库系统?

没有

Vertica 是一个专用的大数据数据库,在 15 多年前设计时就考虑到了 OLAP 工作负载——损害了对 OLTP 工作负载的支持。

行级锁属于 OLTP 数据库。

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

支持此行为的部分设计是它是一个仅插入数据库。删除是稍后在后台解决的删除标记;该行保留,标记为已删除。在后台进行碎片整理 运行 期间,稍后,删除的行将被物理删除。

更新是先删除再插入。

每个 Delete 事务都会在事务期间获取并保持对受影响 table 的独占 'X' 锁。