Krótka lista kontrolna wydajności bazy danych Firebird
Windows
-
Ustaw plan zasilania na Wysoka wydajność (+20% na Windows Server 2016+)?
-
Ustaw politykę buforowania zapisu dla dysków na Włącz buforowanie zapisu
-
W przypadku RAID sprawdź, czy zainstalowany jest nowoczesny sterownik i czy RAID jest poprawnie skonfigurowany.
Linux
-
Czy Max Open Files jest ustawione na 49999? Sprawdź to cat /proc/$(pgrep firebird)/limits, domyślnie jest 4096, zwiększ je jeśli to konieczne: ustaw w pliku usługi Firebird LimitNOFILE=49999
-
Sprawdź liczbę VMA cat /proc/sys/vm/max_map_count, domyślnie jest 64K, powinno być ustawione na 250K: dodaj do /etc/sysctl.conf linię vm.max_map_count=250000
Konfiguracja Firebird (zalecenia tylko dla Firebird 3)
-
Upewnij się, że nie używasz domyślnych DefaultDBCacheBuffers, są one bardzo niskie (256 i 8K)! Ustaw 1024 dla SuperClassic i 100K dla SuperServer. Nie używaj Classic w Firebird 3, jest wolny.
-
Upewnij się, że DefaultDBCacheBuffers nie jest nadpisane w nagłówku bazy danych: sprawdź to za pomocą gstat -h baza danych -> Page Buffers, powinno być 0. Ustaw to na 0 za pomocą gfix -buffers 0.
-
Ustaw FileSystemCacheThreshold =100M, aby używać pamięci podręcznej plików systemu operacyjnego
-
Dla SuperServer przydziel dla DefaultDBCacheBuffers mniej niż 30% pamięci RAM. Jeśli masz wiele baz danych, policz pamięć dla wszystkich i użyj databases.conf, aby skonfigurować je osobno. Sprawdź całkowitą liczbę połączeń i baz danych za pomocą polecenia:
fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info
-
Dla SuperServer i SuperClassic ustaw TempCacheLimit na 25% pamięci RAM, dla Classic - 64M.
-
Ustaw LockMemSize=30M, to dobra wartość początkowa, następnie monitoruj wzrost tabeli blokad za pomocą polecenia fblockprint -d nazwa_bazy i zwiększ LockMemSize jeśli to konieczne
-
Ustaw LockHashSlots=20011, to dobra wartość początkowa, monitoruj Hash Lengths w lockprint
Baza danych
-
Dla baz danych > 50Gb użyj maksymalnego rozmiaru strony: 16Kb (domyślnie 8Kb), aby zoptymalizować odczyt IO i głębokość indeksów. Ustaw to podczas przywracania za pomocą przełącznika “page”: gbak**-c -page 16384**
-
Nie używaj flagi no_reserve dla baz danych nie tylko do odczytu. Usuń ją za pomocą **gfix -**use reserve
-
Monitoruj różnicę między znacznikami transakcji (OIT, OST, OAT, Next) z gstat -h.
-
Duża (OST-OIT) oznacza, że baza danych prawdopodobnie zawiera dużo śmieciowych wersji i wymaga sweep. Zaplanuj jawny sweep na noc za pomocą gfix -sweep
-
Duża (Next-OAT) oznacza długą aktywną transakcję zapisu, która blokuje usuwanie śmieci. Sprawdź tabele MON$, aby zobaczyć, która aplikacja trzyma transakcję otwartą i napraw to.
Test 5 minutowy do oszacowania wydajności Firebird
Użyj skryptu open-source INSERT-UPDATE_DELETE: www.ib-aid.com/dbtestObecnie najszybszy przetestowany serwer pokazał 18140 wstawionych rekordów na sekundę, jaki będzie Twój wynik?
Jak poprawić wydajność Firebird poza tą prostą konfiguracją?
Wypróbuj usługę optymalizacji Firebird od IBSurgeon www.ib-aid.com/perf: wiemy, jak sprawić, aby Twój Firebird działał szybciej.