Автоматическая фиксация отключена перед выполнением пакета, потому что активация автоматической фиксации выполнит фиксацию (т. Е. Дождаться, пока произойдет синхронизация, что означает, что она будет ожидать фактической записи данных в постоянное хранилище, например на жесткий диск) после каждой вставленной строки.
Если автоматическая фиксация равна false, синхронизация не будет выполняться.
Разница в ожидании синхронизации и отсутствии ожидания заключается в том, что данные находятся на жестком диске или в буфере (это может быть буферизованный ввод-вывод или буфер жесткого диска).
Короче говоря, отключение автоматической фиксации дает вам повышение производительности. И я думаю, что по умолчанию автоматическая фиксация включена.
Другой способ оптимизации
Если вы хотите включить автоматическую фиксацию и все еще нуждаться в повышении производительности, просто попробуйте запустить как транзакцию до пакетной операции и зафиксировать транзакцию после. Таким образом, sqlite не будет автоматически фиксироваться после каждой вставки и даст хороший прирост производительности.
EDIT:
При запуске транзакции вы отключаете только автоматическую фиксацию.
для этой транзакции, и он будет снова включен после завершения транзакции. Что помогает авто коммит
когда вы вставляете / обновляете строки отдельно (не в пакетном режиме), вам не нужно начинать
транзакция явно для каждой вставки / обновления. И относительно установки автоматической фиксации в true, после
На самом деле, не требует призыва. Если вы делаете авто-фиксацию
истина и все, что вы уже вставили / обновили, не будет иметь никакого эффекта и не будет иметь того же самого
гарантирует автоматическую фиксацию true перед выполнением вставки / обновления.
Вот некоторая информация по ускорению Sqlite INSERT.