X-Original-To: pgsql-performance-postgresql.org@postgresql.org Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id 9F3B39FB3F4 for ; Mon, 11 Sep 2006 15:50:14 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 08674-04 for ; Mon, 11 Sep 2006 15:50:03 -0300 (ADT) X-Greylist: delayed 00:35:37.364273 by SQLgrey- Received: from svr4.postgresql.org (svr4.postgresql.org [66.98.251.159]) by postgresql.org (Postfix) with ESMTP id 1F48A9FB38C for ; Mon, 11 Sep 2006 15:50:02 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.3 Received: from fanzine.igalia.com (fanzine.igalia.com [213.172.36.226]) by svr4.postgresql.org (Postfix) with ESMTP id 54FF45AFA16 for ; Mon, 11 Sep 2006 18:14:22 +0000 (GMT) Received: from maestria.local.igalia.com ([192.168.10.14] helo=mail.igalia.com ident=mail) by fanzine.igalia.com with esmtp (Cipher TLSv1:EDH-RSA-DES-CBC3-SHA:168) (Exim) id 1GMqIU-0007UN-00 for ; Mon, 11 Sep 2006 20:14:18 +0200 Received: from codfix.local.igalia.com ([192.168.10.40] ident=mail) by mail.igalia.com with esmtp (Cipher TLSv1:EDH-RSA-DES-CBC3-SHA:168) (Exim) id 1GMqIT-0003Fm-00 for ; Mon, 11 Sep 2006 20:14:17 +0200 Received: from apinheiro by codfix.local.igalia.com with local (Exim) id 1GMqIS-0002N8-00 for ; Mon, 11 Sep 2006 20:14:16 +0200 Subject: Performance problem with Sarge compared with Woody From: =?ISO-8859-1?Q?Pi=F1eiro?= To: pgsql-performance@postgresql.org Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Date: Mon, 11 Sep 2006 20:14:13 +0200 Message-Id: <1157998456.7540.15.camel@codfix.local.igalia.com> Mime-Version: 1.0 X-Mailer: Evolution 2.0.4 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=1.069 tagged_above=0 required=5 tests=SPF_NEUTRAL X-Spam-Level: * X-Archive-Number: 200609/65 X-Sequence-Number: 20751 Hi, a week ago we migrate a Woody(postgre 7.2.1) server to Sarge(postgre 7.4.7). To migrate the database we use a dump, using pg_dump with this options: pg_dump -U -c -F p -O -v -f We have a search, that using woody take about 1-2 minutes, but with sarge it is executing about 2 hours, and at least it crashes, with a message about a temporal file and no more disk space ( i have more than a GB of free disk space). The search is very long, with a lot of joins (generated by a ERP we manage). We think that the problem can be at the indices, but we are not sure. At the original woody database we create indices, but when the dump is being installed at sarge, it creates an implicit index, so there are times that there are duplicates indices. But we try to remove the duplicate indices and we don't resove the problem. The select is the next one (sorry if it is too big): (SELECT facturaabono.numeroFactura as=20 numeroFacturaFactura,facturaabono.codigoFactura as=20 codigoFacturaFactura,facturaabono.codigoEmpresa as=20 codigoEmpresaFactura,facturaabono.codigoTienda as=20 codigoTiendaFactura,facturaabono.estado as=20 estadoFactura,facturaabono.fechaemision as=20 fechaEmisionFactura,facturaabono.tipoIva as=20 tipoIvaFactura,facturaAbono.baseImponibleModificada as=20 baseImponibleModificadaFactura,to_char(facturaAbono.baseImponibleNueva,'999= 99999D99')=20 as baseImponibleNuevaFactura,refactura as=20 refacturaFactura,participanteShop.codigoParty as=20 codigoPartyParticipantShop,participanteShop.nombre as=20 nombreParticipantShop,participanteCliente.codigoParty as=20 codigoPartyParticipantPagador,participanteCliente.nick as=20 nickParticipantPagador,participanteCliente.nombreCorto as=20 shortnameparticipantPagador,participanteCliente.cif as=20 cifParticipantPagador,reparacion.codigoReparacion as=20 codigoReparacionRepair,reparacion.codigoTienda as=20 codigoTiendaRepair,reparacion.codigoCliente as=20 codigoClienteRepair,reparacion.codigoCompania as=20 codigoCompaniaRepair,tienda.codigoAutoArte as codigoAutoarteShop,=20 facturaAbono.codigoEmpresa as=20 codigoPartyParticipantEnter,participanteCompany.nombre as=20 nombreParticipantCompany,participanteCompany.nombreCorto as=20 shortnameparticipantCompany,participanteCompany.codigoParty as=20 codigoPartyParticipantCompany,participanteCompany.cif as=20 cifParticipantCompany, pago.codigoPago as codigoPagoPago,=20 pago.codigobanco as codigoBancoPago, pago.codigooficina as=20 codigoOficinaPago, pago.numerocuenta as numeroCuentaPago, pago.esAPlazos=20 as esAPlazosPago, pago.pagosRealizados as pagosRealizadosPago,=20 pago.numeroVencimientos as numeroVencimientosPago, pago.fechaInicio as=20 fechaInicioPago, pago.esdomiciliacion as esdomiciliacionpago from=20 reparacion left outer join participante participanteCompany ON=20 (reparacion.codigoCompania=3DparticipanteCompany.codigoParty) left outer=20 join siniestro on=20 (siniestro.codigoReparacion=3Dreparacion.codigoReparacion and=20 siniestro.codigoTienda=3Dreparacion.codigoTienda and=20 siniestro.codigoEmpresa=3Dreparacion.codigoEmpresa), participante=20 participanteCliente, participante participanteShop, tienda, facturaabono=20 left outer join pago on (facturaabono.codigoPago=3Dpago.codigoPago and=20 facturaabono.codigoTienda=3Dpago.codigoTienda and=20 facturaabono.codigoEmpresa=3Dpago.codigoEmpresa) where=20 facturaabono.estado >=3D 0 and (facturaabono.numeroFactura is not null) =20 and facturaabono.codigoTienda=3DparticipanteShop.codigoParty and=20 facturaabono.codigoTienda=3Dreparacion.codigoTienda and=20 facturaabono.codigoEmpresa=3Dreparacion.codigoEmpresa and=20 facturaabono.codigoPagador =3D participanteCliente.codigoParty and=20 tienda.codigoTienda =3D facturaabono.codigoTienda and=20 (participanteCliente.nick ilike '%ASITUR%') and=20 (facturaabono.fechaEmision<=3D'Thu Sep 7 00:00:00 2006 ') and (facturaabono.fechaEmision>=3D'Sun Aug 7 00:00:00 2005 ') and facturaabono.tipoIva is NULL and (facturaabono.codigoReparacion=20 =3D reparacion.codigoReparacion) order by=20 participantecompany.nombre,facturaabono.numeroFactura) union (SELECT=20 DISTINCT facturaabono.numeroFactura as=20 numeroFacturaFactura,facturaabono.codigoFactura as=20 codigoFacturaFactura,facturaabono.codigoEmpresa as=20 codigoEmpresaFactura,facturaabono.codigoTienda as=20 codigoTiendaFactura,facturaabono.estado as=20 estadoFactura,albaranes.fechaemision as=20 fechaEmisionFactura,facturaabono.tipoIva as=20 tipoIvaFactura,facturaAbono.baseImponibleModificada as=20 baseImponibleModificadaFactura,to_char(facturaAbono.baseImponibleNueva,'999= 99999D99')=20 as baseImponibleNuevaFactura,refactura as=20 refacturaFactura,participanteShop.codigoParty as=20 codigoPartyParticipantShop,participanteShop.nombre as=20 nombreParticipantShop,participanteCliente.codigoParty as=20 codigoPartyParticipantPagador,participanteCliente.nick as=20 nickParticipantPagador,participanteCliente.nombreCorto as=20 shortnameparticipantPagador,participanteCliente.cif as=20 cifParticipantPagador,(case WHEN reparacion.codigoCompania is not NULL=20 THEN reparacion.codigoReparacion ELSE NULL END) as=20 codigoReparacionRepair,reparacion.codigoTienda as=20 codigoTiendaRepair,reparacion.codigoCliente as=20 codigoClienteRepair,reparacion.codigoCompania as=20 codigoCompaniaRepair,tienda.codigoAutoArte as codigoAutoarteShop,=20 facturaAbono.codigoEmpresa as=20 codigoPartyParticipantEnter,participanteCompany.nombre as=20 nombreParticipantCompany,participanteCompany.nombreCorto as=20 shortnameparticipantCompany,participanteCompany.codigoParty as=20 codigoPartyParticipantCompany,participanteCompany.cif as=20 cifParticipantCompany, pago.codigoPago as codigoPagoPago,=20 pago.codigobanco as codigoBancoPago, pago.codigooficina as=20 codigoOficinaPago, pago.numerocuenta as numeroCuentaPago, pago.esAPlazos=20 as esAPlazosPago, pago.pagosRealizados as pagosRealizadosPago,=20 pago.numeroVencimientos as numeroVecimientosPago, pago.fechaInicio as=20 fechaInicioPago, pago.esdomiciliacion as esdomiciliacionpago from=20 reparacion left outer join participante participanteCompany ON=20 (reparacion.codigoCompania=3DparticipanteCompany.codigoParty) left outer=20 join siniestro on=20 (siniestro.codigoReparacion=3Dreparacion.codigoReparacion and=20 siniestro.codigoTienda=3Dreparacion.codigoTienda and=20 siniestro.codigoEmpresa=3Dreparacion.codigoEmpresa), participante=20 participanteCliente, participante participanteShop, tienda, facturaabono=20 left outer join pago on (facturaabono.codigoPago=3Dpago.codigoPago and=20 facturaabono.codigoTienda=3Dpago.codigoTienda and=20 facturaabono.codigoEmpresa=3Dpago.codigoEmpresa), (select=20 a.codigofactura,a.fechaemision,=20 albaranabono.codigoReparacion,a.codigoTienda,a.codigoEmpresa from=20 albaranabono,facturaabono a where=20 albaranabono.numeroFactura=3Da.codigoFactura and=20 a.codigoEmpresa=3DalbaranAbono.codigoEmpresa and=20 a.codigoTienda=3Dalbaranabono.codigoTienda) as albaranes where=20 facturaabono.estado >=3D 0 and (facturaabono.numeroFactura is not null) =20 and facturaabono.codigoTienda=3DparticipanteShop.codigoParty and=20 facturaabono.codigoPagador =3D participanteCliente.codigoParty and=20 tienda.codigoTienda =3D facturaabono.codigoTienda and=20 (albaranes.codigoFactura =3D facturaAbono.codigoFactura) and=20 (albaranes.codigoEmpresa =3D facturaAbono.codigoEmpresa) and=20 (albaranes.codigoTienda =3D facturaAbono.codigoTienda) and=20 (albaranes.codigoReparacion=3Dreparacion.codigoReparacion) and=20 (albaranes.codigoTienda=3Dreparacion.codigoTienda) and=20 (albaranes.codigoEmpresa=3Dreparacion.codigoEmpresa) and=20 (participanteCliente.nick ilike '%ASITUR%') and=20 (facturaabono.fechaEmision<=3D'Thu Sep 7 00:00:00 2006 ') and (facturaabono.fechaEmision>=3D'Sun Aug 7 00:00:00 2005 ') and facturaabono.tipoIva is NULL order by=20 participantecompany.nombre,facturaabono.numeroFactura) union (SELECT=20 facturaabono.numeroFactura as=20 numeroFacturaFactura,facturaabono.codigoFactura as=20 codigoFacturaFactura,facturaabono.codigoEmpresa as=20 codigoEmpresaFactura,facturaabono.codigoTienda as=20 codigoTiendaFactura,facturaabono.estado as=20 estadoFactura,facturaabono.fechaemision as=20 fechaEmisionFactura,facturaabono.tipoIva as=20 tipoIvaFactura,facturaAbono.baseImponibleModificada as=20 baseImponibleModificadaFactura,to_char(facturaAbono.baseImponibleNueva,'999= 99999D99')=20 as baseImponibleNuevaFactura,refactura as=20 refacturaFactura,participanteShop.codigoParty as=20 codigoPartyParticipantShop,participanteShop.nombre as=20 nombreParticipantShop,participanteCliente.codigoParty as=20 codigoPartyParticipantPagador,participanteCliente.nick as=20 nickParticipantPagador,participanteCliente.nombreCorto as=20 shortnameparticipantPagador,participanteCliente.cif as=20 cifParticipantPagador,NULL as=20 codigoReparacionRepair,reparacion.codigoTienda as=20 codigoTiendaRepair,NULL as codigoClienteRepair,NULL as=20 codigoCompaniaRepair,tienda.codigoAutoArte as codigoAutoarteShop,=20 facturaAbono.codigoEmpresa as codigoPartyParticipantEnter,NULL as=20 nombreParticipantCompany,NULL as shortnameparticipantCompany,NULL as=20 codigoPartyParticipantCompany,NULL as cifParticipantCompany,=20 pago.codigoPago as codigoPagoPago, pago.codigobanco as codigoBancoPago,=20 pago.codigooficina as codigoOficinaPago, pago.numerocuenta as=20 numeroCuentaPago, pago.esAPlazos as esAPlazosPago, pago.pagosRealizados=20 as pagosRealizadosPago, pago.numeroVencimientos as=20 numeroVecimientosPago, pago.fechaInicio as fechaInicioPago,=20 pago.esdomiciliacion as esdomiciliacionpago from reparacion left outer=20 join participante participanteCompany ON=20 (reparacion.codigoCompania=3DparticipanteCompany.codigoParty) left outer=20 join siniestro on=20 (siniestro.codigoReparacion=3Dreparacion.codigoReparacion and=20 siniestro.codigoTienda=3Dreparacion.codigoTienda and=20 siniestro.codigoEmpresa=3Dreparacion.codigoEmpresa), participante=20 participanteCliente, participante participanteShop, tienda, facturaabono=20 left outer join pago on (facturaabono.codigoPago=3Dpago.codigoPago and=20 facturaabono.codigoTienda=3Dpago.codigoTienda and=20 facturaabono.codigoEmpresa=3Dpago.codigoEmpresa), (select distinct=20 facturaabono.codigofactura as=20 numeroFacturaFactura,facturaabono.codigoPago,albaranabono.numeroFactura, =20 codigoreparacionTaller,facturatalleres.codigoEmpresaAlbaran as=20 codigoEMpresaAlbaranTaller,facturatalleres.codigoTiendaAlbaran as=20 codigoTiendaAlbaranTaller from facturaabono left outer join=20 albaranabono on (facturaabono.codigoFactura=3Dalbaranabono.numeroFactura=20 and (facturaabono.codigoTienda=3Dalbaranabono.codigoTienda) and=20 (facturaabono.codigoEMpresa=3DalbaranAbono.codigoEmpresa)), (select=20 codigoReparacion as codigoReparacionTaller,numeroFacturaTaller as=20 numeroFacturaTaller =20 ,codigoEmpresaFactura,codigoTiendaFactura,codigoEmpresaAlbaran,codigoTienda= Albaran =20 from facturataller,albaranabono where=20 albaranabono.numeroAlbaran=3DfacturaTaller.numeroalbaran and=20 albaranabono.codigoTienda=3Dfacturataller.codigoTiendaAlbaran and=20 albaranabono.codigoEmpresa=3DfacturaTaller.codigoEmpresaAlbaran ) as=20 facturaTalleres where albaranabono.numeroFactura is null and =20 facturaabono.codigoFactura=3DnumeroFacturaTaller and=20 facturaabono.codigoTienda=3DfacturaTalleres.codigoTiendaFactura and=20 facturaabono.codigoEmpresa=3DfacturaTalleres.codigoEmpresaFactura ) as=20 facturasTalleres where facturaabono.estado >=3D 0 and=20 (facturaabono.numeroFactura is not null) and=20 facturaabono.codigoTienda=3DparticipanteShop.codigoParty and=20 facturaabono.codigoTienda=3Dreparacion.codigoTienda and=20 facturaabono.codigoEmpresa=3Dreparacion.codigoEmpresa and=20 facturaabono.codigoPagador =3D participanteCliente.codigoParty and=20 tienda.codigoTienda =3D facturaabono.codigoTienda and=20 (participanteCliente.nick ilike '%ASITUR%') and=20 (facturaabono.fechaEmision<=3D'Thu Sep 7 00:00:00 2006 ') and (facturaabono.fechaEmision>=3D'Sun Aug 7 00:00:00 2005 ') and facturaabono.tipoIva is NULL and=20 facturaabono.codigoFactura=3DfacturasTalleres.numeroFacturaFactura and =20 reparacion.codigoReparacion=3DfacturasTalleres.codigoReparacionTaller and =20 reparacion.codigoTienda =3D facturasTalleres.codigoTiendaAlbaranTaller and =20 reparacion.codigoEmpresa =3D facturasTalleres.codigoEmpresaAlbaranTaller=20 group by facturaabono.codigoFactura,=20 facturaabono.numeroFactura,facturaabono.codigoempresa,=20 facturaabono.codigotienda, facturaabono.estado,=20 facturaabono.fechaemision,=20 facturaabono.tipoIva,facturaabono.baseimponiblemodificada,facturaabono.base= imponiblenueva,=20 facturaabono.refactura,participanteshop.codigoparty,=20 participanteshop.nombre,=20 participantecliente.codigoparty,participantecliente.nick,participanteClient= e.nombreCorto,participantecompany.nombre,participantecliente.cif,reparacion= .codigotienda,tienda.codigoautoarte,pago.codigopago=20 ,pago.codigobanco, pago.codigooficina, pago.numerocuenta,=20 pago.esAPlazos,pago.pagosRealizados,pago.numeroVencimientos,pago.fechainici= o,=20 pago.esdomiciliacion order by=20 participantecompany.nombre,facturaabono.numeroFactura); Any idea ? --=20 Pi=F1eiro