CHANGE_SESSION_PRIORITY - Amazon Redshift

CHANGE_SESSION_PRIORITY

CHANGE_SESSION_PRIORITY permite a los superusuarios cambiar de inmediato la prioridad de cualquier sesión en el sistema. Solo se puede ejecutar una sesión, usuario o consulta con la prioridad CRITICAL.

Sintaxis

CHANGE_SESSION_PRIORITY(pid, priority)

Argumentos

pid

El identificador de proceso de la sesión cuya prioridad se cambia. El valor -1 hace referencia a la sesión actual. Requiere un valor INTEGER.

priority

La nueva prioridad que asignar a la sesión. Este argumento debe ser una cadena con el valor CRITICAL, HIGHEST, HIGH, NORMAL, LOW o LOWEST.

Tipo de retorno

Ninguna

Ejemplos

Para devolver el identificador de proceso del proceso del servidor que administra la sesión actual, use el siguiente ejemplo.

SELECT pg_backend_pid(); +----------------+ | pg_backend_pid | +----------------+ | 30311 | +----------------+

En este ejemplo, la prioridad se cambia a LOWEST para la sesión actual.

SELECT CHANGE_SESSION_PRIORITY(30311, 'Lowest'); +---------------------------------------------------------------------------------------+ | change_session_priority | +---------------------------------------------------------------------------------------+ | Succeeded to change session priority. Changed session (pid:30311) priority to lowest. | +---------------------------------------------------------------------------------------+

En este ejemplo, la prioridad se cambia a HIGH para la sesión actual.

SELECT CHANGE_SESSION_PRIORITY(-1, 'High'); +-------------------------------------------------------------------------------------------------+ | change_session_priority | +-------------------------------------------------------------------------------------------------+ | Succeeded to change session priority. Changed session (pid:30311) priority from lowest to high. | +-------------------------------------------------------------------------------------------------+

Para crear un procedimiento almacenado que cambie la prioridad de una sesión, use el siguiente ejemplo. El permiso para ejecutar este procedimiento almacenado se concede al usuario de la base de datos test_user.

CREATE OR REPLACE PROCEDURE sp_priority_low(pid IN int, result OUT varchar) AS $$ BEGIN SELECT CHANGE_SESSION_PRIORITY(pid, 'low') into result; END; $$ LANGUAGE plpgsql SECURITY DEFINER; GRANT EXECUTE ON PROCEDURE sp_priority_low(int) TO test_user;

A continuación, el usuario de la base de datos denominado test_user llama al procedimiento.

CALL sp_priority_low(pg_backend_pid()); +------------------------------------------------------+ | result | +------------------------------------------------------+ | Success. Change session (pid:13155) priority to low. | +------------------------------------------------------+