5.1 Теория

Ваша база данных Firebird организована таким образом, что она разделена на отдельные части, каждая из которых имеет одинаковый размер. Эти части называются страницами. Размер каждой страницы напрямую влияет на производительность базы данных и её взаимодействие с операционной системой и оборудованием компьютера. Размер страницы может варьироваться в зависимости от конкретной версии Firebird, которую вы используете.

  • В более ранних версиях Firebird, таких как версия 1.x, размер страницы по умолчанию был установлен на 1024 байта.

  • С выходом версии Firebird 2.5, размер страницы по умолчанию увеличился до 4096 байтов.

  • Начиная с версии Firebird 3.0 и далее, базы данных по умолчанию создаются со страницей размером 8192 байта.

Для больших баз данных в версиях Firebird 2.5 и 3.0 также доступны опции увеличения размера страницы до 16 384 байт. А начиная с версии v4+, максимальный размер страницы можно увеличить до 32 768 байт.

Таким образом, правильный выбор размера страницы является важным шагом при настройке производительности вашей базы данных Firebird.

1024

2048

4096

8192

16 384

32 768

2.5

возможно

возможно

по умолчанию

возможно

возможно

не реализовано

3.0

не поддерживается

не поддерживается

возможно

по умолчанию

возможно

не реализовано

4.0

не поддерживается

не поддерживается

возможно

по умолчанию

возможно

возможно

5.0

не поддерживается

не поддерживается

возможно

по умолчанию

возможно

возможно

Чтобы узнать размер страницы вашей базы данных, воспользуйтесь командой:

В Windows:

gstat.exe -h Disk:path\database.fdb

В Linux:

gstat.exe -h Disk:path\database.fdb

и посмотрите строку «Page size».

Размер страниц имеет большое значение для вашей базы данных Firebird, поэтому вам нужно выбрать правильный размер.

Чтобы изменить размер страницы, вам нужно использовать инструмент gbak для резервного копирования и восстановления базы данных и добавить параметр -page N, где N - размер страницы в байтах. После изменения размера страницы при restore этот параметр больше указывать не нужно, так как он сохраняется в параметрах заголовка базы данных при back up. Но будьте осторожны, это может занять много времени, если ваша база данных большая. Поэтому лучше с самого начала выбрать правильный размер страницы.

Как выбрать правильный размер страницы для базы данных Firebird? Необходимо учитывать следующие моменты:

  • Размер страницы по умолчанию

  • Размер базы данных

  • Глубина индексов

  • Размер сжатых записей, хранящихся на страницах для больших таблиц.

  • Пересчет конфигурации после изменения размера страницы

Рассмотрим все эти пункты более подробно.

5.2. Размер страницы по умолчанию

Как вы уже знаете, размер страницы не может быть меньше, чем установленный по умолчанию для конкретной базы данных. Это важный аспект, который следует учитывать при работе с базами данных.

Когда база данных создается с использованием команды CREATE DATABASE без указания опции PAGE_SIZE, база данных автоматически создается со стандартным размером страницы, установленным по умолчанию. Однако если база данных была создана на одной из предыдущих версий Firebird и затем перенесена с помощью процедуры резервного копирования и восстановления, размер страницы может остаться прежним, даже если он меньше, чем стандартный размер страницы, что может привести к не оптимальной производительности. В таком случае рекомендуется изменить размер страницы на стандартный (или больший). На практике это обычно означает использование минимального размера страницы в 8192 байта.

5.3. Размер базы данных

Для небольших баз данных:

Если ваша база данных имеет объем менее 20 ГБ или вы не планируете увеличивать ее размер сверх этой отметки, а также при отсутствии необходимости в частых операциях резервного копирования и восстановления (где может потребоваться изменение размера страницы), общей рекомендацией является использование размер страницы 8192 байт. Этот параметр установлен как стандартный для всех версий начиная с версии 3 и выше.

Для крупных баз данных:

В случае работы с большими базами данных рекомендуется применять размер страницы 16384 байт.

Стоит ли выбирать максимальный размер страницы?

Рассматривая вариант использования максимального доступного размера страницы – 32768 байт, возникает вопрос о его преимуществах перед меньшими размерами. Мы провели тестирование на базе данных объемом до 1ТБ и не заметили значительного прироста производительности по сравнению с использованием страницы размером 16384 байт. Однако один из наших клиентов, работающий с базой данных объемом 4 ТБ, отметил улучшение производительности после перехода на страницу размером 32768 байт.

Таким образом, выбор между размером страницы 16 КБ и 32 КБ зависит от конкретных условий эксплуатации вашей системы и характеристик вашей базы данных.

5.4. Глубина индексов

