медленная вставка sqlite с использованием драйверов jdbc в java - PullRequest
11 голосов
/ 30 июля 2009

Я только что вставил 1 миллион записей в простую таблицу sqlite с пятью столбцами. В java потребовались колоссальные 18 часов с использованием драйверов jdbc! Я сделал то же самое в python2.5, и это заняло меньше минуты. Скорость запросов на выбор, кажется, хорошо. Я думаю, что это проблема с драйверами JDBC.

Есть ли более быстрый драйвер для sqlite3 в Java?

Скорость вставки большого количества строк важна для моего сценария миграции схемы, и я бы предпочел не использовать внешний сценарий для выполнения миграций, если мне это не нужно.

РЕДАКТИРОВАТЬ: исправлено с connection.setAutoCommit (false); спасибо Марку Рушакову за то, что он подсказал мне решение :)

Ответы [ 2 ]

22 голосов
/ 30 июля 2009

Были ли ваши запросы автоматически отправлены? Это может объяснить, почему это заняло так много времени. Попробуйте поместить их в начало / конец, чтобы не выполнять полный коммит для каждой вставки.

Эта страница объясняет начало / конец транзакции, в то время как FAQ касается вставок / автокоммитов.

2 голосов
/ 05 июня 2012

Если вы хотите еще больше оптимизировать, вы можете посмотреть на пакетные запросы вставки вместе. Таким образом, вы можете изменить 1 миллион вставок на 1000 вставок по 1000 партий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...