В новом 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-запросов, который хранит подготовленные и созданные команды и позволяет значительно экономить время при большом числе повторяющихся запросов.
Пул запросов будет особенно актуален для следующих задач:
- Подключение к Firebird и Interbase через MS SQL Linked Server.
- Client Cursor Engine (используется в dbGo компонентах Delphi).
- ASP приложения.
Пул запросов и метаданные
Пул запросов может мешать изменению метаданных. Поэтому для решения возможных проблем с кэшированием, при выполнении 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.