MySQL vs PostgreSQL
Acabo de terminar mi exposición sobre el trabajo de investigación de Bases de datos, “Comparativa de bases de datos en Internet, MySQL vs PostregSQL“.
La verdad es que se ha dado bastante bien, y me ha gustado mucho, ya que he aprendido nuevas cosas sobre estas bases de datos.
Hasta ahora solo usaba MySQL y tablas del tipo MyISAM, que no permiten transacciones, subconsultas y tampoco ofrecen integridad en los datos.
La verdad es que estas características para todas las páginas que he desarrollado nunca me han hecho falta, pero no está de mas saber que InnoDB si ofrece todas ellas, pero a costa de un alto rendimiento (no recomendado).
Prueba

Todas las pruebas las hice con PHP 5.0 y con las versiones de las bases de datos:
MySQL 5.0.13-rc-nt
PostgreSQL 8.0.1
l
Esta es la función que genera los datos aleatorios a insertar en las tablas
function generar_dato ($lon)
{
$patron = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$lon;$i++)
{
if(isset($dato))
$dato .= $patron{rand(0,35)};
else
$dato = $patron{rand(0,35)};
}
return $dato;
}
Y esta es la función con la que calculamos el tiempo que tarda cada operación en ejecutarse, es llamada antes y después de las operaciones, y restandolas obtenemos los microsegundos.
function calcular_time()
{
list($useg, $seg) = explode(' ', microtime());
return ((float)$useg + (float)$seg);
}
Configuración correcta de PostgreSQL
Si queréis probarlo en casa, cuidado con tener firewall o antivirus, ya que en mi caso, al tener que filtrar todo me producía un retardo “apreciable”, y otra cosilla, es que por defecto el PostreSQL viene con la opción fsync a on.
Mediante esta opción, PostgreSQL realiza un COMMIT después de cada operación (transaccional), lo que conlleva un retardo de tiempo cuantioso, si queremos compararlo con MyISAM deberemos poner esta opción a off (ambas como no transaccionales).

Conclusiones
Como conclusiones puedo decir que para bases de datos pequeñas y que no requieran integridad ni restricciones (constrains), MySQL ofrece mayor velocidad, pero para cualquier otra base de datos yo usaría PostgreSQL ya que con 20.000 registros (los que he probado en mi benchmark) ofrece mejores rendimientos (incluso mejor velocidad) en consultas compuestas.
Ya había leído antes sobre que PostreSQL era mejor que MySQL, pero bueno, en mi caso hago esa pequeña matización, y apoyo esa afirmación, PostreSQL ofrece una base mucho mas potente y eficaz que MySQL.
Comparte este artículo
Trackbacks / Pingbacks
3 Comentarios
Deja un comentario
¡Coitus interruptus! ¿Dónde está la comparativa? FAIL
Escrito el 12/11/08 a las 11:40:46 (#1) (responder)
Bueno, dado que fue un trabajo bastante extenso no lo voy a publicar todo aquí, me he limitado a poner una pequeña parte y las conclusiones, que a mi parecer, es lo más importante.
Escrito el 12/11/08 a las 12:44:18 (#2) (responder)
Interesante comparativa! gracias..
Escrito el 24/11/08 a las 21:31:53 (#3) (responder)