🧚 Ei! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
15 de julho de 2024 Por Matthew Rathbone

Encerrando uma query

Antes de encerrar uma query, você precisa identificar quais queries estão causando problemas. Use o SQL a seguir para listar todas as queries em execução junto com sua duração:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

Saída esperada:

pid user_name starttime query elapsed
123 admin 2023-10-01 10:00:00 SELECT * FROM ? 01:20:15
456 analyst 2023-10-01 10:45:00 UPDATE table ? 00:35:10
… … … … …

A coluna elapsed mostra há quanto tempo a query está em execução.

Depois de identificar a query problemática (usando o pid da lista acima), você pode encerrá-la. Use o seguinte comando:

CANCEL pid;

Exemplo:

CANCEL 123;

Verificando o encerramento da query

Para garantir que a query foi encerrada, execute novamente a query inicial:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

A query encerrada não deve mais aparecer nos resultados.

Lidando com queries bloqueadas

Às vezes, queries ficam bloqueadas e precisam ser encerradas para liberar recursos. Você pode identificar queries bloqueadas usando a tabela STV_BLOCKED.

SELECT
    b.pid,
    b.user_name,
    b.db,
    b.query,
    l.pid AS blocked_by_pid,
    l.user_name AS blocked_by_user
FROM
    stv_blocked b
JOIN
    stv_locks l
ON
    b.lock_owner_pid = l.pid;

Saída esperada:

pid user_name db query blocked_by_pid blocked_by_user
5678 analytics reporting SELECT count(*) FROM ?; 9101 Admin

Para encerrar uma query bloqueada, use o comando CANCEL como mostrado anteriormente:

CANCEL 5678;

Automatizando o encerramento de queries

Para bancos de dados com requisitos rigorosos de desempenho, automatizar a detecção e o encerramento de queries de longa duração pode ser vantajoso. Abaixo está um exemplo de procedure para encerrar queries que rodam por mais tempo que um limite especificado:

DO $$ 
DECLARE
    long_running_query RECORD;
BEGIN
    FOR long_running_query IN
        SELECT pid
        FROM stv_recents
        WHERE state = 'Running'
        AND elapsed > interval '00:30:00' -- Replace with desired threshold
    LOOP
        EXECUTE 'CANCEL ' || long_running_query.pid;
    END LOOP;
END;
$$;

Considerações importantes

  • Permissões: apenas usuários com as permissões adequadas podem cancelar queries.
  • Impacto: encerrar uma query pode afetar o desempenho da aplicação ou causar inconsistência de dados se feito incorretamente.
  • Monitoramento: monitorar regularmente o desempenho das queries ajuda a detectar problemas cedo.

Conclusão

Gerenciar bem as queries de longa duração garante o desempenho ideal do seu cluster Amazon Redshift. Seguindo estes passos, você pode identificar e encerrar rapidamente qualquer query problemática. Implementar soluções automatizadas para monitoramento regular e encerramento de queries ajuda ainda mais a manter o desempenho.

Teste todos os comandos e scripts em um ambiente que não seja de produção antes de aplicá-los em produção, para evitar interrupções não intencionais.

Outros posts que você pode gostar:

Beekeeper Studio é um cliente de banco de dados gratuito e open source

A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit

O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

O que os usuários dizem sobre o Beekeeper Studio

★★★★★
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com bancos de dados agradável de novo."
— Alex K., Desenvolvedor de banco de dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., Engenheira Full Stack

Pronto para melhorar seu fluxo de trabalho com SQL?

download Baixar grátis