СПОСОБЫ ОПТИМИЗАЦИИ РАБОТЫ БАЗ ДАННЫХ И СЕРВЕРА INTERBASE

Ронсаль Е.Е., Ладыженский Ю.В.
Донецкий национальный технический университет

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

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

Оптимизация работы сервера представляет собой процесс определения наиболее слабых компонентов в системе, на основании статистики базы данных и сервера, и устранения этих узких мест.

Существуют различные способы повлиять на производительность системы. Один из них – изменение значений параметров конфигурационного файла сервера. В InterBase – это файл ibconfig. Существуют следующие параметры, изменение которых может оказать влияние на производительность:

- DATABASE CACHE SIZE – устанавливает число страниц для всех баз данных сервера, которое может одновременно находиться в кеше. Увеличение размера кеша может улучшить производительность;

- LOCK_MEM_SIZE – определяет количество памяти, выделяемой для таблицы блокировок. Изменение данного параметра может повлиять на размр кеша страниц базы данных, число одновременных транзакций, а также на события;

- SERVER CLIENT MAPPING – определяет размер области разделяемой памяти, которая используется в Windows-системах для того, чтобы устанавливать связь между сервером и клентом, запущенным на одной машине (локальное соединение). Если число локальных клиентов велико, увеличение этого параметра может улучшить производительность;

- SERVER WORKING SIZE – устанавливает ограничения размера рабочей физической памяти. Установка минимального размера рабочей памяти (SERVER_WORKING_SIZE_MIN) может устранить затраты на выделение памяти. Установка максимального размера рабочей памяти (SERVER_WORKING_SIZE_MAX) позволяет избежать захватывания всей доступной памяти в системах с малым ее количеством;

- LOCK GRANT ORDER – при значении 1 – включает сортировку блокировок, при значении 0 – выключает. Если операции по записи данных имеют более низкий приоритет по сравнению с операциями чтения, установление параметра в 1 улучшит производительность чтения, особенно в течение длительных читающих транзакций;

- DEADLOCK TIMEOUT – определяет число секунд, в течение которых менеджер блокировок будет ожидать разрешения обнаруженного конфликта. Влияние этого параметра на производительность системы незначительно, так как в реальной практике программирования баз данных взаимоблокировки возникают крайне редко;

- CONNECTION TIMEOUT – устанавливает время ожидания (тайм-аут) соединения. Увеличение значения этого параметра улучшит производительность при условии, что клиентские приложения не будут некорректно завершать свою работу;

- DUMMY PACKET INTERVAL – определяет, насколько часто будут посылаться фиктивные запросы для проверки того, что клиент все еще работает. Рекомендации: см. CONNECTION TIMEOUT;

- TMP DIRECTORY – определяет местоположение временных файлов InterBase. Установка этого параметра позволяет назначить временные каталоги и точно опеределить количество места, которое будет использовано в каждом из них;

- EXTERNAL FUNCTION DIRECTORY – определяет местоположение для библиотек пользовательских функций. Показанием к изменению параметра является необходимость использования каталогов, отличных от стандартых.

- TCP REMOTE BUFFER – устанавливает максимальный размер пакетов TCP, используемых при обмене между клиентом и сервером. Показанием к изменению параметра является сильная загруженность сети [1].

Помимо изменения параметров конфигурационного файла, существуют другие способы повышения производительности, к которым относятся:

1 Эффективное использование индексов:

- нужно индексировать те поля, которые используются в условиях поиска, в предложениях сортировки или для соединения таблиц;

- при выполнении вставок большого числа записей рекомендуется временно отключать индексы – это увеличит скорость выполнения запроса;

- в результате многочисленных вставок двоичное дерево, в виде которого реализован индекс, становится несбалансированным, поэтому для восстановления производительности индекса периодически следует его перестраивать (например, с помощью команды ALTER INDEX)[2].

2 Оптимизация запросов.

3 Настройка размера кеша базы данных.

4 Выполнение резервного копирования и восстановления из копии. В результате пересоздания базы данных происходит удаление устаревших версий записей («мусора»), перестройка индексов, дефрагментация страниц базы данных.

5 Отключение режима автоматической сборки "мусора"[3].

6 Использование функций, определяемых пользователем (UDF), триггеров, хранимых процедур. Это приводит к увеличению скорости вычислений и снижению нагрузки на сеть.

7 Нормализация таблиц базы данных[2].

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

Литература
[1] InterBase configuration parameters, by Ann Harrison
(http://ibphoenix.com/main.nfs?a=ibphoenix&s=1132891400:150223&page=ibp_config).
[2] Tips for improving InterBase server performance
(http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1133335039:381637&page=ibp_tip_perf).
[3] А. Н. Ковязин, С.М. Востриков "Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil (3-е издание)" - М.: Кудиц-образ, 2005.