Olá, Newton

2009/3/11 Newton Teixeira do Nascimento Júnior
<[email protected]>:
>
>
> Olá comunidade, fiz alterações no postgresql.conf
>
> (baseado no artigo
> http://www.postgresql.org.br/Checklist_de_Performance_do_PostgreSQL_8.0)
>
> em alguns parâmetros (shared_buffers, work_mem, maintenance_work_mem)
>
> e depois reiniciei o serviço postgres pelo utilitário gráfico de serviços do
> Linux, porém ele não levantou mais.
>
> Tive que retirar a mudança no shared_buffers para o que era (24MB) e
>
> reiniciar o Linux para poder subir com o postgres novamente.
>

O que aconteceu aqui foi que provavelmente você colocou um valor maior
para o shared_buffers do que o parâmetro shmmax do kernel do Linux. O
parâmetro shmmax informa o tamanho máximo de um segmento de memória
compartilhada, isto é, o parâmetro shared_buffers não pode ser maior
do que este parâmetro.

Acredito que seja isso o problema.
>
>
> Como posso alterar esse shared_buffers (como alterar os parametros de
> inicializaçaõ via linha de comando)?
>
> Como deve-se alterar aqueles parâmetros em tempo de execução (arquivo ou
> linha de comando)?

Você quer dizer a altareção do parâmetro em uma sessão?

postgres=# SHOW work_mem;
 work_mem
----------
 1MB
(1 row)

postgres=# SET work_mem TO "5MB";
SET
postgres=# SHOW work_mem;
 work_mem
----------
 5MB
(1 row)

Isso que você se refere?

Lembrando que esta alteração será válida apenas na sessão. Ao você
finalizar a sessão ele volta ao valor default definido no
postgresql.conf.

>
> Como faço o autovacuum via linha de comando no linux (quero adicionar essa
> tarefa no cron)?

O processo de autovacuum você não executa na linha de comando. Para
isso você vem o utilitário vacuumdb. E lembre-se de executar o analyze
em conjunto. A opção do vacuumdb para executar o analyze é o parâmetro
-z ou --analyze.
>
>
>
> Preciso fazer isso porque tenho uma consulta mensal que faz cálculos
> complexos no banco
>
> utilizando tabelas de quase um 1GB que está demorando quase 03 horas pra
> rodar.
>
> O servidor aqui da empresa é um CentOS 4.5 e Postgresql 8.2.4 -
>
> Processador Xeon FC-LGA 771 dual core Cache 2 4MB e Memória RAM de 04GB.
>
> É um servidor dedicado de banco de dados e servidor Web.
>
>
>
> O banco com que estou trabalhando está atualmente com mais de 100GB e as
> tabelas que são objeto de cálculo
>
> dessa minha função são da ordem superior a 800MB (quase 06 milhões de
> registros).
>
> O banco recebe varias centenas de informações a cada 10 segundos.
>
>
>
> Com as mudanças que fiz (work_mem, maintenance_work_mem) já notei que o
> tempo diminuiu.

O work_mem vai te ajudar em processos de agrupamento enquanto que o
maintenance_work_mem vai te ajudar em operações do vacuum, create
index, alter table add foreign e etc.
>
> Também já fiz o analize e vacuum via pgadmim.
>
>
>
> PS: Sei quase nada de Linux. Tõ aprendendo (:>)
>
>
>
> ANTES
>
> shared_buffers = 24MB   # min 128kB or max_connections*16kB     # (change
> requires restart)
>
> #work_mem = 1MB    # min 64kB
>
> #maintenance_work_mem = 16MB  # min 1MB
>
>
>
> ATUAIS
>
> shared_buffers = 24MB
>
> work_mem = 64MB
>
> maintenance_work_mem = 512MB
>
>
>
> COMO EU QUERO
>
> shared_buffers = 256MB
>
> work_mem = 64MB
>
> maintenance_work_mem = 512MB
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Qualquer coisa estamos por ai.

[]s

-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a