Wykonywanie transakcji:
Domyślnie każde wykonanie INSERT/UPDATE w SQLite3 jest oddzielną operacją, zaznaczenie w bazie danych:
BEGIN TRANSACTION;
Spowoduje, że wszystkie operacje po zaznaczeniu tej opcji będą traktowane jako jedna operacja. Warto tę opcję zaznaczyć gdy mamy do wykonania dużo operacji INSERT/UPDATE. Po zakończeniu działań na bazie danych zamykamy transakcję:
END TRANSACTION;
Wyłączenie synchronizacji:
Domyślnie SQLite za-pauzuje wykonywanie operacji po wydaniu komendy do systemu operacyjnego o zapisanie danych. To gwarantuje, że dane są zapisane na dysk. Wyłączenie synchronizacji przez użycie:
synchronous = OFF;
Nakazujemy SQLiteowi trzymanie danych w pamięci przed zapisaniem danych i kontynuowanie pracy. Możliwe jest, że baza danych zostanie uszkodzona, jeśli system operacyjny zaliczy błąd lub gdy nieoczekiwanie przerwiesz wykonywanie skryptu (przez Ctrl +Z), zwykłe zatrzymanie skryptu (Ctrl + C) nakazuje serwerowi SQLite zapisać dane do bazy przed zakończeniem programu.
Notowanie w pamięci:
Rozważmy przechowywanie danych w pamięci RAM przez użycie opcj:
PRAGMA journal_mode = MEMORY;
Twoje transakcje będą dużo szybsze, jednak jeśli stracisz zasilanie, lub skrypt dodający dane wykrzaczy się, baza danych zostanie uszkodzona (testowane).
Połączenie synchronizacji i trzymania danych w pamięci:
Połączenie obu opcji daje bardzo duże przyspieszenie, jednak znacząco zwiększa ryzyko uszkodzenia pliku z bazą danych:
PRAGMA journal_mode = MEMORY;
PRAGMA synchronous = OFF;
Zwiększenie cache:
PRAGMA cache_size = -1048576 jeśli przed liczbą całkowitą stoi minus, liczba ta oznacza wtedy ilość bajtów, ile ma zajmować cache w tym uruchomieniu bazy danych, w tym wypadku oznacza to, że cache ma mieć wielkość 1MB, jeśli przed liczbą nie ma znaku to oznacza to ilość stron, domyślnie ilość to 2000.
Zwiększenie rozmiaru strony:
Zmniejszyć lub zwiększyć można ją przez użycie:
PRAGMA page_size = 2n.
Po znaku równości musi być wynik podniesienia liczby 2 to potęgi całkowitej. Domyślnie ustawione na 8192, może przyjąć wartości od 512 do 65536.
:inmemory: znane z SQLite API dla C++/C/Perl użyte w SQLite3:
Ustawienie parametru temp_store na 2 nakaże bazie danych przechowywanie wszelkich informacji w pamięci podręcznej komputera, zamiast zapisywać je co krok na dysku, znacznie przyspiesza insercję danych do bazy:
PRAGMA temp_store = 2;
“Matką” tej opcji jest SQLITE_TEMP_STORE=3 użyte do kompilowania serwera SQLite. Parametr kompilacji ustawiony na 3 oznacza, że wszystkie operacje mają być wykonywane w pamięci RAM, całkowicie pomijając używanie plików tymczasowych.
Yyymmm… wielotabelowość(?):
Używanie wielu tabel zwiększa czas dostępu do danych i zapisu do bazy. Jeśli Twoja baza danych jest poszerzana systematycznie co jakiś czas, warto dodać pętlę, która np. co miesiąc utworzy nową tabelę, w której będą zapisywane dane przez ten miesiąc. Baza stanie się w ten sposób również bardziej skalowalna.