Reglas del planificador

Un plan es una unidad de trabajo que crea el optimizador para gestionar una consulta. Cada plan se basa en el contenido de una consulta y en las estadísticas acerca de las tablas en las que actúa la consulta. Normalmente, una única consulta devuelve un único plan, pero en ocasiones, también se generan planes auxiliares.

El planificador coloca cada uno de los planes que recibe en una agrupación de candidatos para su ejecución. Cuando el planificador detecta que hay capacidad para ejecutar un plan (por ejemplo, porque ha notificado que se ha completado la ejecución de otro plan), selecciona el plan desde esta agrupación. El plan que selecciona el planificador lo determinan los valores SQB, GRA y PQE del sistema y los atributos de cada plan:
  • Si está marcado como breve
  • El grupo de recursos con el que está asociado
  • Su prioridad
Una regla del planificador es un objeto que influyen en la programación de planes. Cada regla del planificador especifica:
  • Cero o más condiciones
  • Una acción
  • Si se aplica a planes administrativos así como a planes enviados en nombre de otros usuarios
La acción se lleva a cabo para cada plan que cumple todas las condiciones especificadas. Si no se especifica ninguna condición, la acción se lleva a cabo para todos los planes.
Las reglas del planificador pueden ser de uno de los tipos siguientes:
Modificación
Una regla del planificador de modificación modifica los atributos de o termina anormalmente un plan. Por ejemplo, la regla siguiente cambia un plan con una prioridad normal por un plan con prioridad baja:
IF PRIORITY IS NORMAL THEN SET PRIORITY LOW
Cada vez que el planificador recibe un plan, evalúa todas las reglas del planificador de modificación y lleva a cabo las acciones adecuadas.
Limitación
Una regla del planificador de limitación limita el número de planes que se pueden ejecutar simultáneamente. Por ejemplo, la regla siguiente evita que más de un plan asociados con una consulta en tablas u objetos de la base de datos con el mismo DB1 se ejecuten al mismo tiempo:
IF DATABASE IS DB1 THEN LIMIT 1
Cada vez que el planificador selecciona un plan para ejecutarlo, evalúa todas las reglas del planificador de limitación. El plan se ejecuta sólo si haciéndolo no se supera un límite impuesto por una regla del planificador de limitación. De lo contrario, el plan espera.

De forma predeterminada, utilizando las reglas del planificador, puede emplear un nivel de control alto sobre la ejecución del plan. La regla del planificador no se aplica a planes administrativos a menos que lo especifique explícitamente cuando crea la regla.

Condiciones de las reglas del planificador

Las condiciones de una regla del planificador determinan si se aplica a un plan concreto:
RESOURCEGROUP
El grupo de recursos del plan. Normalmente se trata del grupo de recursos del usuario que enviara la consulta correspondiente; sin embargo, se puede cambiar mediante una regla de planificador de modificación. El grupo de recursos especificado ya debe existir.
PRIORIDAD
Prioridad del plan:
  • CRÍTICO
  • ALTO
  • NORMAL
  • BAJO
TIPO
Tipo de plan:
LOAD
El plan carga (lee) datos de una tabla externa.
UNLOAD
El plan descarga (graba) datos en una tabla externa.
GENERATE STATISTICS
El plan genera o actualiza estadísticas de base de datoss
GROOM
El plan elimina de tablas registros obsoletos y suprimidos.
UDX
El plan ejecuta un objeto definido por el usuario.
BASE DE DATOS
La base de datos a la que el plan debe acceder. Ésta es la base de datos a la que está conectada la sesión. La base de datos especificada ya debe existir.
USUARIO
El usuario que ha enviado la consulta que corresponde al plan. El usuario especificado ya debe existir. El usuario especificado no puede ser Administrador. Para incluir planes asociados con trabajos del administrador, especifique la opción INCLUDING ADMIN.
TABLA
La tabla de usuario a la que accede el plan. La tabla especificada ya debe existir. Si se necesitan el nombre de la base de datos o el nombre del esquema para identificar la tabla de forma exclusiva, deben especificarse como parte del nombre de la tabla.
ETIQUETA
Cadena que debe asociarse al plan y que puede utilizarse para referenciarlo (véase Etiquetas).
CLIENT_USER_ID
ID de usuario con el que se ejecuta la aplicación que ha enviado la consulta correspondiente. Este valor se especifica para la sesión y, normalmente, lo establece una aplicación. El valor debe especificarse entre comillas simples.
CLIENT_APPLICATION_NAME
Nombre de la aplicación que ha enviado la consulta correspondiente. Este valor se especifica para la sesión y, normalmente, lo establece una aplicación. El valor debe especificarse entre comillas simples.
CLIENT_WORKSTATION_NAME
Nombre de host de la estación de trabajo en la que se ejecuta la aplicación que ha enviado la consulta correspondiente. Este valor se especifica para la sesión y, normalmente, lo establece una aplicación. El valor debe especificarse entre comillas simples.
CLIENT_ACCOUNTING_STRING
Valor de la serie de contabilidad. Este valor se especifica para la sesión y, normalmente, lo establece una aplicación. El valor debe especificarse entre comillas simples.
ESTIMATE
El límite inferior, el límite superior o ambos límites del coste estimado del plan, en segundos:
  • Especifique un límite inferior utilizando el operador > o >=.
  • Especifica un límite superior utilizando el operador < o <=.
