Как ускорить вставку SQlite3 с помощью Perl API - PullRequest
4 голосов
/ 16 января 2012

Я DBD :: SQLite для вставки некоторых данных в SQlite3 db с использованием perl.

Я заметил, что для вставки требуется много времени (вставка 35k строк).Есть ли способ сделать это быстрее.

Оптимизация важна для меня, а не синхронизация данных.Как я могу оптимизировать его с помощью Perl?

Пожалуйста, помогите.

Ответы [ 4 ]

9 голосов
/ 16 января 2012

Попробуйте выполнить этот оператор перед вставкой:

PRAGMA synchronous = OFF

См. Документацию SQLite для дополнительной информации .

Кроме того, как отмечает Ilion, попробуйте prepare() оператор только один раз, а затем повторно execute() несколько раз с различными значениями связывания. Отключение AutoCommit и затем явная фиксация только каждой вставленной строки N также может помочь для некоторых значений N.

5 голосов
/ 16 января 2012

Убедитесь, что вы используете подготовленные операторы, чтобы не нужно было анализировать каждую вставку.Также попробуйте сгруппировать операторы вставки, заключив их в Begin ... Commit , как описано в этом FAQ .

1 голос
/ 16 января 2012

Убедитесь, что для вашего соединения установлено значение AutoCommit => 0.Гарантировано, фиксируйте явно после каждой партии вставок.

0 голосов
/ 17 января 2012

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

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