Ограничение времени исполнения запроса
Содержание раздела
Ограничить время исполнения запроса на выгрузку данных можно только на этапе его исполнения в СУБД — с помощью специального указания. Возможность доступна для запросов к СУБД ADP, ADB и ADQM.
Общий тайм-аут, ограничивающий время исполнения запроса целиком, для выгрузки данных не поддерживается ни для одной из СУБД: ни с помощью HTTP-параметра fetchTimeoutMs, ни с помощью JDBC-метода setQueryTimeout.
Указание для СУБД
Указание специального вида определяет максимальное время исполнения запроса в СУБД с момента получения ею запроса и до возврата последней порции данных в систему. Это время не учитывает другие этапы обработки запроса до или после исполнения запроса в СУБД.
Указание зависит от типа СУБД:
- [ADP, ADB]
Set(statement_timeout <значение>)— значение задается в миллисекундах; при наличии расширения pg_hint_plan в СУБД также может быть задано в секундах (s), минутах (min), часах (h) или днях (d); - [ADQM]
Set(max_execution_time <значение>)— значение задается в секундах.
Примеры указаний:
-- ADP: значение задано в миллисекундах
/*+ Set(statement_timeout 30000) */
SELECT * FROM marketing.sales
DATASOURCE_TYPE = 'adp2';
-- ADP: значение задано в секундах — формат поддерживается только при наличии pg_hint_plan
/*+ Set(statement_timeout 30s) */
SELECT * FROM marketing.sales
DATASOURCE_TYPE = 'adp2';
-- ADB: значение задано в миллисекундах
/*+ Set(statement_timeout 30000) */
SELECT * FROM marketing.sales
DATASOURCE_TYPE = 'adb2';
-- ADB: значение задано в минутах — формат поддерживается только при наличии pg_hint_plan
/*+ Set(statement_timeout 0.5min) */
SELECT * FROM marketing.sales
DATASOURCE_TYPE = 'adb2';
-- ADQM: значение задано в секундах
/*+ Set(max_execution_time 30) */
SELECT * FROM marketing.sales
DATASOURCE_TYPE = 'adqm2';
Подробнее о синтаксисе и обработке указаний в разделе Указания для планировщика запросов СУБД (hints).