Modulado 3.0

if (bored) try { while ( ! ( this.succeed() )) } catch ( IhaveSoMuchTimeException e) {};

PostgreSQL: Mitos que se desvanecen (II)

En el artículo anterior comprobamos que cuando trabajamos con un CMS como Drupal, los request (peticiones) que le hacemos al servidor web son ligeramente mas rápidos cuando nuestro CMS usa como base de datos MySQL. Ahora bien, ¿que ocurriría si aumentamos el peso de la base de datos y dificultamos las consultas SQL? La cosa cambia notablemente, y es que es precisamente en este tipo de situaciones donde podemos notar la grandeza de Postgresql.

Para esta segunda parte, he usado una base de datos con dos tablas, de mas de 10K de registros cada una. Operaciones sencillas como:

MySQL: SELECT * FROM a ORDER BY RAND() LIMIT 5 ;
PostgreSQL: SELECT * FROM a ORDER BY RANDOM() LIMIT 5;

Se ejecutan verdaderamente rápido en ambos. Mientras que, si por el contrario efectuamos

SELECT count(otro_id)
FROM a
where otro_id > (select otro_id from b order by rand() limit 1);

La sorpresa es mayúscula teniendo como tiempo de respuesta ni más ni menos que:
+----------------+
| count(otro_id) |
+----------------+
| 4879           |
+----------------+
1 row in set (1 min 52.85 sec)

Mientras que en PostgreSQL la consulta dio el siguiente resultado:

count
-------
3100
(1 row)

Time: 8,856 ms

Pero, supongo que mas de uno se estará preguntando… ¿No será cosa del rand() y el randmon()? Pues ejecutemos otra consulta en ambos gestores sin el uso de funciones rand() ni random().

Ejecutemos la siguiente consulta:

select count(*)
from a
where otro_id not in (select otro_id from b);

Resultados:

PostgreSQL: (1 row) Time: 10,176 ms | MySQL:  1 row in set (35.88 sec).

Conclusion, ¿Quién es más rapido? ¿MySQL, PostgreSQL? Ambos son buenos sistemas gestores de bases de datos, pero como todo, dependerá de muchos factores la velocidad de cada uno. Como la configuración de hardware, el tipo de base de datos con la que vayamos a trabajar.

Lo que si quería demostrar con este artículo es que postgresql puede ser contundentemente rápido frente a MySQL, mientras que MySQL realmente es sólo ligeramente más rápido que Postgres cuando hablamos de base de datos para CMS.

Por otra parte, y después de haber comentado el tema con unos amigos, me gustaría matizar que obviamente aquí la lectura importante que debemos sacar es que cuando estamos pensando en elegir un sistema gestor de bases de datos u otro, hay muchos factores a tener en cuenta. Por ejemplo, en este articulo podemos sacar una lectura clara, PostgreSQL trabaja muy bien con bases de datos muy relacionales mientras que MySQL hasta el momento aun anda un poco cojo. Como muy bien comenta María paulina, también dependerá del proyecto, de la inversión que podamos afrontar y de nuestras necesidades. Por eso, hay que desmitificar y evitar el hacer comentarios del tipo X es mas rápido de Y, puesto que como todo en la vida real, dependerá de los factores y las variables en las que se vea involucrado.

Anuncios

3 Respuestas a “PostgreSQL: Mitos que se desvanecen (II)

  1. María Paulina noviembre 27, 2008 en 4:56 am

    Muy bueno tu artículo, pero como todo en la informática, el uso de una herramienta depende de la utilidad que puede dar en un proyecto dado. Es por eso que cada uno de estos gestores tienen su agregado que los hace diferentes entre sí. Sea Postgresql o MySQL o hasta Oracle, su utilidad dependerá del tipo de proyecto en el que sea aplicado y también de la factibilidad técnica y económica que estos puedan dar.

    Saludos.

  2. rfpp noviembre 27, 2008 en 3:31 pm

    Gracias por la observación. Tienes toda la razón de hecho hace unos días hablando con un amigo sobre este mismo tema, estuvimos de acuerdo en matizar un poco más lo que realmente pretendía expresar en el artículo, y es precisamente eso que tu comentas. Cada sistema gestor es bueno según para que tengamos intención de usarlo y no es necesariamente que unos u otros sean mas rápidos o mejores. Todo dependerá como tu muy bien dices según el uso que pretendamos darle.

  3. Eduardo febrero 22, 2010 en 1:49 pm

    PostgreSQL Rules!!!!!!!!!!!

    Lo que realmente odio de Mysql es ese monton de motores diferentes, con uno puedo hacer algo, con otro puedo hacer otra cosa, pero no puedo hacer todo con uno solo………… ridiculo.

    Postgre es lo mejor que hay!!!!!!!!!!!!!!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: