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.
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.
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.