Que tal!!

En mi equipo portátil con fedora 23 (8 Gb RAM) dos containers (lxc):

1. Con postgresql 9.4.5 (2 Gb RAM)
2. Con postgresql 9.5.1 (2 Gb RAM)

En el script de prueba que ejecuto se crean 2 tablas  unlogged con la
siguiente
estructura:

1. CREATE unlogged TABLE _gc_tb  as
    SELECT t[1]::INTEGER idb2,
           t[2]::INTEGER idc1,
           coalesce( t[3], '' ) rama,
           rama2arreglo(coalesce( t[3], '' )::varchar) arama
     FROM ....

    Indices:
      CREATE INDEX _gc_tb_arama on "_gc_tb" USING GIN (arama);
      CREATE INDEX _gc_tb_idb2idc1 on "_gc_tb" USING btree (idb2, idc1);

    No. de registros:
      120130

2. CREATE unlogged TABLE _gc_cat AS
    SELECT idppicat,
           idprodxintegrar,
           tipo,
           valor,
           estado,
           idsll,
           idsfte,
           rama2arreglo(rama)
           arama,
           rama,
           rvar,
           nodec
    FROM ( SELECT x[1]::integer
                  idppicat,
                  x[2]::integer
                  idprodxintegrar,
                  x[3]::char(1)
                  tipo,
                  (NULLIF(x[4], ''))::numeric
                  valor,
                  x[5]::char(1)
                  estado,
                  x[6]::text
                  rama,
                  x[7]::text
                  rvar,
                  x[8]::text
                  idsll,
                  x[9]::text
                  idsfte,
                  x[10]::integer
                  nodec
             FROM ....


    Indices:
      CREATE INDEX _gc_cat_arama on _gc_cat USING GIN (arama);

    No. de registros:
      91932


Al ejecutar la consulta en ambos servidores:
  EXPLAIN ANALYZE
     WITH
      du AS
      ( SELECT idprodxintegrar, a.idb2, a.idc1, tipo,
               valor, estado, idsll, idsfte, b.nodec,
               b.rama _match --sera nulo si no hay
               match
          FROM _gc_tb a
          LEFT join _gc_cat b
               on
               ( a.arama <@ b.arama and
                 a.arama @> b.arama
               )
       )select * from du;


Se obtiene:

- pgsql 9.4.5:
                                                                  QUERY
PLAN

-----------------------------------------------------------------------------------------------------------------------------------------
   CTE Scan on du  (cost=492858.81..498380.71 rows=276095 width=154)
(actual time=18.380..34169.650 rows=120130 loops=1)
     CTE du
       ->  Nested Loop Left Join  (cost=0.03..492858.81 rows=276095
width=154) (actual time=18.374..33851.684 rows=120130 loops=1)
             ->  Seq Scan on _gc_tb a  (cost=0.00..3235.30 rows=120130
width=40) (actual time=0.009..50.643 rows=120130 loops=1)
             ->  Bitmap Heap Scan on _gc_cat b  (cost=0.03..4.06 rows=2
width=178) (actual time=0.276..0.278 rows=1 loops=120130)
                   Recheck Cond: ((a.arama <@ arama) AND (a.arama @> arama))
                   Rows Removed by Index Recheck: 3
                   Heap Blocks: exact=125574
                   ->  Bitmap Index Scan on _gc_cat_arama  (cost=0.00..0.03
rows=2 width=0) (actual time=0.269..0.269 rows=4 loops=120130)
                         Index Cond: ((a.arama <@ arama) AND (a.arama @>
arama))
   Planning time: 0.448 ms
   Execution time: 34207.916 ms

- En pgsql 9.5.1
  - Nunca termina. Aproximadamente a los 5 minutos la maquina virtual se
apaga.

Lo mismo pasa si quito el explain analyze.

Les comento que en otra estructura semejante pero en un servidor  donde se
tienen 2 virtuales con KVM (pgsql 9.5.1 y 9.4.3)el resultado en el virtual
con
pgsql 9.5.1 era parecido, excepto que en este reiniciaba el motor de
postgres y
sacaba a los usuarios conectados.

Al monitorearlo nos damos cuenta de que se acaba la memoria y el swap.

Tengo un script, que es con el que estoy probando; su tamaño es de 1.1 Mb
(empacad); si alguien lo requiere para probar se lo mando a su correo...o
en donde lo
puedo poner?

Alguna sugerencia de por donde investigar para corregir este problema?!!

De antemano agradezco su atención

Saludos!

Responder a