Wie vakuumiere ich eine Core Data SQLite db?

9

Standardmäßig gibt Core Data keinen SQL-Befehl VACUUM für seine SQLite-Datenbank (en) aus, da detailliert hier . Ich erstelle eine Core Data-Anwendung, die große Binärdateien (2-10 MB groß) in einer SQLite-Datenbank speichert und später löscht. Im Laufe der Zeit wird dies zu einer Fragmentierung und einer SQLite-Datenbank führen, die größer als nötig ist. Ich möchte regelmäßig einen VACUUM-Befehl ausgeben, sagen wir, während einer Bereinigungsoperation, die ich ausführe.

  • Wie kann ich progammatisch einen VACUUM-Befehl an die SQLite-Speicher von Core Data senden?
  • Ist es möglich, dies über Core Data zu tun, oder muss ich die SQLite-Datenbank laden und direkt mit ihr verbinden, um VACUUM SQL auszuführen?
Dave Gallagher 07.10.2009, 14:57
quelle

2 Antworten

12

Die unterstützte Vorgehensweise unter OS X 10.6 / iOS 3.0 und höher besteht darin, NSSQLiteManualVacuumOption in den Optionen, wenn Sie den Store zum persistenten Store-Koordinator hinzufügen.

    
Jim Correia 09.10.2009, 14:35
quelle
2

Ja, vacuum ist eine in SQLite erkannte SQL-Anweisung. Es kann als normale Abfrage verwendet werden, oder so heißt es .

Aber Vorsicht, es kann zu übermäßigen Lese- und Schreibvorgängen im Dateisystem führen - dem Engpass praktisch jedes Systems - ganz zu schweigen von der Server-Dateisystem-Fragmentierung auf Windows-Servern.

    
amphetamachine 29.12.2009 23:36
quelle

Tags und Links