4 ключевых отличия нового IBProvider v3.4, которые делают ваши приложения еще быстрее
- Можно прерывать длительную загрузку результирующих множеств в SQL-скриптах
- Можно управлять отложенной загрузкой данных и настраивать её по своему усмотрению
- Фоновый сборщик мусора стал многопоточным
- Ускорена работа с BLOB-полями и массивами в обновляемых множествах.
1. Теперь можно прерывать загрузку результирующих множеств в SQL-скриптах
В новой версии IBProvider улучшена реализация отмены выполнения команды. Теперь можно прерывать не только выполнение запросов, но и загрузку результирующих множеств из SQL-скриптов. Это позволяет сбросить длительную операцию загрузки и продолжить работу вашего приложения.
2. Теперь вы можете управлять отложенной загрузкой данных
Для оптимизации производительности данные, которые хранятся в массивах и BLOB-полях, не передаются клиенту во время выполнения основного запроса. Вместо этого они подгружаются по необходимости, в момент, когда клиент явно запрашивает требуемую информацию.
Новые свойства инициализации IBProvider позволяют изменить данное поведение. Теперь вы можете запретить отложенную загрузку BLOB и массивов для колонок и для OUT-параметров. За это отвечают соответствующие свойства: deferred_data и deferred_out_param.
Особенности работы отложенного чтения с OUT-параметрами и транзакциями
По умолчанию, если используются OUT-параметры совместно с автоматическими транзакциями, то данные загружаются сразу и отложенная загрузка запрещена. Это позволяет завершить автоматическую транзакцию еще до выхода из метода ICommand::Execute (в случае ADODB — Command.Execute)
Если в команде используются OUT-параметры, отложенная загрузка возможна только при получении BLOB-данных в виде объекта (Storage Object).
Если отложенная загрузка разрешена, то объект будет загружать данные из БД по требованию и для этого требуется активная транзакция.
Если отложенная загрузка запрещена, то BLOB-объект сначала будет загружен в локальное хранилище временных данных, а объект будет возвращать данные из этого хранилища. В этом случае, активная транзакция не требуется.
Что такое локальное хранилище временных данных?
Для хранения данных, с которыми производится работа в рамках одного подключения, IBProvider может создавать временный страничный файл. Первоначально данных загружаются в оперативную память кеша, размер которого определяется новым свойством инициализации temp_stg__memory_usage. Если новые данные не помещаются в кеш, самая старая информация выгружается в файл, а новая информация остается в памяти.
3. Фоновый сборщик мусора стал многопоточным
В предыдущих выпусках фоновый сборщик мусора обновляемых множеств был однопоточным. Теперь он распараллеливает свою работу. Локальное хранилище временных данных также использует фоновый многопоточный сборщик мусора.
4. Ускорена работа с BLOB-полями и массивами в обновляемых множествах.
Впервые для удаления BLOB-данных из локальных хранилищ используются отложенные и асинхронные операции. Это позволяет сократить реальное время, которое основной пользовательский поток (thread) проводит внутри кода IBProvider.
все последующие версии в течение года абсолютно БЕСПЛАТНО!