Capítulo 23. Monitoramento das atividades do banco de dados

Sumário
23.1. Ferramentas padrão do Unix
23.2. O coletor de estatísticas
23.2.1. Configuração da coleta de estatísticas
23.2.2. Ver as estatísticas coletadas
23.3. Ver os bloqueios

Freqüentemente o administrador de banco de dados deseja saber, "O que o sistema está fazendo agora?". Este capítulo explica como descobrir isto.

Estão disponíveis várias ferramentas para monitorar a atividade do banco de dados e analisar o desempenho. A maior parte deste capítulo dedica-se a descrever o coletor de estatísticas do PostgreSQL, mas não se deve desprezar os programas regulares de monitoramento do Unix, como ps, top, iostat e vmstat. Também, uma vez que tenha sido identificado um comando com baixo desempenho, podem ser necessárias outras investigações utilizando o comando EXPLAIN do PostgreSQL. A Seção 13.1 discute o comando EXPLAIN e outros métodos para compreender o comportamento individual de um comando.

23.1. Ferramentas padrão do Unix

O PostgreSQL modifica, na maioria das plataformas, o seu título de comando mostrado pelo ps de forma que os processos servidor individuais possam ser prontamente identificados. Um exemplo do que é mostrado é:

$ ps auxww | grep ^postgres

postgres   960  0.0  1.1  6104 1480 pts/1    SN   13:17   0:00 postmaster -i
postgres   963  0.0  1.1  7084 1472 pts/1    SN   13:17   0:00 postgres: stats buffer process
postgres   965  0.0  1.1  6152 1512 pts/1    SN   13:17   0:00 postgres: stats collector process
postgres   998  0.0  2.3  6532 2992 pts/1    SN   13:18   0:00 postgres: tgl runbug 127.0.0.1 idle
postgres  1003  0.0  2.4  6532 3128 pts/1    SN   13:19   0:00 postgres: tgl regression [local] SELECT waiting
postgres  1016  0.1  2.4  6532 3080 pts/1    SN   13:19   0:00 postgres: tgl regression [local] idle in transaction

A forma apropriada para chamar o ps varia entre plataformas diferentes, assim como os detalhes mostrados. Este exemplo foi tirado de um sistema Linux recente. O primeiro processo listado neste exemplo é o postmaster, o processo servidor mestre. Os argumentos do comando mostrados são os mesmos fornecidos quando o postmaster foi ativado. Os dois processos seguintes implementam o coletor de estatísticas, que será descrito em detalhes na próxima seção (Não estão presentes quando o sistema é configurado para não ativar o coletor de estatísticas). Cada um dos demais processos é um processo servidor tratando uma conexão cliente. Cada um destes processos define a exibição da sua linha de comando na forma:

postgres: usuário banco_de_dados hospedeiro atividade

Os itens usuário, banco de dados e hospedeiro originais da conexão permanecem o mesmo durante toda a existência da conexão cliente, mas o indicador de atividade muda. [1] [2] A atividade pode ser idle (ou seja, ociosa, aguardando por um comando do cliente), idle in transaction (aguardando pelo cliente dentro de um bloco BEGIN), ou o nome de um tipo de comando como SELECT. Além disso, é anexado waiting se o processo servidor estiver aguardando no momento por um bloqueio mantido por outro processo servidor. No exemplo acima pode ser inferido que o processo 1003 está aguardando o processo 1016 completar sua transação e, portanto, liberar algum bloqueio.

Dica: O Solaris requer tratamento especial. Deve ser utilizado /usr/ucb/ps em vez de /bin/ps. Também devem ser utilizados dois sinalizadores w, e não apenas um. Além disso, a chamada original do comando postmaster deve possuir um status exibido pelo ps mais curto que o exibido por cada processo servidor. Se estas três coisas não forem feitas, a saída do ps para cada processo servidor será a linha de comando original do postmaster.

Notas

[1]

A conexão com um outro banco de dados, ou por outro usuário, fecha a conexão existente e cria uma nova conexão com outro identificador de processo. (N. do T.)

[2]

O pgpool é um servidor de pool de conexões para o PostgreSQL, que executa entre os clientes do PostgreSQL e os processos servidor. O cliente do PostgreSQL se conecta ao pgpool como se este fosse um servidor PostgreSQL padrão. Quando se usa o pgpool é monitorado o pool, e não um determinado cliente. (N. do T.)

SourceForge.net Logo CSS válido!