Перейти к содержимому
Последнее обновление

CREATE WORKLOAD POLICY

Описание​

Создаёт политику рабочей нагрузки, которая выполняет соответствующее действие над запросом при выполнении определённых условий.

Синтаксис​

CREATE WORKLOAD POLICY [ IF NOT EXISTS ] <workload_policy_name>
CONDITIONS(<conditions>) ACTIONS(<actions>)
[ PROPERTIES (<properties>) ]

Обязательные параметры​

  1. <workload_policy_name>: Имя политики рабочей нагрузки.

  2. <conditions>

    • be_scan_rows: Количество строк, просканированных SQL-запросом в рамках одного процесса BE. Если SQL-запрос выполняется на BE в нескольких параллельных экземплярах, указывается суммарное значение по всем этим экземплярам.
    • be_scan_bytes: Количество байтов, просканированных SQL-запросом в рамках одного процесса BE. Если SQL-запрос выполняется на BE в нескольких параллельных экземплярах, указывается суммарное значение по всем этим экземплярам в байтах.
    • query_time: Время выполнения SQL-запроса в одном процессе BE в миллисекундах.
    • query_be_memory_bytes: Поддерживается начиная с версии 2.1.5. Объём памяти, используемой SQL-запросом в рамках одного процесса BE. Если SQL-запрос выполняется на BE в нескольких параллельных экземплярах, указывается суммарное значение по всем этим экземплярам в байтах.
  3. <actions>

    • cancel_query: Отменяет запрос.

Необязательные параметры​

  1. <properties>
    • enabled: Может принимать значения true или false; по умолчанию true. Значение true означает, что политика включена; false означает, что она отключена.

    • priority: Положительное целое число в диапазоне от 0 до 100; по умолчанию 0. Чем больше значение, тем выше приоритет. Если запрос соответствует нескольким политикам, выбирается политика с наивысшим приоритетом.

    • workload_group: Политику можно привязать к одной группе рабочей нагрузки; в этом случае она действует только для этой группы. По умолчанию значение пустое, что означает применение ко всем запросам.

      Поскольку сама группа рабочей нагрузки принадлежит вычислительной группе, значение этого свойства должно соответствовать следующим правилам:

      • Облачный режим (с разделением хранения и вычислений): Требуется полная форма <compute_group>.<workload_group>, например 'workload_group'='compute_group_a.wg1'. Краткая форма <workload_group>, более одной точки . или пустые части имени (например, .wg1 или wg1.) отклоняются с сообщением: workload_group must be '<compute_group>.<workload_group>' in cloud mode.
      • Необлачный режим (с совмещением хранения и вычислений): Допустимы две формы:
        • <workload_group>: по умолчанию политика привязывается к одноимённой группе рабочей нагрузки в группе ресурсов по умолчанию (default).
        • <resource_group>.<workload_group>: явно указывает группу ресурсов. Здесь префикс фактически обозначает группу ресурсов (Tag); синтаксис совпадает с облачным режимом исключительно для единообразия.
        Более одной точки . или пустые части имени также отклоняются с сообщением: workload_group must be '<workload_group>' or '<resource_group>.<workload_group>' in non-cloud mode.

Требования к правам доступа​

Необходимо иметь как минимум права ADMIN_PRIV.

Примеры​

  1. Создайте политику рабочей нагрузки, которая отменяет любой запрос, выполняющийся дольше 3 секунд:

    create workload policy kill_big_query conditions(query_time > 3000) actions(cancel_query)
  2. Создайте политику рабочей нагрузки, которая по умолчанию отключена:

    create workload policy kill_big_query conditions(query_time > 3000) actions(cancel_query) properties('enabled'='false')
  3. Создайте политику, которая действует только для группы рабочей нагрузки wg1 в вычислительной группе compute_group_a в облачном режиме (обратите внимание на полную форму имени):

    create workload policy kill_big_query conditions(query_time > 3000) actions(cancel_query) properties('workload_group'='compute_group_a.wg1')