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
