Re: Rendimiento ESQL/C

From: atbrkt <atbrkt(at)hotpop(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Rendimiento ESQL/C
Date: 2009-12-17 15:22:37
Message-ID: 81141d450912170722p3f737b21j4a99219b7c81c25c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola de nuevo,

Después de realizar varias pruebas:
1. ESQL/C y LIPBQ tienen rendimientos prácticamente similares para la
creación de tuplas
2. pgbench no realiza varias conexiones simultáneamente con la base de
datos. Sólamente hace una, pero efectivamente no utiliza INSERT INTO,
sino COPY "accounts" from stdin.

Lo que no entiendo es cómo con COPY la transacción es mucho más rápida
que son INSERT INTO. ¿Hay alguna diferencia entre ambas? Por otra
parte, este método solo parece funcionar con Libpq, porque a la hora
de utilizar ESQL/C, el precompilador te advierte que el comando COPY
no se encuentra implementado. ¿Alguien podría aclararme un poco esto?

Gracias

El día 16 de diciembre de 2009 17:08, Fernando Hevia
<fhevia(at)ip-tel(dot)com(dot)ar> escribió:
>
>
>> -----Mensaje original-----
>> De: atbrkt
>>
>> Buenas,
>>
>> Estoy utilizando el interfaz ESQL/C como medio de acceso a la
>> base de datos, sin embargo no estoy satisfecho con el
>> rendimiento que estoy obteniendo. He realizado unas pruebas
>> con pgbench, que está implementado en libpq y mediante esta orden:
>>
>> ./pgbench -i pgbench -s 1
>>
>> Se crean 10000 tuplas en menos de 1 segundo, algo impensable
>> desde mi aplicación de ESQL/C, con la siguiente transacción:
>>
>> EXEC SQL BEGIN;
>> for(int i=0;i<100000;i++){
>> EXEC SQL INSERT INTO accounts VALUES (1,1,1); } EXEC SQL COMMIT;
>>
>> El tiempo de creación de 10000 tuplas mediante ESQL/C es de
>> unos 10 segundos. ¿Alguien sabe por qué hay tanta diferencia
>> entre mi aplicación y el benchmark pgbench? ¿Es posible que
>> pgbench optimice al máximo el rendimiento de PostgreSQL? De
>> esto último estoy casi seguro, puesto que el consumo de CPU
>> es bastante más alto con pgbench
>
> El setup de pgbench no hace inserts sino copy para popular la tabla
> accounts,
> lo cual es más rápido que los inserts.
>
> Para que compares, el mismo loop en pgplsql hace 100.000 inserts en unos 4.7
> seg.
> Si elimino el PK sobre accounts el tiempo baja a 3 seg. Esperaría que en C
> esto fuese más rápido aún.
> (Base dedicada 8.3.8 sobre un Pentium D 3.0GHz).
>
> No estoy familiarizado con ESQL/C como para hacer alguna sugerencia.
>
> Slds.,
> Fernando.
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message ReynierPM 2009-12-17 23:08:21 Problemas con permisos para aplicaciones locales
Previous Message Edwin Quijada 2009-12-17 04:21:15 RE: APLICACION COMO EL ENTERPRISE MANAGER ORACLE