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.
- Si está marcado como breve
- El grupo de recursos con el que está asociado
- Su prioridad
- Cero o más condiciones
- Una acción
- Si se aplica a planes administrativos así como a planes enviados en nombre de otros usuarios
- 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:
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.IF PRIORITY IS NORMAL THEN SET PRIORITY LOW - 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:
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.IF DATABASE IS DB1 THEN LIMIT 1
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
- 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 <=.
Acciones de una regla del planificador de modificación
- 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
- Grupo de recursos
- Prioridad
- Estimación del coste
- Si es breve
- Etiquetas
- 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:
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.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 - 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
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
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
- 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.
- Para impedir que una prueba de final de mes afecte al rendimiento, puede añadir una etiqueta con el nombre
eom_testpara 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
etla 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
user_is_jill a cada plan para el que el usuario asociado es jill:IF USER IS jill THEN ADD TAG user_is_jillDespué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.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 2Información del cliente
- 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.
- 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)
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.