La confirmación automática está desactivada antes del lote porque la confirmación automática confirmará (es decir, esperará la sincronización, lo que significa que esperará que los datos se escriban en el almacenamiento persistente como el disco duro) después de cada fila que se inserte.
Si la confirmación automática es falsa, no esperará la sincronización.
La diferencia en la espera de la sincronización y no esperar es la garantía de si los datos están realmente en el disco duro o en el búfer (que podría almacenarse temporalmente en el búfer o en el búfer del disco duro).
En resumen, deshabilitar la confirmación automática le da impulso de rendimiento. Y creo que de forma predeterminada la confirmación automática está habilitada.
Otra forma de optimización
Si usted quiere tener confirmación automática ON y todavía necesita aumento de rendimiento sólo tratar de comenzar tan transacción antes de la operación por lotes y confirmar la transacción después. De esta forma, sqlite no se confirmará automáticamente después de cada inserción y dará un buen impulso al rendimiento.
EDIT:
Al iniciar una transacción sólo está deshabilitando automático cometer para esa transacción y será de nuevo 'en' una vez que la transacción ha terminado. Lo que confirma automáticamente ayuda es cuando está insertando/actualizando filas por separado (no como lote), entonces no tiene que iniciar una transacción explícitamente para cada inserción/actualización. Y en cuanto a establecer el autocompromiso en verdadero, después del hecho , no llama a commit. Si hace que la confirmación automática sea verdadera y lo que haya insertado/actualizado no tendrá ningún efecto y no tendrá las mismas garantías que el autocompromiso verdadero antes de realizar esas inserciones/actualizaciones.
Here's some information about speeding up Sqlite INSERTs.
He agregado una respuesta a esto que contradice parte de la información en la respuesta aceptada. FYI. – Gray