Si una regla de planificador especifica un límite superior y uno inferior, el límite inferior debe ser menor que el límite superior.

Acciones de una regla del planificador de modificación

Una regla del planificador de modificación puede especificar las siguientes acciones:
SET SHORT
Establece el distintivo SQB para el plan, independientemente de la estimación del coste y del umbral establecido por el valor de registro host.schedSQBNominalSecs.
SET NOT SHORT
No establezca el distintivo SQB para el plan, independientemente de la estimación del coste y del umbral establecido por el valor de registro host.schedSQBNominalSecs.
ADD TAG
Añade una etiqueta a este plan. Cada plan puede tener muchas etiquetas asociadas a él.
SET PRIORITY
Cambia la prioridad del plan. Esta acción ignora los límites de usuario y grupo en la prioridad.
SET ESTIMATE
Establece la estimación de coste del plan, en segundos. Esta acción sustituye la estimación calculada por el planificador. No afecta al distintivo SQB.
INCREASE PRIORITY
Aumenta la prioridad del plan en un nivel, por ejemplo de NORMAL a HIGH. Ignora el intento de aumentar a una prioridad CRITICAL, e ignora los límites de usuario y grupo en la prioridad.
DECREASE PRIORITY
Disminuye la prioridad del plan en un nivel, por ejemplo de NORMAL a LOW. Ignora el intento de disminuir a una prioridad LOW, e ignora los límites de usuario y grupo en la prioridad.
EXECUTE AS RESOURCEGROUP
Ejecute el plan como si perteneciera al grupo de recursos especificado.
ABORT
Anule el plan. Proporciona una forma de cancelar trabajos temporalmente que implican tablas, bases de datos o usuarios específicos, por ejemplo, durante el mantenimiento. El mensaje especificado se pasa al usuario que emitió la consulta correspondiente.

Uso de las reglas del planificador con SQB, GRA y PQE

Una regla del planificador puede modificar los siguientes atributos de plan:
  • Grupo de recursos
  • Prioridad
  • Estimación del coste
  • Si es breve
  • Etiquetas
Le proporciona una manera de clasificar y manipular planes de forma que influyan en los mecanismos SQB, GRA y PQE:
SQB
Puede modificar si un plan es breve. Por ejemplo, la siguiente regla del planificador hace que todos los planes que ejecutan objetos definidos por el usuario se consideren breves, independientemente de las estimaciones de coste:
IF TYPE IS UDX THEN SET SHORT
GRA
Puede asociar planes a grupos de recursos concretos. Por ejemplo, la siguiente regla del planificador asocia planes con grupos de recursos basados en las bases de datos a las que acceden:
IF DATABASE IS DB1 THEN EXECUTE AS RESOURCEGROUP RSG_A
IF DATABASE IS DB2 THEN EXECUTE AS RESOURCEGROUP RSG_A
IF DATABASE IS DB3 THEN EXECUTE AS RESOURCEGROUP RSG_B
IF DATABASE IS DB4 THEN EXECUTE AS RESOURCEGROUP RSG_A
IF DATABASE IS DB5 THEN EXECUTE AS RESOURCEGROUP RSG_B
Configurando los grupos de recursos RSG_A y RSG_B adecuadamente, puede hacer que la asignación de recursos dependa de las bases de datos a las que se está accediendo. Tenga en cuenta que los grupos de recursos RSG_A y RSG_B no tienen asignados usuarios, pero se pueden utilizar de forma exclusiva como medio para asignar recursos del sistema.
PQE
Puede modificar la prioridad de plan. Por ejemplo, las siguientes reglas del planificador modifican la prioridad de los planes basándose en las tablas a las que están accediendo:
IF TABLE IS T1 THEN SET PRIORITY LOW
IF TABLE IS T7 THEN DECREASE PRIORITY

Orden de evaluación de la regla del planificador

