你好,
我想使用 JDBC 将数据输入到具有原生 WAL 的多核系统上的数据库中。我正在考虑在我的应用程序中生成多个线程以并行插入数据。
如果应用程序有多个线程,我将不得不增加Repeatable Read
MVCC 数据库上应该映射到的隔离级别Snapshot isolation
。
如果我使用一个线程,我就不需要隔离级别。据我所知,大多数Snapshot isolation
数据库都会分析所有可能发生冲突的事务的写入集,然后回滚除一个真正的冲突事务之外的所有事务。更具体地说,我说的是 Oracle、InnoDB 和 PostgreSQL。
1.) 这种对写集的分析是否昂贵?
2.) 多线程插入以获得更高的总吞吐量是个好主意吗?真正的冲突几乎是不可能的,因为应用层为线程提供了无冲突的东西。但是数据库应该是一个安全网。