Дата публикации: 13.08.2009

В новом IBProvider 3.0.0.7575 реализован пул запросов и улучшена работа с Delphi

Поддержка получения списка таблиц в Delphi в режиме Client Cursor Engine

Получение списка таблиц приведено в соответствие с требованиями компонентов dbGo в режиме Client Cursor Engine.

Новая версия Microsoft Visual C++ 2005 SP1 Runtime

В IBProvider v3.0.0.7575 RC4 используется более новая версия Microsoft Visual C++ 2005 SP1 Runtime, которая так же включена в дистрибутив.

Оптимизация производительности повторяющихся запросов

В новом IBProvider v3 реализован пул SQL-запросов, который хранит подготовленные и созданные команды и позволяет значительно экономить время при большом числе повторяющихся запросов.

Пул запросов будет особенно актуален для следующих задач:

Пул запросов и метаданные

Пул запросов может мешать изменению метаданных. Поэтому для решения возможных проблем с кэшированием, при выполнении DDL команд происходит сброс пула запросов.

Особенности работы пула запросов

Пул запросов — это список, в котором хранятся два типа запросов:

  • Подготовленный запрос, связанный с конкретной командой SQL. Он помещается в пул, после того как клиент освободит объект команды или начнет подготавливать другой запрос.
  • Инициализированный запрос появляется в пуле, когда клиент устанавливает некорректный текст SQL и сервер отказывает в подготовке такого запроса. Это инициализированный запрос помещается в пул для последующего использования.

Когда пользователь подготавливает новый запрос:

  • Запрос с соответствующим SQL ищется среди подготовленных запросов. Если найден подготовленный запрос с таким же SQL-текстом, то он возвращается клиенту.
  • Если запрос, с соответствующим текстом не найден в пуле, то сначала задействуются инициализированные запросы, потом подготовленные запросы, просуществовавшие в пуле более 30 секунд (свойство «stmt_cache__req_life_time«), но связанные с другими SQL-командами.
  • Если в пуле находятся только подготовленные запросы, связанные с другими командами и добавленные менее 30 секунд назад (свойство «stmt_cache__req_life_time«) или пул запросов пуст, то инициализируется и подготавливается новый запрос.

При достижении максимального количества запросов в пуле (свойство «stmt_cache__size«) старые запросы начинают вытесняться новыми.

Настройки пула запросов

Свойства, управляющие поведением пула запросов:

  • stmt_cache__time — минимальное время жизни инициализированного или подготовленного запроса. По умолчанию 60 секунд. Любой запрос, находящийся в пуле больше чем stmt_cache__time секунд будет удален.
  • stmt_cache__req_life_time — минимальное время жизни подготовленного запроса. По умолчанию 30 секунд.
  • stmt_cache__size — максимальное количество ресурсов. По умолчанию 1024.

Отключение пула запросов

По-умолчанию, пул запросов включен. Для отключения пула необходимо установить любое из свойств «stmt_cache__time» или «stmt_cache__size» равным 0.

Настройка пула запросов через диалог Data Links

Для удобства использования настройка пула запросов может осуществляться через диалог Data Links.


Дата публикации: 13.08.2009. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт https://www.ibprovider.com/rus обязательна.