Как заставить Firebird работать на 20% быстрее на Windows Server 2016 менее чем за 1 минуту
Все больше пользователей переходят на Windows Server 2016 с более старых версий, и некоторые из них заметили, что Windows Server 2016 работает медленнее, чем предыдущие версии, даже на том же оборудовании с той же базой данных.
Мы провели несколько тестов на Windows Server 2016 и Firebird и обнаружили, среди прочего, параметр, который кардинально влияет на производительность Windows Server 2016: схему электропитания.
По умолчанию Windows 2016 использует схему «Сбалансированная», которая автоматически балансирует производительность и энергопотребление на подходящем оборудовании. Звучит не опасно, но на самом деле сбалансированная схема электропитания в Windows Server 2016 сильно подавляет производительность процессора и снижает общую производительность сервера.
Переключить схему электропитания можно на лету, без перезагрузки. Посмотрите на эффект включения схемы «Высокая производительность» на сервере с базой данных Firebird, обслуживающей 70 подключений:

Влияние схемы «Высокая производительность» на загрузку процессора
Хорошо, это может быть просто загрузка процессора, а как насчет общей производительности? Мы провели несколько тестов, аналогичных TPCC (имитация OLTP-приложения), и получили следующие цифры:
| Схема электропитания | Пропускная способность TPC-C (чем выше, тем лучше) |
|---|---|
| Сбалансированная | 17029 |
| Высокая производительность | 21226 |
Этот тест сильно зависит от дисковых операций, поэтому разница составляет всего 20%, для операций с интенсивным использованием процессора улучшение может быть еще выше.
Кроме того, мы выполнили тест восстановления (с помощью gbak -c) базы данных Firebird 2.5 объемом 144 ГБ с разными схемами электропитания:
| Схема электропитания | Время восстановления (чем меньше, тем лучше) |
|---|---|
| Сбалансированная | 4 часа 7 минут |
| Высокая производительность | 2 часа 35 минут |
Одна-единственная опция «энергосбережения» почти вдвое ускорила восстановление! Почему мы наблюдаем такое заметное увеличение производительности? Ответ кроется в индексах: во время восстановления они интенсивно используют процессор для сортировки значений.
Посмотрите на значения временных меток из восстановления gbak (в секундах) для 5 самых больших индексов.
Со сбалансированной схемой электропитания gbak:
gbak: 9529.339 1230.343 5028900 346529 activating and creating deferred index INDMF_TAG_PLC_DATA_DT_D
gbak: 10787.610 1258.270 5028909 233365 activating and creating deferred index INDMF_TAG_PLC_DATA_TAG_D
gbak: 11824.329 1036.718 5028907 216488 activating and creating deferred index INDMF_TAG_PLC_DATA_LU_D
gbak: 12571.012 746.683 5028907 265160 activating and creating deferred index INDMF_TAG_PLC_DATA_C1
gbak: 13304.334 733.321 5028908 359393 activating and creating deferred index PKMNF2_DOC_DOWNTIME
Общее время: 3775 секунд
Со схемой «Высокая производительность»
gbak: 5301.785 615.045 5028900 346529 activating and creating deferred index INDMF_TAG_PLC_DATA_DT_D
gbak: 5924.667 622.882 5028909 233365 activating and creating deferred index INDMF_TAG_PLC_DATA_TAG_D
gbak: 6569.815 645.147 5028907 216488 activating and creating deferred index INDMF_TAG_PLC_DATA_LU_D
gbak: 7186.322 616.506 5028907 265160 activating and creating deferred index INDMF_TAG_PLC_DATA_C1
gbak: 7894.340 708.018 5028908 359393 activating and creating deferred index PKMNF2_DOC_DOWNTIME
Общее время: 2593 секунды
Резюме
Итак, эта простая настройка в Панель управления-> Оборудование-> Электропитание может значительно улучшить производительность базы данных Firebird на Windows Server 2016.
Пожалуйста, проверьте и немедленно включите схему «Высокая производительность»!
Дополнительные материалы о производительности базы данных Firebird:
- 45 способов ускорить базу данных Firebird
- Новый мониторинг производительности в HQbird 2018
- Услуга по оптимизации производительности Firebird
Особая благодарность Олегу Матвееву за помощь в подготовке этой статьи!