Для того чтобы производительность индексов была на оптимальном уровне, они должны иметь глубину ⇐3.

Как проверить глубину?

Используя только стандартный инструмент, это довольно долгий процесс:

Запустите инструмент gstat для сбора статистики

gstat -r -user SYSDBA -pass masterkey localhost:Disk:pathdb.fdb > stats.txt

Откройте статистику в текстовом редакторе и найдите все вхождения слов «Depth: 3», «Depth: 4», «Depth: 5».

Должны быть индексы с глубиной 2 и 3 (3, если база данных не очень маленькая), и, для оптимальной производительности, не должно быть индексов с глубиной 4 и 5.

В HQbird необходимо использовать инструмент HQbird Database Analyst из пакета HQbird Admin, который предназначен для анализа статистики баз данных.

Откройте HQbird Database Analyst, получите статистику базы данных (или откройте файл с собранной вручную статистикой), перейдите на вкладку Indexes и отсортируйте по Depth:

Если вы видите индексы с Depth > 3, необходимо увеличить размер страницы базы данных.

Если вы уже используете максимально возможный размер страницы, например 16384 на v3, рассмотрите возможность перехода на v4-5, где максимальный размер страницы составляет 32768.

5.5. Размер сжатых записей

Система управления базами данных Firebird сохраняет данные таблиц в сжатом формате. В статистических отчетах по базе данных, которые можно получить после выполнения определенных операций, отображается информация о размере записей в конкретной таблице. Пример вывода статистики может выглядеть следующим образом (значения могут варьироваться в зависимости от версии Firebird):

TST (128)

Primary pointer page: 148, Index root page: 149
Average record length: 20.99, total records: 100000
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 1516, data page slots: 1516, average fill: 62%

Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 3
60 - 79% = 1512
80 - 99% = 0

Необходимо провести анализ размера записей для наиболее крупных таблиц и сопоставить этот показатель с размером страницы. Основная идея состоит в том, чтобы определить количество записей, которое умещается на одну страницу. Например, если средняя длина записи составляет 700 байт, а размер страницы равен 4096 байтам, то Firebird будет вынужден считывать большое количество страниц данных при выполнении запросов.

Этот процесс напрямую связан со структурой базы данных и особенностями бизнес-логики приложения. Чем больше размер каждой отдельной записи, тем большее количество страниц необходимо будет обработать системе для получения нужных данных.

В разделе «Аналитика баз данных HQbird» можно просмотреть размеры записей для таблиц в удобной табличной форме. Для этого необходимо открыть или получить статистику, перейти во вкладку «Таблицы» и затем отсортировать данные по параметру «Длина записи». Помимо отображения значения «Длины записи», аналитический инструмент также предоставляет информацию о параметре «Среднее заполнение» и рассчитывает дополнительный показатель – «Реальное заполнение», который помогает оценить эффективность хранения данных на страницах базы данных.

5.6. Пересчёт конфигурации после изменения размера страницы

Важно помнить, что размер кэша Firebird определяется количеством страниц. При изменении размера страницы изменяется и общий объём кэша. Например, если кэш был установлен 1 миллион страниц при размере страницы 8192 байта, то суммарный объем кэша будет составлять 8 ГБ. Однако, если увеличить размер страницы до 16384 байт, то общий объем кэша возрастет до 16 ГБ.

Для того чтобы избежать возможных проблем с чрезмерно большим размером кэша, рекомендуется после изменения размера страницы пересчитать параметры конфигурации с помощью инструмента Configuration Calculator, доступного по адресу cc.ib-aid.com.

6 Резюме

Хотя описанные выше шаги являются важными для улучшения производительности, они не могут считаться полностью исчерпывающими. В случае, когда, несмотря на проведенные тщательные проверки, производительность продолжает оставаться на низком уровне, может потребоваться дополнительная работа по уточнению запросов, оптимизации архитектуры и настройке транзакций.

Для получения профессиональной помощи в вопросах оптимизации производительности мы рекомендуем воспользоваться специализированными услугами сайта. Вы можете обратиться за помощью, написав по электронному адресу support@ib-aid.com.

На этом этапе мы завершаем последнюю часть нашего руководства.

Ссылка на видеоверсию на Youtube: https://youtu.be/HwvqMbpHW_Y

Ссылка на Rutube: https://rutube.ru/video/265e5331607ae4b41fed5ab018995f8c/

Ссылка на Платформу: https://plvideo.ru/watch?v=ykiJLtg1XpMF

Официальный канал на Substack: https://firebirdfoundation.substack.com/ - подписывайтесь, что бы получать информацию из первых рук.

Сообщество Firebird в ВК: https://vk.com/firebird_friday

Чат Firebird в Телеграме: https://t.me/firebird_friday

Комментарии (0)