CHANGE_SESSION_PRIORITY - Amazon Redshift

CHANGE_SESSION_PRIORITY

CHANGE_SESSION_PRIORITY permite que superusuários alterem imediatamente a prioridade de qualquer sessão no sistema. Somente uma consulta, uma sessão ou um usuário pode ser executado com a prioridade CRITICAL.

Sintaxe

CHANGE_SESSION_PRIORITY(pid, priority)

Argumentos

pid

O identificador de processo da sessão cuja prioridade é alterada. O valor -1 se refere à sessão atual. Requer um valor INTEGER.

priority

A nova prioridade que será atribuída à sessão. Esse argumento deve ser uma string com o valor CRITICAL, HIGHEST, HIGH, NORMAL, LOW ou LOWEST.

Tipo de retorno

Nenhum

Exemplos

Para retornar o identificador do processo do servidor que lida com a sessão atual, use o exemplo a seguir.

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

Neste exemplo, a prioridade da sessão atual é alterada para LOWEST.

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

Neste exemplo, a prioridade da sessão atual é alterada para HIGH.

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

Para criar um procedimento armazenado que altera a prioridade de uma sessão, use o exemplo a seguir. A permissão para executar esse procedimento armazenado é concedida ao usuário test_user do banco de dados.

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;

Depois, o usuário do banco de dados denominado test_user chama o procedimento.

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