Consultas simples, ocasionalmente, executando muito lentamente

2

Eu tenho algumas consultas muito simples que ocasionalmente são executadas muito lentamente.

A tabela viewed_sites tem cerca de 10 a 20 linhas.

A execução de EXPLAIN ANALYZE sempre fornece um tempo de execução de menos de 3 milissegundos.

Quando a consulta é executada automaticamente (a cada 10 segundos), ela ocasionalmente leva mais de um segundo para ser executada.

A consulta:

INSERT INTO ga.viewed_sites (site_id) VALUES ('gop2')

A tabela:

CREATE TABLE viewed_sites (
    site_id character varying(4) NOT NULL,
    last_viewed timestamp with time zone DEFAULT now() NOT NULL
);

O resultado do registro (ocasional):

2010-05-24 15:47:55 UTC LOG: duration: 1044.632 ms statement: INSERT INTO ga.viewed_sites (site_id) VALUES ('gop2')

É uma pergunta horrivelmente vaga, mas o que poderia estar causando isso? Eu suponho que se trata de CPU, RAM, HDD ou alguma combinação dos itens acima.

Postgresql 8.3, Ubuntu 8.04

CPU Intel (R) Core ™ 2 Duo E6750 @ 2.66GHz

2 GiB RAM

    
por Johan 24.05.2010 / 18:32

2 respostas

2

Ou a tabela pode estar bloqueada. Que parece todas as coisas dadas, mais provavelmente. O Postgresql é muito conservador em relação aos bloqueios, mas isso pode acontecer. Uma espera de um segundo pela gravação em HD ou CPU parece extremamente improvável. E não é preciso muito aríete para fazer uma inserção. Verifique a tabela pg_locks (e pg_stat_activity para ver o que está fazendo) e a função pg_lock_status() ou algumas das outras tabelas e funções relacionadas ao status de bloqueio.

    
por 24.05.2010 / 18:38
1

A tabela tem uma chave estrangeira? Se tiver que checar a restrição de chave estrangeira, então tem que fazer uma consulta de tabela. Talvez isso esteja diminuindo a velocidade.

link tem muitas dicas.

    
por 24.05.2010 / 22:20