Привет,
Я хочу получить данные в базу данных на многоядерной системе с активным WAL, используя JDBC. Я думал о создании нескольких потоков в своем приложении для параллельной вставки данных.
Если приложение имеет несколько потоков, мне придется увеличить уровень изоляции до Repeatable Read
, который в базах данных MVCC должен быть сопоставлен с Snapshot isolation
.
Если бы я использовал один поток, мне не понадобились бы уровни изоляции. Насколько я знаю, большинство Snapshot isolation
баз данных анализируют наборы записей всех транзакций, которые могут иметь конфликт, а затем откатывают все, кроме одной из реальных конфликтующих транзакций. Более конкретно я говорю об Oracle, InnoDB и PostgreSQL.
1.) Является ли этот анализ наборов записи дорогим?
2.) Является ли хорошей идеей многопоточность вставок для повышения общей пропускной способности? Реальный конфликт почти невозможен из-за того, что прикладной уровень передает потоки бесконфликтного материала. Но база данных должна быть подстраховкой.