Limitación de recursos para sentencias SQL reactivamente

Puede utilizar el recurso de límite de recursos para establecer límites para el control reactivo, lo que significa que Db2 detiene las sentencias de SQL de contextos especificados que sobreutilizan los recursos del sistema.

Inicio del cambio

Antes de empezar

Establezca el parámetro del subsistema RLFENABLE en un valor apropiado para los tipos de sentencias SQL que desea limitar.

fin del cambio

Acerca de esta tarea

Cuando se especifica control reactivo, el recurso de límite de recursos detiene una sentencia SQL actualmente en ejecución que cumpla las condiciones de una fila de la tabla de límite de recursos si la sentencia SQL utiliza más recursos que la cantidad máxima de recursos especificada por el valor de la columna ASUTIME en esa fila. Si un sentencia supera un límite de control reactivo, el programa de aplicación recibe un SQLCODE -905. La aplicación debe incluir el código que lleva a cabo la acción apropiada basándose en esta situación.

Los límites de recursos se aplican únicamente a los siguientes tipos de sentencias SQL:

  • SELECT
  • INSERT
  • UPDATE
  • MERGE
  • TRUNCATE
  • DELETE
Puede especificar límites de recursos para sentencias SQL dinámicas y sentencias SQL estáticas.

Para las sentencias que contienen funciones definidas por el usuario externo, el tiempo de recurso utilizado por las funciones definidas por el usuario no se cuenta como parte del tiempo de recurso de la sentencia. No se aplican límites a los ID de autorización primarios ni secundarios que tengan autoridad SYSADM de instalación o SYSOPR de instalación.

Procedimiento

Para especificar límites de recursos reactivos:

Especifique cualquiera de los dos valores siguientes en la columna RLFFUNC de la tabla de límites de recursos:
«2»
Limite las sentencias de SQL dinámico por nombre de paquete, ID de autorización, ID de recopilación, el nombre de la ubicación del solicitante o una combinación de los anteriores. (RLST)
«8»
Limite las sentencias de SQL dinámico por información de cliente (RLMT).
Inicio del cambio«A»fin del cambio
Inicio del cambioLimite las sentencias de SQL estático por nombre de paquete (RLST).fin del cambio
Inicio del cambio«B»fin del cambio
Inicio del cambioLimite las sentencias de SQL estático por información de cliente (RLMT).fin del cambio

Resultados

Db2 restablece el ASUTIME acumulado en los siguientes eventos:

  • Tras completarse la ejecución de una sentencia que no utiliza ningún cursor.
  • Tras el cierre del cursor correspondiente a una sentencia.
  • Durante la ejecución de PREPARE para sentencias dinámicas.

Cualquier sentencia que alcance o supere un límite que se haya definido en una tabla de límite de recursos termina con el SQLCODE -905 y el correspondiente SQLSTATE '57014'. Puede establecer un límite único para todos los usuarios, límites diferentes para usuarios individuales o ambas cosas. No se aplican límites a los ID de autorización primarios ni secundarios que tengan autorización SYSADM o SYSOPR para la instalación. Para las consultas que se introducen en Db2 desde un sitio remoto, se utilizan los límites del sitio local.

Si la sentencia fallida implica un cursor SQL, la posición del cursor no cambia. Luego la aplicación puede cerrar dicho cursor. Todas las demás operaciones con el cursor no se ejecutan y se genera el mismo código de error de SQL.

Si la sentencia SQL fallida no implica ningún cursor, todos los cambios que la sentencia realice se deshacen antes de que el código de error se devuelva a la aplicación. La aplicación puede emitir otra sentencia SQL o confirmar todo el trabajo realizado hasta el momento.

Qué hacer a continuación

Considere la posibilidad de establecer límites de recursos predeterminados que se apliquen cuando no se pueda acceder a las tablas de límites de recursos o no existan filas coincidentes en las tablas de límites de recursos. Para obtener información detallada sobre cómo crear límites de recursos predeterminados, consulte Establecer límites de recursos predeterminados para instrucciones SQL.