Короткий чек-лист продуктивності бази даних Firebird
Windows
-
Встановіть план електроживлення «Висока продуктивність» (+20% на Windows Server 2016+)?
-
Увімкніть політику кешування запису для дисків - Enable Write-Caching
-
У разі використання RAID переконайтеся, що встановлено сучасний драйвер і RAID налаштовано правильно.
Linux
-
Чи встановлено Max Open Files на 49999? Перевірте cat /proc/$(pgrep firebird)/limits, за замовчуванням - 4096, збільште за потреби: вкажіть у файлі служби Firebird LimitNOFILE=49999
-
Перевірте кількість VMA cat /proc/sys/vm/max_map_count, за замовчуванням - 64K, слід встановити 250K: додайте до /etc/sysctl.conf рядок vm.max_map_count=250000
Конфігурація Firebird (рекомендації лише для Firebird 3)
-
Переконайтеся, що ви не використовуєте типові значення DefaultDBCacheBuffers, вони дуже низькі (256 і 8K)! Встановіть 1024 для SuperClassic і 100K для SuperServer. Не використовуйте Classic у Firebird 3 - він повільний.
-
Переконайтеся, що DefaultDBCacheBuffers не перевизначено в заголовку бази даних: перевірте за допомогою gstat -h database -> Page Buffers, значення має бути 0. Встановіть його на 0 за допомогою gfix -buffers 0.
-
Встановіть FileSystemCacheThreshold =100M, щоб використовувати файловий кеш ОС
-
Для SuperServer виділіть для DefaultDBCacheBuffers менше 30% оперативної пам’яті. Якщо у вас багато баз даних, порахуйте пам’ять для всіх них і використовуйте databases.conf для окремого налаштування. Перевірте загальну кількість з’єднань і баз даних командою:
fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info
-
Для SuperServer і SuperClassic встановіть TempCacheLimit на 25% оперативної пам’яті, для Classic - 64M.
-
Встановіть LockMemSize=30M - це хороше початкове значення, потім відстежуйте зростання таблиці блокувань командою fblockprint -d databasename і збільшуйте LockMemSize за потреби
-
Встановіть LockHashSlots=20011 - це хороше початкове значення, відстежуйте Hash Lengths у lockprint
База даних
-
Для баз даних > 50 ГБ використовуйте максимальний розмір сторінки: 16 КБ (за замовчуванням 8 КБ), щоб оптимізувати читання IO та глибину індексів. Встановіть його під час відновлення за допомогою перемикача “page”: gbak**-c -page 16384**
-
Не використовуйте прапорець no_reserve для баз даних, які не є лише для читання. Видаліть його за допомогою **gfix -**use reserve
-
Відстежуйте різницю між маркерами транзакцій (OIT, OST, OAT, Next) з gstat -h.
-
Велике значення (OST-OIT) означає, що база даних, ймовірно, містить багато сміттєвих версій і потребує sweep. Заплануйте явний sweep на нічний час за допомогою gfix -sweep
-
Велике значення (Next-OAT) означає довгу активну транзакцію запису, яка блокує збір сміття. Перевірте таблиці MON$, щоб дізнатися, який застосунок утримує транзакцію відкритою, і виправте це.
5-хвилинний тест для оцінки продуктивності Firebird
Використовуйте скрипт з відкритим кодом INSERT-UPDATE_DELETE: www.ib-aid.com/dbtestНаразі найшвидший протестований сервер показав 18140 вставлених записів за секунду. Яким буде ваш результат?
Як покращити продуктивність Firebird понад це просте налаштування?
Спробуйте сервіс оптимізації Firebird від IBSurgeon www.ib-aid.com/perf: ми знаємо, як змусити ваш Firebird працювати швидше.