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.
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 |