Jedną z częstych przyczyn spowolnienia bazy danych Firebird jest zbyt wolny dysk, na którym przechowywane są dane. Ważne jest, aby dysk był szybki, ponieważ baza danych Firebird przechowuje i odczytuje dane właśnie z niego. Przetestuj, jak dobrze działa Twój dysk z bazą danych Firebird. Istnieje kilka uniwersalnych narzędzi do pomiaru wydajności dysku w standardowy sposób, które podają szacunkowe wartości w MB/s lub IOPS. Najpopularniejszym z nich jest CrystalDiskMark (https://crystalmark.info/). Z naszych doświadczeń wynika, że CrystalDiskMark daje odpowiednie oszacowanie prędkości dysku i może być używany jako punkt wyjścia. Przykład wyników z CrystalDiskMark w formacie tekstowym: {{:pl:administrator:cristaldisk.png?400|}} Test prędkosci Test prędkości na serwerze z dowolnym Firebirdem Aby uruchomić test na dowolnym serwerze Firebird, skopiuj skrypt z witryny: Simple Insert Update Delete Test for Firebird i zapisz go do pliku, na przykład /opt/script1.sql lub c:\temp\script1.sql. https://ib-aid.com/en/simple-insert-update-delete-test-for-firebird/#how_to_run_firebird_performance_test Następnie edytuj ścieżkę w pierwszej linii skryptu do tworzonej bazy danych - powinna znajdować się na tym samym dysku, gdzie znajduje się główna baza danych: create database "localhost::inserttest4.fdb" user "SYSDBA" password "masterkey" page_size 16384; lub, dla Linuxa create database "localhost://inserttest4.fdb" user "SYSDBA" password "masterkey" page_size 16384; Unikaj sytuacji, gdy testowany dysk jest obciążony długotrwałą operacją, taką jak tworzenie kopii zapasowej lub kopiowanie dużych wolumenów danych, lub po prostu ma szczytową liczbę użytkowników. Najlepszą opcją jest uruchomienie skryptu w trybie bez użytkowników. Uruchom skrypt z wiersza poleceń za pomocą polecenia, jak poniżej: /opt/firebird/bin/isql -i /opt/script1.sql lub "C:\Program Files\Firebird\Firebird_4_0\isql.exe" -i .\script1.sql Wynik zostanie wyświetlony na ekranie (pokazano tylko pierwszą część dla INSERT): C:\HQbird\Firebird30> isql -i c:\Temp\test1.sql Use CONNECT or CREATE DATABASE to specify a database INSERTED_ROWS 1000000 ELAP_MS 58890 Current memory = 702384256 Delta memory = 3215392 Max memory = 704756112 Elapsed time= 58.894 sec Buffers = 40960 Reads = 9 Writes = 88015 Fetches = 25332353 Current memory = 702342416 Delta memory = -41840 Max memory = 704756112 Elapsed time= 4.846 sec Buffers = 40960 Reads = 1 Writes = 40254 Fetches = 2 Jak interpretować wyniki Należy sumować czas operacji i czas zatwierdzania, a następnie podzielić 1000000 przez całkowity czas. Dla powyższego przykładu: INSERT SPEED = 1000000 / (58.984+4.846) = 15666 inserts/sekunda Wyniki w formie Operacji na sekundę — na przykład 6000 Insertów/sekundę, 5200 Update'ów/sekundę, 7300 Delete'ów/sekundę, mogą być porównywane z tabelą/wykresem wyników wydajności. Tabela znajduje się tutaj: https://ib-aid.com/images/testresult/insert_update_delete_results.xls Jeśli wyniki są powyżej średniej w tabeli/wykresie, oznacza to, że prędkość dysku jest w porządku, a przyczyna wolnego działania leży w innej sferze niż sprzęt. Inną rzeczą do sprawdzenia jest czas zatwierdzania. Jeśli całkowity czas testu zawiera więcej niż 20% czasu zatwierdzania, oznacza to, że może występować problem z buforowaniem zapisu. Jeśli wynik testu jest poniżej średniej, a masz dyski SSD, oznacza to, że występuje problem z konfiguracją dysku lub sterownikiem. Możliwe przyczyny wolnego działania dysku - Nieprawidłowy system plików dla dysku, na którym znajduje się baza danych Firebird - Brak jednostki podtrzymującej zasilanie dla RAID (lub rozładowana bateria) - Brak odpowiedniego sterownika (lub sterownik jest wyłączony przez dostawcę, aby uniemożliwić korzystanie z dysków konsumenckich na systemie serwerowym) - Limit IOPS dla VM (na przykład, Azure ma bardzo niskie limity IOPS dla maszyn wirtualnych ogólnego przeznaczenia) - Aktywny proces tworzenia kopii zapasowej lub inne przetwarzanie (kopiowanie, reorganizacja itp.) dużych danych na dysku. - Dysk zaczyna się psuć: uszkodzone bloki, przegrzewanie się itp. Zawsze sprawdzaj dane S.M.A.R.T dla dysku