Re: Comparativa PostgreSQL vs Ms SQLserver2000 vs Mysql 4.1

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Ramon Ces <racesr(at)yahoo(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Comparativa PostgreSQL vs Ms SQLserver2000 vs Mysql 4.1
Date: 2005-06-06 10:04:50
Message-ID: 20050606100450.GA7287@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Sun, Jun 05, 2005 at 05:40:49PM -0700, Ramon Ces wrote:

> El problema surge al realizar la prueba de inserción
> de datos, los resultados fueron bastantes
> decepcionantes. Pero supongo que el problema es mío,

Cuenta, como haces las inserciones? Mandas simplemente un INSERT para
cada tupla? Eso puede ser muy lento. Prueba encerrando todo
explicitamente en una transaccion (BEGIN; INSERT ...; INSERT ...; etc
COMMIT;) Postgres usa "auto commit" a menos que le digas explicitamente
lo contrario.

Lo otro seria que en lugar de INSERT usaras COPY para ingresar los
datos.

Entiendo que en InnoDB tambien podrias mejorar los tiempos de maneras
similares.

> Luego con un programa en Visual Basic 6 a través de
> una conexión ODBC comencé a insertar datos en el
> siguiente orden: clientes 50; productos 200; facturas
> 50000; facturas_item 150000 registros.
>
> Los tiempos fueron los siguientes:
> Ms SQLserver2000 0:06:33
> PostgreSQL 8.0.1 1:23:17
> MySQL 4.1 InnoDB 1:26:04
> MySQL 4.1 MyISAM 0:04:42

En total estas insertando 200250 registros. Con un disco de 10000 RPM/s
en la practica es muy dificil comprometer (commit) mas de 10000
transacciones por segundo, por lo que los 200k registros se tomarian 20
segundos en condiciones absolutamente ideales (un registro por
transaccion como supongo que estas haciendo). Pero si insertas varios
registros por transaccion entonces podrias hacer bastante mas que eso.

Lo otro que podrias mirar es cuanta memoria pusiste en shared_buffers
(subelo a bastante mas de 1000 que es el valor por omision; dejalo por
ej. en 10000 y prueba); y tambien si las comprobaciones de las llaves
foraneas estan haciendo recorridos secuenciales o de indices.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
Tulio: oh, para qué servirá este boton, Juan Carlos?
Policarpo: No, aléjense, no toquen la consola!
Juan Carlos: Lo apretaré una y otra vez.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-06-06 10:06:25 Re: Modelo para formas de Pago
Previous Message Ramon Ces 2005-06-06 00:40:49 Comparativa PostgreSQL vs Ms SQLserver2000 vs Mysql 4.1