← Questões de Banco de Dados

Banco de Dados · CESPE/CEBRASPE · 2023

Questão comentada de Banco de Dados

Considerando que, em um banco de dados PostgreSQL 9.2, tenha sido identificado um lock causado por uma sessão com pid 13652, assinale a opção que apresenta o comando que deve ser executado para eliminar a sessão.

Gabarito: E

No PostgreSQL, quando voce quer encerrar uma sessao que esta segurando um lock, a funcao classica e `pg_terminate_backend(pid)`. Ela manda o processo do backend parar de vez, encerrando a conexao daquela sessao. Em prova, isso costuma aparecer como uma funcao do proprio PostgreSQL, sem firula de `execute`, `immediate` ou coisas de outra linguagem SQL. O detalhe importante e que essa funcao e chamada com `SELECT`, porque no PostgreSQL muitas funcoes de administracao sao executadas assim. Portanto, para eliminar a sessao com PID 13652, o comando correto e `SELECT pg_terminate_backend(13652);`. Diferenca boa de guardar: `pg_cancel_backend(pid)` apenas cancela a consulta em execucao, mas nao derruba a sessao. Ja `pg_terminate_backend(pid)` encerra o backend de verdade. Em banca CESPE, esse tipo de cobranca adora trocar cancelar por terminar para ver se voce esta atento. A base aqui e a propria documentacao do PostgreSQL: `pg_terminate_backend` encerra a sessao do processo informado, enquanto `pg_cancel_backend` so interrompe a query atual. Em resumo, se a ideia e eliminar a sessao que gerou o lock, voce mata a conexao, nao apenas a instrucao.

Continue treinando

Questões relacionadas