Производительность Sqlite не выигрывает от массовой вставки. Простое выполнение вставок отдельно (но в рамках одной транзакции!) Обеспечивает очень хорошую производительность.
Вы можете выиграть от увеличения размера кэша страниц sqlite; это зависит от количества индексов и / или порядка, в котором вставляются данные. Если у вас нет индексов, для чистой вставки размер кэша, вероятно, не будет иметь большого значения.
Обязательно используйте подготовленный запрос, а не создайте план запроса в самом внутреннем цикле. Чрезвычайно важно обернуть операторы в транзакции, поскольку это позволяет избежать необходимости синхронизации файловой системы базой данных на диске - в конце концов, частично записанная транзакция все равно атомарно прерывается, а это означает, что все функции fsync () задерживаются до завершения транзакции. .
Наконец, индексы ограничат вашу производительность вставки, так как их создание стоит довольно дорого. Если вы действительно имеете дело с большим количеством данных и начинаете с пустой таблицы, возможно, было бы полезно добавить индексы после данных - хотя это не имеет большого значения.
Да, и вы можете получить один из этих твердотельных накопителей Intel X25-E и убедиться, что у вас есть контроллер AHCI; -).
Я поддерживаю приложение с базами данных sqlite с приблизительно 500000000 строками (распределенными по нескольким таблицам) - большая часть которых была массово вставлена с использованием простого старого begin-insert-commit: оно прекрасно работает.