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

Responder a