Archived post from my old blog (2007–2016), restored from the Wayback Machine. It is published as written at the time, in Italian; tools and versions are likely out of date.

SQLite Insert fulminei

  • linux
  • php
  • ria
  • sistemistica
  • slow-insert
  • sqlite

Se vi capita di fare insert di dump in sqlite probabilmente sperimentate una lentezza estenuante

Questo capita perché ogni insert scatena una transazione a sé stante e questo di base causa l’attesa di un giro completo del piatto del disco per finalizzare la transazione.

Per evitare questo comportamento basta aprire il dump (ad esempio un dump di postgres ottenuto con la flag –insert), posizionarsi appena prima del primo insert e dire:

BEGIN TRANSACTION;

….

Dopo tutti gli insert chiudere la transazione con

COMMIT TRANSACTION;

Et voilà, da 60 insert al secondo a svariate migliaia

Thx to the SQLite FAQ

← Archive