Qual o plano de execução desse último teste?
O valor do effective_cache_size me parece incompatível com o resto da
configuração. Esse parametro serve para o otimizador do postgresql
avaliar o tamanho total de cache de disco + shared buffers contendo os
dados do banco e pode influenciar na escolha dos indices. No anotated
postgresql.conf do josh ele sugere que ese valor seja aproximadamente
2/3 da memoria da maquina.
Outra coisa, eh bom verificar com o vmstat se o servidor não está
fazendo swap durante a consulta.
On 9/26/06, Thiago Risso <[EMAIL PROTECTED]> wrote:
> Alterei minhas configuraçoes para :
>
> Altementei a shared memory do KERNEL. (Pois o FEDORA permite no MAX 32Mb)
> para 1Gb ...
>
> postgresql.conf
>
> shared_buffers = 131072
> work_mem = 64048
> maintenance_work_mem = 32768
> max_fsm_pages = 320000
> wal_buffers = 32
> enable_hashagg = off
> enable_seqscan = off
> enable_tidscan = off
> effective_cache_size = 16384
> random_page_cost = 1
>
> ...
>
> e vejam :
>
> SELECT H.hierarquia ,F.funcao,count(id_cand) AS quant FROM ((area_cand AC
> INNER JOIN teste_agencia.hierarquia H ON H.id_hierarquia = AC.id_hierarquia)
> INNER JOIN agencia.FUNCAO F ON F.id_funcao = AC.id_funcao)INNER JOIN
> agencia.candidato_empresa CE ON CE.id_candidato = AC.id_cand WHERE
> id_empresa = 1 AND F.id_funcao NOT IN(SELECT id_funcao FROM
> agencia.funcao_emp WHERE id_empresa = 1) GROUP BY H.hierarquia,F.funcao
> ORDER BY quant DESC LIMIT 10;
> hierarquia | funcao | quant
> --------------+----------------+-------
> Auxiliar | Administrativo | 1408
> Assistente | Administrativo | 1327
> Operador | Produção | 833
> Profissional | Engenharia | 715
> Estágio | Engenharia | 563
> Estágio | Administrativo | 507
> Profissional | Recepcionista | 490
> Profissional | Montador | 347
> Auxiliar | Vendas | 330
> Profissional | Vendas | 305
> (10 rows)
>
> Time: 782,885 ms
>
> PIOROU .....
>
> Vou continuar com meus testes aqui ... Quando chegar na conf ideal posto ai
> pra voces verem !
>
>
> On 9/25/06, Sergio Medeiros Santi <[EMAIL PROTECTED]> wrote:
> >
> >
> > Thiago:
> >
> > Acredito que você tem nas mãos um excelente servidor. Não tenho como
> analisar os tempos que citastes, mas posso passar as configurações que
> enviastes com as que tenho em um servidor semelhante. O servidor é um Dell
> Poweredge Dual Xeon 3.0, 4 G de ram e discos hotswap scsi 15.000k em raid 0,
> duas placas de rede, etc ... Detalhe este servidor usa W2K.
> >
> > Suas configurações comparadas com as que uso:
> >
> > shared_buffers = 2048 # uso 36620
> > temp_buffers = 2048 # uso o default 1000
> > work_mem = 2048 # uso 64048
> > max_fsm_pages = 20000 # uso 320000
> > effective_cache_size = 1000 # uso 4096
> > maintenence_work_mem=???? # uso 16384
> > max_stack_deph=???? # uso 4096
> > random_page_cost = 4 # idem
> > fsync = on # idem
> > enable_bitmapscan = on # idem
> > enable_seqscan = ?? # uso off
> > enable_tidscan = ?? # uso off
> > enable_hashagg = ?? # uso off
> >
> > Espero que ajude,
> >
> > Sergio
> >
> >
> > ----- Original Message -----
> > From: Cleber Nardelli
> > To: Grupo de Usuários do PostgreSQL no Brasil
> > Sent: Monday, September 25, 2006 3:59 PM
> > Subject: Re: [PostgreSQL-Brasil] Performance SCSI
> >
> >
> > Olá... Tente rodar um REINDEX.
> >
> >
> > 2006/9/23, Thiago Risso <[EMAIL PROTECTED]>:
> > > Boa noite Lista,
> > >
> > > A situação é a seguinte :
> > > Tinhamos um servidor rodando postgres em um PC P4 com HD IDE com 1GB de
> RAM ...
> > > Migramos este SERVIDOR PARA UM DELL POWER EDGE XEON com HD SCSI 10k e
> 3GB de RAM (800Mhz) ...
> > > Ambos radando em LINUX REISERFS , porém o antigo em DEBIAN e o NOVO EM
> FEDORA 5 (64 bits) ...
> > >
> > > Teo,ricamente, as consultas deveriam ficar bem mais rápidas mas
> teoricamente, não é isso que esta acontecendo ....
> > > Abaixo segue as configurações e testes realizados ....
> > >
> > > SERVER ANTIGO :
> > >
> > > shared_buffers = 2048 # min 16 or max_connections*2, 8KB each
> > > temp_buffers = 2048 # min 100, 8KB each
> > > work_mem = 2048 # min 64, size in KB
> > > #max_fsm_pages = 20000
> > > #effective_cache_size = 1000 # typically 8KB each
> > > #random_page_cost = 4 # units are one sequential page fetch
> > > #fsync = on
> > > #enable_bitmapscan = on
> > >
> > >
> > > gerenciador=# ANALYZE ;
> > > ANALYZE
> > > Time: 5919,603 ms
> > > gerenciador=# SELECT H.hierarquia,F.funcao,count(id_cand) AS quant FROM
> ((area_cand AC INNER JOIN teste_agencia.hierarquia H ON H.id_hierarquia =
> AC.id_hierarquia) INNER JOIN agencia.FUNCAO F ON F.id_funcao =
> AC.id_funcao)INNER JOIN agencia.candidato_empresa CE ON CE.id_candidato =
> AC.id_cand WHERE id_empresa = 1 AND F.id_funcao NOT IN(SELECT id_funcao FROM
> agencia.funcao_emp WHERE id_empresa = 1) GROUP BY H.hierarquia,F.funcao
> ORDER BY quant DESC LIMIT 10;
> > > hierarquia | funcao | quant
> > > --------------+----------------+-------
> > > Auxiliar | Administrativo | 1408
> > > Assistente | Administrativo | 1327
> > > Operador | Produção | 833
> > > Profissional | Engenharia | 714
> > > Estágio | Engenharia | 563
> > > Estágio | Administrativo | 507
> > > Profissional | Recepcionista | 490
> > > Profissional | Montador | 347
> > > Auxiliar | Vendas | 330
> > > Profissional | Vendas | 305
> > > (10 rows)
> > >
> > > Time: 157,624 ms
> > >
> > > gerenciador=# EXPLAIN SELECT H.hierarquia,F.funcao,count(id_cand) AS
> quant FROM ((area_cand AC INNER JOIN teste_agencia.hierarquia H ON
> H.id_hierarquia = AC.id_hierarquia) INNER JOIN agencia.FUNCAO F ON
> F.id_funcao = AC.id_funcao)INNER JOIN agencia.candidato_empresa CE ON
> CE.id_candidato = AC.id_cand WHERE id_empresa = 1 AND F.id_funcao NOT
> IN(SELECT id_funcao FROM agencia.funcao_emp WHERE id_empresa = 1) GROUP BY
> H.hierarquia,F.funcao ORDER BY quant DESC LIMIT 10;
> > >
> QUERY PLAN
> > >
> --------------------------------------------------------------------------------------------------------------------------------------------------
> > > Limit ( cost=22473.89..22473.91 rows=10 width=32)
> > > -> Sort (cost=22473.89..22478.25 rows=1747 width=32)
> > > Sort Key: count(ac.id_cand)
> > > -> HashAggregate (cost=22357.97..22379.80 rows=1747 width=32)
> > > -> Hash Join (cost=1057.51..22336.70 rows=2835
> width=32)
> > > Hash Cond: ("outer".id_hierarquia =
> "inner".id_hierarquia)
> > > -> Hash Join (cost= 1056.36..22290.67 rows=3307
> width=24)
> > > Hash Cond: ("outer".id_funcao =
> "inner".id_funcao)
> > > -> Nested Loop (cost=1017.18..22185.24
> rows=6636 width=12)
> > > -> Bitmap Heap Scan
> on candidato_empresa ce (cost=1017.18..2364.09 rows=2793 width=4)
> > > Recheck Cond:
> (id_empresa = 1)
> > > -> Bitmap Index
> Scan on candidato_empresa_index_candidato_empresa
> (cost=0.00..1017.18 rows=2793 width=0)
> > > Index
> Cond: (id_empresa = 1)
> > > -> Index Scan using
> index_area_cand on area_cand ac (cost=0.00..7.07 rows=2 width=12)
> > > Index Cond:
> ("outer".id_candidato = ac.id_cand )
> > > -> Hash (cost=38.81..38.81 rows=146
> width=20)
> > > -> Seq Scan on funcao
> f (cost=32.15..38.81 rows=146 width=20)
> > > Filter: (NOT
> (hashed subplan))
> > > SubPlan
> > > -> Seq Scan
> on funcao_emp (cost=0.00..32.12 rows=9 width=4)
> > > Filter:
> (id_empresa = 1)
> > > -> Hash (cost=1.12..1.12 rows=12 width=16)
> > > -> Seq Scan on hierarquia h
> (cost=0.00..1.12 rows=12 width=16)
> > > (23 rows)
> > >
> > > SERVER NOVO :
> > >
> > > shared_buffers = 3072
> > > work_mem = 4096
> > > maintenance_work_mem = 32768
> > > max_fsm_pages = 120000
> > > wal_buffers = 32
> > > effective_cache_size = 131072
> > > random_page_cost = 1
> > > #fsync = on
> > > #enable_bitmapscan = on
> > >
> > > gerenciador=# ANALYZE ;
> > > ANALYZE
> > > Time: 8902,698 ms
> > > gerenciador=# SELECT H.hierarquia ,F.funcao,count(id_cand) AS quant FROM
> ((area_cand AC INNER JOIN teste_agencia.hierarquia H ON H.id_hierarquia =
> AC.id_hierarquia) INNER JOIN agencia.FUNCAO F ON F.id_funcao =
> AC.id_funcao)INNER JOIN agencia.candidato_empresa CE ON CE.id_candidato =
> AC.id_cand WHERE id_empresa = 1 AND F.id_funcao NOT IN(SELECT id_funcao FROM
> agencia.funcao_emp WHERE id_empresa = 1) GROUP BY H.hierarquia,F.funcao
> ORDER BY quant DESC LIMIT 10;
> > > hierarquia | funcao | quant
> > > --------------+----------------+-------
> > > Auxiliar | Administrativo | 1408
> > > Assistente | Administrativo | 1327
> > > Operador | Produção | 833
> > > Profissional | Engenharia | 714
> > > Estágio | Engenharia | 563
> > > Estágio | Administrativo | 507
> > > Profissional | Recepcionista | 490
> > > Profissional | Montador | 347
> > > Auxiliar | Vendas | 330
> > > Profissional | Vendas | 305
> > > (10 rows)
> > >
> > > Time: 374,312 ms
> > >
> > > gerenciador=# EXPLAIN SELECT H.hierarquia,F.funcao,count(id_cand) AS
> quant FROM ((area_cand AC INNER JOIN teste_agencia.hierarquia H ON
> H.id_hierarquia = AC.id_hierarquia) INNER JOIN agencia.FUNCAO F ON
> F.id_funcao = AC.id_funcao)INNER JOIN agencia.candidato_empresa CE ON
> CE.id_candidato = AC.id_cand WHERE id_empresa = 1 AND F.id_funcao NOT
> IN(SELECT id_funcao FROM agencia.funcao_emp WHERE id_empresa = 1) GROUP BY
> H.hierarquia,F.funcao ORDER BY quant DESC LIMIT 10;
> > >
> QUERY PLAN
>
>
> > >
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > > Limit (cost= 10725.34..10725.36 rows=10 width=32)
> > > -> Sort (cost=10725.34..10729.70 rows=1747 width=32)
> > > Sort Key: count(ac.id_cand)
> > > -> HashAggregate (cost=10609.42..10631.25 rows=1747 width=32)
> > > -> Hash Join (cost=2165.25..10582.15 rows=3636
> width=32)
> > > Hash Cond: ("outer".id_hierarquia =
> "inner".id_hierarquia)
> > > -> Hash Join (cost= 2164.10..10524.94 rows=3939
> width=24)
> > > Hash Cond: ("outer".id_funcao =
> "inner".id_funcao)
> > > -> Merge Join (cost=2124.93..10406.86
> rows=7904 width=12)
> > > Merge Cond:
> ("outer".id_cand = "inner".id_candidato)
> > > -> Index Scan using
> index_area_cand on area_cand ac (cost=0.00..7428.58 rows=294416 width=12)
> > > -> Sort
> (cost=2124.93..2133.24 rows=3326 width=4)
> > > Sort Key:
> ce.id_candidato
> > > -> Index Scan
> using candidato_empresa_index_candidato_empresa on
> candidato_empresa ce (cost=0.00..1930.36 rows=3326 width=4)
> > > Index
> Cond: (id_empresa = 1)
> > > -> Hash (cost=38.81..38.81 rows=146
> width=20)
> > > -> Seq Scan on funcao
> f (cost=32.15..38.81 rows=146 width=20)
> > > Filter: (NOT
> (hashed subplan))
> > > SubPlan
> > > -> Seq Scan
> on funcao_emp (cost=0.00..32.12 rows=9 width=4)
> > > Filter:
> (id_empresa = 1)
> > > -> Hash (cost=1.12..1.12 rows=12 width=16)
> > > -> Seq Scan on hierarquia h
> (cost=0.00..1.12 rows=12 width=16)
> > > (23 rows)
> > >
> > > ** NOS DOIS SERVERS FOI EXECUTADO VACCUM E ANALYZE ANTES DO TESTE ...
> > >
> > >
> > > Atenciosamente,
> > >
> > > Thiago Risso
> > > Rhadar
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Grupo de Usuários do PostgreSQL no Brasil
> > > Antes de perguntar consulte o manual
> > > http://pgdocptbr.sourceforge.net/
> > >
> > > Para editar suas opções ou sair da lista acesse a página da lista em:
> > > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> > >
> > >
> >
> >
> >
> > ________________________________
>
> >
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil
> > Antes de perguntar consulte o manual
> > http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >
> >
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil
> > Antes de perguntar consulte o manual
> > http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >
> >
>
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>
--
Diogo Biazus - [EMAIL PROTECTED]
Móvel Consultoria
http://www.movelinfo.com.br
http://www.postgresql.org.br
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios