Problema uso de indices...

From: motum hesa <motums(at)gmail(dot)com>
To: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Problema uso de indices...
Date: 2011-08-30 18:08:53
Message-ID: CAJu20AiBmLnQHd4KphvpNC-hAgo-r5PtQY6PzDX0fgYmZbPkEQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola disculpen la molestia nuevamente, he estado tratando de optimizar
una consulta que ya habia optimizado pero el cliente me aviso que
estaba tardando demasiado, lo raro de el caso es que la misma base de
datos la respalde y la desplegue un par de semanas atras en un
servidor de pruebas, donde se estan insertando los mismos registros
diariamente, en el servidor de produccion ( server 1) la consulta
tarda mas de 170 segundos en realizarse mientras en el servidor de
pruebas ( server 2) tarda 2 o 3 segundos... hice un explain analyze en
la consulta y despues de revizarla me doy cuenta que por alguna razon
en el server 1 el indice que tengo sobre un timestamp no se esta
usando, hice un backup del esquema y lo compare con el de server 1 y
la estructura es la misma ( solo habia una funcion nueva en el server
2 pero no es relevante para la consulta). Hice otra prueba para ver si
es por la configuracion de hardware donde server 1 esta como sigue:

2 Xeon a 2 Ghz
6Gb RAM
150 GB SATA a 10Krpm X 4 Disco duro en RAID 10
Freebsd 8.1
Postgres 8.4.4

el server 2 esta como sigue:

1 Xeon a 2 Ghz
8 GB RAM
300 GB a 7.2K rpm Disco duro sin RAID
Freebsd 8.1
Postgres 8.4.4

Y los dos servidores de postgres han sido tuneados para usar los
recursos del sistema. Entre las posibles opciones se penso que un
disco del Arrglo RAID 10 pudiera estar fallando o tal vez se requiere
mas memoria para la consulta ( La tabla tiene mas de 30M de
registros), por lo que en un servidor que tengo para otras
aplicaciones mas simples tengo un postgres y lo use para hacer un
respaldo del server 1 y del server 2 y los desplege en este server 3:

Xeon 2 GHz
2 GB RAm
150 GB x 2 a 7.2K rmp en RAID 1
Freebsd 8
Postgres 8.4.2

Donde el resultado es el mismo bdserver1 180segundos la consulta y
dbserver2 5 segundo la consulta. Ya Recree el indice que me hace falta
que se use, hice vacuum, vacuum analyze, reindex y nada no se mas
puedo hacer, espero puedan ayudarme, la consulta es la siguiente:

SELECT DE.unitno, DE.entrandosaliendo, DE.fechacreacion,
DE.lat, DE.lng, DE.odometrototal,
DE.odometrototal as copodo, DE.combustibletotal,
TE.nombre, TE.img,
TE.ops, EA.valor, EF.descripcion,
EF.fault_codes, EF.tipo, EM.descripcion as desmssg,
DE.pos_gps
FROM (select * from datosentrada_his where unitno='111' and
flota='EMPRESA1' and fechacreacion between '07/13/2011 05:00' and
'07/15/2011 04:59' ) AS DE
LEFT JOIN entradafallas AS EF USING(importacionid)
LEFT JOIN entradaalarma AS EA USING(importacionid)
LEFT JOIN entradamensajes AS EM USING(importacionid)
LEFT JOIN tipoevento AS TE ON EA.tipo = TE.tipo ORDER BY
DE.fechacreacion ASC

Si es necesario les puedo enviar el resultado de los explain analyze
que realice.. Espero puedan ayudarme... ya que he leido todo lo que he
encontrado y nada. mi principal duda es por que en una db si se usa el
indice y en la otra no...

Roberto Campos

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan 2011-08-30 18:13:27 Re: Problema uso de indices...
Previous Message Gustavo Hernández Delgado 2011-08-30 16:38:52 Duda sobre rendimiento