Trace

Eu lembro das coisas. O Trace ajuda.
O Trace é o monitor de atividade do Lily. Abra por Ferramentas › Atividade na barra lateral, no PostgreSQL, MySQL, SQL Server, ClickHouse e Trino.
Ao vivo
A aba Ao vivo lista as queries rodando agora, atualizadas a cada dois segundos: sessão, usuário, estado, há quanto tempo está rodando e a query. Queries rodando há mais de 30 segundos ficam laranja.
Cada linha abre o plano visual ou Matar esta query.
Queries que terminam em menos de dois segundos podem passar entre uma amostra e outra. A aba Top pega essas.
O que dá para ver
Ver as queries de outros usuários pede um privilégio:
| Banco | Precisa de |
|---|---|
| PostgreSQL | superusuário ou pg_read_all_stats |
| MySQL | PROCESS |
| SQL Server | VIEW SERVER STATE |
Sem ele, você vê as suas sessões e o Lily diz quantas não conseguiu mostrar. No ClickHouse e no Trino ele não consegue saber, e avisa.
Gravando
Clique em Gravar e o Trace guarda uma linha do tempo dos últimos 15 minutos. Arraste o controle de volta até o momento em que tudo ficou lento e veja o que estava rodando. Voltar ao vivo retorna.
A aba Capturadas guarda toda query que a gravação pegou, mesmo depois de terminar, com Explicar, Abrir no editor e Copiar SQL.
A gravação só roda com a janela do Trace aberta. Em Ajustes › Espaço de trabalho:
- Lembrar histórico do Trace no disco guarda a linha do tempo por 24 horas, com os valores tirados das queries, para sobreviver ao fechar o Lily. O Investigar usa como evidência.
- Me avisar enquanto o Trace estiver gravando avisa de queries mais lentas que um limite (30 segundos por padrão) e de novas esperas por lock. As notificações nunca trazem o texto da query.
- Continuar gravando com o Lily em segundo plano segue amostrando quando o Lily não é o app ativo. Um ícone na barra de menus aparece enquanto ele grava.
Bloqueios
No PostgreSQL, MySQL 8 e SQL Server, Bloqueios desenha quem está bloqueando quem: cada sessão que bloqueia, as que esperam por ela e há quanto tempo. No menu de uma sessão:
- Explicar por que está lento pede a causa para a sua ferramenta de IA, a partir da query e do plano sem os valores, da cadeia de bloqueios e do schema.
- Matar esta sessão.
Top
Top ranqueia os 50 comandos mais pesados pelo tempo total, com chamadas, tempo médio e total.
- O PostgreSQL lê o
pg_stat_statements. Se ele não estiver instalado, Ativar rodaCREATE EXTENSION pg_stat_statements; ele também precisa estar emshared_preload_librariesno servidor. - O MySQL lê o
performance_schema. - O SQL Server lê o
sys.dm_exec_query_stats, e os totais dele são tempo de CPU.
Matando
Antes de matar, o Lily confere se a sessão ainda está rodando a mesma query, e pede confirmação.
| Banco | Comando |
|---|---|
| PostgreSQL | pg_terminate_backend, que encerra a sessão inteira |
| MySQL, SQL Server | KILL |
| ClickHouse | KILL QUERY |
| Trino | system.runtime.kill_query |
Matar não está disponível em conexões somente leitura.
MongoDB e Redis
Eles têm um painel de Atividade mais simples no espaço de trabalho: operações rodando, com matar, no MongoDB, e comandos lentos e clientes no Redis. Veja as páginas deles.