2013-10-24 18 views

Odpowiedz

18

Wykonaj checkpoint, tj. Wykonaj PRAGMA wal_checkpoint.

+0

Przy uruchomieniu terminala 'sqlite3 db.sqlite' upewnij się, że katalog zawiera plik' -wal', a następnie uruchom 'PRAGMA wal_checkpoint' i opuść bazę danych za pomocą' ctrl + d' –

22

Z linii poleceń, wykonaj następujące czynności:

  1. sqlite3 MyDatabase.sqlite
  2. VACUUM;
  3. CTRL-D, aby zamknąć konsolę SQLite.

Gotowe!

Plik -wal powinien teraz mieć rozmiar 0 i wszystko powinno znajdować się w głównym pliku bazy danych.

+0

W tym wątku proponowane są dwa rozwiązania: (1) PRAGMA wal_checkpoint (2) VACUUM i zakończ. Ja też pracuję z Core Data. Mój główny plik sqlite miał 46 MB, a mój plik -0wal = 1,2 GB. Moje wyniki: PRAGMA wal_checkpoint lub PRAGMA wal_checkpoint (1) nie mają żadnego efektu. VACUUM zmniejszyło rozmiar pliku -wal z 1,2 GB do 40,8 MB i zmniejszyło główny sqlite z 46 do 40,5 MB. Wielokrotne wykonanie każdej z komend nie spowodowało dalszych redukcji. Jednak zamknięcie konsoli sqlite3 zmniejszyło plik -wal do 0, jak stwierdził Johannes. –

+0

@JerryKrinock Hej Jerry, miło cię słyszeć. To naprawdę interesujące! Możesz zapytać o to ludzi na liście mailingowej sqlite i zaktualizuj swój komentarz, gdy dowiesz się, dlaczego tak się dzieje. –