Las reglas del planificador se evalúan en orden alfabético (a-z, A-Z, 0-9) según sus nombres. Por ejemplo, las reglas siguientes pueden definirse:
Rule name            Rule
r2_decrease_normal   IF PRIORITY IS NORMAL THEN DECREASE PRIORITY
r3_low_to_normal     IF PRIORITY IS LOW THEN SET PRIORITY NORMAL
Cuando se procesa un plan con prioridad normal, la regla con el nombre r2_decrease_normal, que se procesa primero, hace que la prioridad del plan disminuya de NORMAL a LOW. A continuación, la regla con el nombre r3_low_to_normal hace que la prioridad del plan se vuelva a establecer en NORMAL.

Etiquetas

Una etiqueta es una serie que está asociada con y que se utiliza para hacer referencia a un plan o sesión concretos:
Etiqueta de sesión
Una etiqueta de sesión se aplica a una sesión concreta y a todas las planificaciones que están dentro del ámbito de esa sesión. Se establece especificando el parámetro ADD TAG para un mandato ALTER SESSION.
Etiqueta de planificación
Una etiqueta de planificación se aplica a una planificación concreta. Se establece especificando el parámetro ADD TAG para un mandato CREATE SCHEDULER RULE.
Una condición (pero no a más de una) de una regla del planificador puede hacer referencia a una etiqueta para influir en la programación de la planificación. Por ejemplo:
  • Para impedir que una prueba de final de mes afecte al rendimiento, puede añadir una etiqueta con el nombre eom_test para la sesión correspondiente, y crear una regla del planificador con una condición que haga referencia a esta etiqueta y que disminuya automáticamente la prioridad de cualquier plan que se origine desde esa sesión:
    IF TAG IS eom_test THEN DECREASE PRIORITY
  • Para impedir que una sesión en la que se ejecutan trabajos de extracción, transferencia y carga (ETL) disminuya el rendimiento, puede añadir una etiqueta con el nombre etl a esas sesión, y crear una regla del planificador con una condición que hace referencia a esa etiqueta y que establece automáticamente la prioridad de cualquier plan plan que se origine desde esa sesión en LOW:
    IF TAG IS etl THEN SET PRIORITY LOW
Se puede utilizar una regla del planificador para añadir una etiqueta a cada plan que cumple las condiciones que especifica. Por ejemplo, una regla del planificador puede añadir la etiqueta user_is_jill a cada plan para el que el usuario asociado es jill:
IF USER IS jill THEN ADD TAG user_is_jill
Después, las reglas del planificador siguientes pueden hacer referencia a esta etiqueta. Esto es útil cuando tiene una condición grande o compleja utilizada por varias reglas del planificador.
Creando varias reglas del planificador, cada una de las cuales añade la misma etiqueta a cada plan que cumple sus condiciones, puede especificar una serie de condiciones que se comportan como si estuvieran vinculadas por un operador OR lógico. Por ejemplo, las tres reglas siguientes, cuando se evalúan en el orden mostrado, hacen que el límite se establezca en 2 para todos los planes para los que la base de datos es reportdb o el usuario es joe:
IF DATABASE IS reportdb THEN ADD TAG no_more_than_2
IF USER IS joe THEN ADD TAG no_more_than_2
IF TAG IS no_more_than_2 THEN LIMIT 2

Información del cliente

La aplicación que ha enviado la consulta asociada con un plan se denomina cliente del plan. Se puede especificar la siguiente información sobre el cliente para una sesión y puede estar referenciada por una condición de la regla del planificador:
ID de usuario
ID de usuario con el que se ejecuta el cliente.
Nombre de aplicación
El nombre del cliente.
Nombre de estación de trabajo
Nombre de host de la estación de trabajo en la que se ejecuta el cliente.
Serie de contabilidad
El valor de la serie de contabilidad de la información de cliente que se especifica para la sesión.
Estos campos de información se pueden establecer por medio de:
  • Un administrador, emitiendo el mandato SET nzsql
  • Un programa de aplicación, mediante la API ODBC (véase la Guía de instalación y configuración deIBM® Netezza® ODBC, JDBC, OLE DB y .NET)
Cada valor puede tener hasta 1024 caracteres.

Seguridad de las reglas del planificador

Para crear una regla del planificador, debe ser el usuario administrativo o la cuenta de usuario debe tener el privilegio Scheduler Rule. El usuario administrativo y un usuario con el privilegio Scheduler Rule también pueden listar, descartar, modificar, desactivar o reactivar reglas, independientemente de quién las ha creado o a quién pertenecen

El propietario de una regla del planificador es, por defecto, el usuario que la ha creado; sin embargo, la propiedad se puede reasignar a un usuario diferente. El propietario de una regla del planificador puede listar, descartar, modificar, desactivar o reactivar esa regla, independientemente de los privilegios que se hayan otorgado al usuario.