×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.15.2. Когда использовать JIT?

Компиляция JIT полезна в первую очередь для долго выполняющихся CPU-интенсивных запросов. Часто это аналитические запросы. Для коротких запросов дополнительные накладные расходы на выполнение компиляции JIT часто будут превышать время, которое она может сэкономить.

Чтобы определить, следует ли использовать компиляцию JIT, используется общая предполагаемая стоимость запроса (см. Глава 7.18 и Раздел 3.4.7.2). Предполагаемая стоимость запроса будет сравниваться с настройкой jit_above_cost. Если стоимость выше, будет выполнена компиляция JIT. Затем требуются два дополнительных решения. Во-первых, если предполагаемая стоимость превышает значение настройки jit_inline_above_cost, короткие функции и операторы, используемые в запросе, будут встроены. Во-вторых, если предполагаемая стоимость превышает значение настройки jit_optimize_above_cost, применяются дорогостоящие оптимизации для улучшения сгенерированного кода. Каждая из этих опций увеличивает накладные расходы на компиляцию JIT, но может значительно сократить время выполнения запроса.

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

Примечание

Если для параметра jit установлено значение off или если реализация JIT недоступна (например, потому что сервер был скомпилирован без --with-llvm), компиляция JIT выполняться не будет, даже если она была бы полезна согласно приведённым выше критериям. Установка jit в значение off влияет как на этап планирования, так и на этап выполнения.

Для проверки использования JIT можно использовать команду EXPLAIN. В качестве примера приведём запрос, который не использует JIT:

=# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class;
                                                 QUERY PLAN
-------------------------------------------------------------------​------------------------------------------
 Aggregate  (cost=16.27..16.29 rows=1 width=8) (actual time=0.303..0.303 rows=1 loops=1)
   ->  Seq Scan on pg_class  (cost=0.00..15.42 rows=342 width=4) (actual time=0.017..0.111 rows=356 loops=1)
 Planning Time: 0.116 ms
 Execution Time: 0.365 ms
(4 rows)

Учитывая стоимость плана, вполне логично, что JIT не использовался; стоимость JIT была бы больше потенциальной экономии. Изменение ограничений по стоимости приведёт к использованию JIT:

=# SET jit_above_cost = 10;
SET
=# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class;
                                                 QUERY PLAN
-------------------------------------------------------------------​------------------------------------------
 Aggregate  (cost=16.27..16.29 rows=1 width=8) (actual time=6.049..6.049 rows=1 loops=1)
   ->  Seq Scan on pg_class  (cost=0.00..15.42 rows=342 width=4) (actual time=0.019..0.052 rows=356 loops=1)
 Planning Time: 0.133 ms
 JIT:
   Functions: 3
   Options: Inlining false, Optimization false, Expressions true, Deforming true
   Timing: Generation 1.259 ms (Deform 0.000 ms), Inlining 0.000 ms, Optimization 0.797 ms, Emission 5.048 ms, Total 7.104 ms
 Execution Time: 7.416 ms

Как видно здесь, JIT использовался, но встраивание и дорогостоящая оптимизация — нет. Если бы также были уменьшены значения jit_inline_above_cost или jit_optimize_above_cost, это изменило бы ситуацию.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению