Z upływem lat baza danych Insert Gratyfikant nexo rośnie i może ulegać fragmentacji, co przekłada się na wolniejsze naliczenia, dłuższe czasy generowania raportów i powolne wyszukiwanie danych w kartotece pracowniczej. W odróżnieniu od bazy Firebird stosowanej w starszym Gratyfikant GT, nexo używa SQLite (jednoustanowiskowy) lub SQL Server (sieciowy) – każda z tych platform wymaga innego podejścia do konserwacji bazy danych. Regularna konserwacja bazy znacząco wydłuża żywotność instalacji i zapobiega problemom z wydajnością.
Czyszczenie bazy SQLite – VACUUM i ANALYZE
Baza SQLite po licznych operacjach wstawiania, aktualizacji i usuwania danych ulega fragmentacji – wolne strony nie są automatycznie zwalniane do systemu plików. Polecenie VACUUM przeprowadza defragmentację i zmniejsza rozmiar pliku bazy danych. Wykonaj je, gdy nexo.Serwis jest zatrzymany:
sqlite3 "C:\ProgramData\Insert\nexo.Serwis\data\GratyfikantNexo.db" "VACUUM;"
Polecenie ANALYZE aktualizuje statystyki użycia indeksów, dzięki czemu optymalizator zapytań SQLite wybiera właściwsze plany wykonania:
sqlite3 "C:\ProgramData\Insert\nexo.Serwis\data\GratyfikantNexo.db" "ANALYZE;"
Przed wykonaniem obu operacji zawsze utwórz kopię zapasową pliku bazy danych.
Konserwacja bazy SQL Server
W konfiguracji sieciowej z SQL Server zaplanuj regularny plan konserwacji (Maintenance Plan) obejmujący:
- Odbudowanie indeksów (
ALTER INDEX ALL ON tabela REBUILD) – eliminuje fragmentację indeksów; zalecane gdy fragmentacja przekracza 30%. - Reorganizacja indeksów (
ALTER INDEX ALL ON tabela REORGANIZE) – lżejsza operacja dla fragmentacji 10–30%. - Aktualizacja statystyk (
EXEC sp_updatestats) – po przebudowie indeksów. - Zmniejszanie bazy (
DBCC SHRINKFILE) – ostrożnie, wykonuj tylko po dużych usunięciach danych; nadmierne zmniejszanie powoduje kolejną fragmentację.
Maintenance Plan uruchamia się automatycznie przez SQL Server Agent w godzinach nocnych.
Archiwizacja historycznych danych kadrowych
Dane pracowników, którzy odeszli z firmy wiele lat temu, są nadal dostępne w aktywnej bazie. Dla bardzo dużych firm (setki pracowników rocznie przez wiele lat) może to istotnie wpłynąć na wydajność. Gratyfikant nexo umożliwia archiwizację zakończonych stosunków pracy do oddzielnej bazy archiwalnej. Zarchiwizowani pracownicy są dostępni do wglądu, ale nie uczestniczą w aktywnych operacjach płacowych.
Monitorowanie rozmiaru i wydajności bazy
Dla SQL Server warto monitorować rozmiar bazy i fragmentację indeksów przez wbudowane DMV (Dynamic Management Views):
SELECT OBJECT_NAME(ips.object_id) AS tabela,
ips.index_id, ips.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ips
WHERE ips.avg_fragmentation_in_percent > 10
ORDER BY ips.avg_fragmentation_in_percent DESC;Wyniki powyżej 30% wskazują na konieczność pełnego REBUILD indeksu.