O gerenciamento de sessões do Database Autonomy Service (DAS) permite monitorar sessões ativas e anormais do banco de dados em tempo real e tomar medidas para resolver problemas de desempenho. Você pode visualizar métricas de sessão, executar a análise de SQL de 10 segundos, aplicar limitação de SQL, otimizar instruções SQL e encerrar sessões.
Os exemplos neste documento usam uma instância do ApsaraDB RDS for MySQL.
Pré-requisitos
A instância de banco de dados está conectada ao DAS e apresenta o status Normal Access.
A instância de banco de dados não é do ApsaraDB RDS for SQL Server. O DAS não oferece gerenciamento de sessões para instâncias do ApsaraDB RDS for SQL Server.
Em instâncias do RDS MySQL 8.0 com versões secundárias do mecanismo anteriores a 20230610, a execução simultânea de comandos como COM_STATISTICS, COM_CHANGE_USER e a instrução SHOW PROCESSLIST pode causar deadlocks e resultar em falhas de conexão da instância. Atualize para a versão secundária mais recente do mecanismo para evitar esse problema.
Abrir o gerenciamento de sessões
Faça login no console do DAS.
No painel de navegação à esquerda, escolha Intelligent O&M Center > Instance Monitoring.
Localize a instância de banco de dados desejada e clique em ID da instância.
No painel à esquerda, clique em Instance Sessions.
A aba Session Management exibe duas seções: Instance Sessions e Session Statistics.
Sessões da instância
A seção Instance Sessions mostra detalhes das sessões e fornece ações de diagnóstico.
Métricas em tempo real
O cabeçalho da seção exibe as seguintes métricas:
|
Métrica |
Descrição |
|
Sessões excepcionais |
Quantidade de sessões sinalizadas como anormais |
|
Sessões ativas |
Número de sessões atualmente ativas |
|
Maior duração de execução |
Tempo decorrido da consulta em execução há mais tempo |
|
Utilização da CPU |
Uso atual da CPU pela instância |
|
Uso de conexões |
Contagem atual de conexões em relação ao limite |
Executar a análise de SQL de 10 segundos
Clique em 10s SQL Analysis no canto superior direito da seção. A caixa de diálogo exibe a atividade de consulta capturada em uma janela de 10 segundos, incluindo:
Informações resumidas
Logs de consultas lentas
Visão geral do SQL
Para obter mais informações, consulte Análise de SQL de 10 segundos.
Ativar a limitação de SQL
Clique em SQL Throttling para abrir a caixa de diálogo SQL Throttling. Configure os parâmetros para aplicar a limitação de SQL baseada em limiares nas sessões.
Para obter mais informações, consulte Limitação de SQL.
Otimizar SQL
Na lista de sessões, clique em Optimize para otimizar uma instrução SQL.
Para obter mais informações, consulte Otimização de SQL.
Exportar sessões ativas
Exporte as sessões ativas da seção Instance Sessions.
Encerrar sessões
Para encerrar uma sessão, insira a conta e a senha do banco de dados onde ela foi criada. Também é possível usar uma conta com permissões para encerrar sessões criadas por outras contas, como uma conta privilegiada.
A coluna User mostra a conta do banco de dados que criou cada sessão. Clique em End Session History para visualizar registros de sessões encerradas.
Estatísticas de sessões
A seção Session Statistics exibe informações resumidas e estatísticas de sessões agrupadas por usuário, source de acesso ou banco de dados.
As informações resumidas incluem:
|
Métrica |
Descrição |
|
Número total de sessões |
Todas as sessões na instância |
|
Total de sessões em andamento |
Sessões atualmente em progresso |
|
Maior duração de sessão |
Duração da sessão mais longa |
Exporte as informações resumidas e as estatísticas de sessões por usuário, source de acesso ou banco de dados.
Perguntas frequentes
Por que um sinal de porcentagem (%) aparece na coluna Access Source?
Um sinal de porcentagem (%) pode aparecer na coluna Access Source, na aba Source Statistics da aba SQL Explorer, quando um procedimento armazenado é usado.
Os passos a seguir reproduzem esse comportamento. Neste exemplo, a instância de banco de dados é do ApsaraDB RDS for MySQL, a conta de teste é test_user e o banco de dados de teste é testdb.
Crie um banco de dados e uma conta padrão e conceda permissões no banco de dados para a conta padrão no console do ApsaraDB RDS. Para mais detalhes, consulte Criar contas e bancos de dados.
Conecte-se à instância como test_user usando a CLI. Para mais detalhes, consulte Usar um cliente de banco de dados ou a CLI para conectar-se a uma instância do ApsaraDB RDS for MySQL.
-
Mude para o banco de dados testdb e crie um procedimento armazenado:
-- Switch to the testdb database. USE testdb; -- Create a stored procedure. DELIMITER $$ DROP PROCEDURE IF EXISTS `das` $$ CREATE DEFINER=`test_user`@`%` PROCEDURE `das`() BEGIN SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID(); END $$ DELIMITER; Conecte-se à instância de banco de dados com uma conta privilegiada. Para mais detalhes, consulte Usar um cliente de banco de dados ou a CLI para conectar-se a uma instância do ApsaraDB RDS for MySQL.
-
Chame o procedimento armazenado:
-- Switch to the testdb database. USE testdb; -- Call the stored procedure. CALL das(); +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+ | 487818 | test_user | %:2065 | testdb | Query | 0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() | +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
A coluna HOST mostra %:2065, o que faz com que o sinal de porcentagem apareça na coluna Access Source.
Quais sessões são marcadas como anormais para instâncias do ApsaraDB RDS for MySQL e clusters do PolarDB for MySQL?
As seguintes sessões são marcadas como anormais:
|
Condição |
Detalhes |
|
SQL bloqueante com duração de execução superior a 30 segundos |
Instruções SQL bloqueantes ocupam recursos por um período prolongado e impedem a execução de outras instruções SQL. Exemplos comuns incluem a instrução |
|
Transações com duração superior a 30 segundos |
Transações de longa duração que retêm recursos além do limiar de 30 segundos. |
|
Transações não confirmadas sem nova execução de SQL por mais de 10 segundos |
Se uma transação for iniciada em uma sessão, mas nenhuma nova instrução SQL for executada por mais de 10 segundos, é provável que o comando |