Po kilku latach intensywnej eksploatacji baza danych Firebird programu Insert Gratyfikant GT może zwalniać – listy płac naliczają się dłużej, raporty generują się wolniej, a otwieranie danych pracownika trwa zauważalnie dłużej niż rok wcześniej. Przyczyną jest najczęściej nagromadzenie martwych wersji rekordów, brak konserwacji bazy, nieuporządkowane indeksy lub po prostu rosnący wolumen danych bez odpowiedniej optymalizacji.
Nasz serwis przeprowadza profesjonalną optymalizację bazy danych Gratyfikant GT, przywracając sprawne i szybkie działanie systemu kadrowo-płacowego bez utraty jakichkolwiek danych.
Przyczyny spadku wydajności Gratyfikant GT
Silnik Firebird korzysta z wielowersyjnej kontroli współbieżności (MVCC – Multi-Version Concurrency Control). Przy każdej zmianie rekordu stare wersje nie są natychmiast usuwane, tylko oznaczane jako martwe. Jeśli proces „garbage collection" (zbierania śmieci) nie nadąża za tempem operacji, baza wypełnia się martwymi rekordami, co bezpośrednio przekłada się na spadek wydajności zapytań.
Inne przyczyny spowolnień:
- Fragmentacja pliku bazy na dysku (szczególnie na dyskach HDD)
- Nadmiarowe lub uszkodzone indeksy zwalniające operacje modyfikacji
- Zbyt mała alokacja pamięci podręcznej dla Firebird Server
- Brak regularnego sweepowania bazy (automatyczny sweep w Firebird jest domyślnie co 20 000 transakcji)
- Duży rozmiar bazy zawierającej lata historii – normalna tendencja przy braku archiwizacji
Procedura optymalizacji
Krok 1: Sweep bazy danych
Sweep usuwa martwe wersje rekordów i zwalnia miejsce w bazie:
gfix -user SYSDBA -password masterkey -sweep "C:\ProgramData\Insert\GratyfikantGT\firma.fdb"
Operacja może trwać od kilku minut do kilkudziesięciu minut w zależności od rozmiaru bazy. Zalecamy przeprowadzać sweep co miesiąc lub co kwartał.
Krok 2: Przebudowa indeksów
Uruchamiamy ISQL i wykonujemy przebudowę indeksów dla kluczowych tabel. W Firebird: SET STATISTICS INDEX nazwa_indeksu; – aktualizuje statystyki indeksów, co poprawia dobór planów wykonania zapytań przez optymalizator.
Krok 3: Backup i restore – defragmentacja logiczna
Najskuteczniejsza metoda optymalizacji Firebird – pełny backup przez gbak i przywrócenie do nowego pliku tworzy bazę bez fragmentacji logicznej i martwych rekordów:
gbak -backup -user SYSDBA -password masterkey -stats "firma.fdb" "firma_opt.gbk"
gbak -create -user SYSDBA -password masterkey "firma_opt.gbk" "firma_nowa.fdb"
Nowy plik bazy jest zwykle mniejszy i działa szybciej. Po weryfikacji zastępujemy nim stary plik.
Krok 4: Konfiguracja Firebird Server
W pliku firebird.conf (lub fbserver.conf) dostosowujemy parametry wydajnościowe:
DefaultDbCachePages– zwiększamy do 4096 lub więcej (zależy od dostępnej pamięci RAM)TempBlockSize– zwiększamy dla szybszych operacji sortowaniaFileSystemCacheThreshold– dostosowujemy do rozmiaru bazy
Krok 5: Optymalizacja systemu operacyjnego
Sprawdzamy stan fizyczny dysku (narzędzie CrystalDiskInfo), defragmentujemy HDD (jeśli nie SSD), weryfikujemy, czy folder bazy danych nie jest skanowany przez antywirus w czasie rzeczywistym – wyłączenie skanowania pliku .fdb z ochrony w czasie rzeczywistym może znacząco przyspieszyć pracę programu.