SQLLite - baza spuchła

0

Cześć, napisałem swego czasu aplikację z danymi zapisywanymi do bazy sqllite.
Baza ma 10 tabel, z czego dwie mają po 20 kolumn typu varchar(20-100), pozostałe po 2 -3 kolumny.
Te dwie tabele mają łącznie rekordów 15000, pozostałe tabele może z 200.

Zastanawia mnie rozmiar bazy danych, bo jeszcze niedawno miała z 50MB, a teraz urosła do 450MB, jakoś rekordów zbytnio nie doszło (może z 400-500), jedynie były wykonywane updejty (przez SQLLite studio) na wszystkich rekordach (15000).

To normalne, żeby tak baza spuchła? Może jest jakiś sposób na jej odchudzenie?

1

Próbowałeś odpalać VACUUM? (https://www.sqlite.org/lang_vacuum.html)

1
Patryk27 napisał(a):

Próbowałeś odpalać VACUUM? (https://www.sqlite.org/lang_vacuum.html)

Nie, nawet nie wiedziałem że takie coś istnieje.
Całe życie praktycznie w MSSQL robię. SQLLite okazjonalnie.

0

Możesz sobie zrobić trzy rzeczy, żeby uniknąć takich niespodzianek w przyszłości:

1) co pewien czas cyklicznie robić VACUUM (mało PRO, ale chyba najskuteczniejsze ;) )
2) ustawić pragma auto_vacuum na FULL - wtedy czyszczenie bazy będzie się odbywać automatycznie, aczkolwiek, jak piszą sami twórcy SQLite, nie ma gwarancji, że takie rozwiązanie będzie działać zawsze i wszędzie - "Specific pragma statements may be removed and others added in future releases of SQLite. There is no guarantee of backwards compatibility"
3) ustawić sobie PRAGMA secure_delete=ON. Domyślnie dane nie są fizycznie kasowane z pliku bazy, a jedynie oznaczone jako usunięte, dzięki czemu jest możliwość dość łatwego ich odzyskania w razie fakapu. Jeśli tego nie potrzebujesz, możesz kazać, aby dane były fizycznie kasowane. Ograniczy to ilość śmieci w bazie.

0

1 MB odzyskany dzięki VACUUM.
Znalazłem przyczynę takiego przyrostu bazy danych... Kiedyś tam dołożyłem opcję zapisywania plików w programie i całkowicie o niej zapomniałem. Klient sobie tą opcje zaczął wykorzystywać i te 400MB to dane binarne.

Teraz mam inne pytanie, jaki rozmiar bazy SQLLite jest maksymalny? Gdzieś znalazłem informację że 140TB?

1 użytkowników online, w tym zalogowanych: 0, gości: 1