Cześć,
chciałem was zapytać czy istniej możliwość aktualizacji bazy sqlite, chodzi już o sam plik.
Mam projekt który używa tej bazy, jednak sam plik został stworzony jakieś 5/6 lat temu i nawet nie wiem na jakiej wersji. Można to jakoś sprawdzić?
Wiem jak sprawdzić bibliotekę sqlite jaką mam zainstalowaną w systemie, ale co z samym plikiem, przy kolejnych aktualizacjach bazy nic nie zmienia się w jego strukturze?
Ktoś może orientuje się w temacie?
Z dokumentacji:
In other words, since 2004 all SQLite releases have been backwards compatible, though not necessarily forwards compatible.
W nagłówku jest zapisaną wersja. https://www.sqlite.org/fileformat.html
Nie wiem, czy SQLite (poza tym, o czym pisał @tsz) w jakiś sposób obsługuje aktualizacje i wersje, ale zawsze możesz to zrobić sposobem. Jeśli znasz strukturę bazy, to po prostu przy użyciu nowej wersj SQLite tworzysz nową bazę z takimi samymi kolumnami, a następnie kopiujesz całość z jednej bazy do drugiej. Aczkolwiek tak się zastanawiam, po co w ogóle to robić? Czy masz jakieś problemy, coś chcesz w ten sposób osiągnąć, czy to taka zabawa dla sportu? Bo jest taka jedna ważna zasada - jak coś działa, to tego nie naprawiaj. Jeśli wszystko jest OK, to ja bym nie ruszał, bo raczej poprawy czy zysku nie będzie, ale możesz coś skopać i sobie narobić problemów.
Przez te lata baza już mocno spuchła i pojawia się coraz częściej problem z wydajnością.
Nie mogę zmienić sqlite na nic innego wydajniejszego dlatego kombinuję jak usprawnić to co jest.
Zanim zacznę poprawiać indeksy i zapytania zrobię jak napisałeś, przeniosę wszystkie dane na nowo utworzony plik i sprawdzę czy te aktualizację które były przez te lata wpłyną na poprawę wydajności.
No ale aktualizacja samego pliku nic nie da. Musisz zaktualizować bibliotekę po stronie klienta (chyba ze juz to zrobiłeś). I raczej bym myślał o przesiadce na co innego jak baza jest waszym wąskim gardłem.
Przez te lata baza już mocno spuchła i pojawia się coraz częściej problem z wydajnością
a czy w ogóle tą bazę jakoś odchudzałeś? Puszczałeś na niej jakieś VACUUM
- https://sqlite.org/lang_vacuum.html?
@cerrato: regularnie to robię ale już przestało wystarczać dlatego szukam innych rozwiązań :)
Daj więcej szczegółów. Jakie dane, ile wierszy, ile tabel, jakie zapytania nie dają rady? Co pokazuje EXPLAIN?
Wyciągnąłem informację z hedera i okazuje się mój plik na którym obecnie pracuję jest w wersji 3\004
Tworząc nowy plik mam wersję 3\020
Przeniosłem wszystkie dane do nowego pliku i jednak okazuje się, że było warto, prędkość wykonywania zapytań tylko po podmianie bazy poprawiła się o około 15-20% :)