Sé que la pregunta suena provocativa, pero realmente no lo es. Últimamente encuentro que MySQL limita en muchas áreas y me gusta cada vez más PostgreSQL. Se escala mucho mejor y respeta los estándares SQL mucho más que MySQL.
Sin embargo, todavía soy nuevo en el mundo de PostgreSQL y, dado que estoy dispuesto a alejarme de MySQL para todos mis proyectos futuros, lo que quiero saber es: ¿hay alguna característica particular de MySQL que se haga mejor (como en más de alto rendimiento o más fácil de usar, etc.) que en PostgreSQL?
Me pregunto qué voy a extrañar de MySQL. Ya descubrí que los campos AUTO_INCREMENT en MySQL son más útiles que SECUENCIAS en PostgreSQL y la implementación en Windows fue problemática en el pasado (ya no es un problema. Nunca fue un problema para mí).
¿Qué más?
fuente
Respuestas:
Está abordando esto claramente desde la perspectiva del desarrollador, por lo que puede encontrar respuestas más útiles en SO.
Desde una perspectiva administrativa:
- Replicación (HA)
- Replicación (Scaling *)
- Replicación (Backups)
- Soporte de aplicaciones
- Tamaño y profundidad de la comunidad (Documentación, Soporte)
- Base de instalación existente / trabajos disponibles
* Tenga en cuenta que mencionó
postgres
escalar mejor. escalar significa algo diferente para todos, pero como regla general, las cosas que tienen una ruta para distribuir la carga en múltiples servidores escalan mejor que las cosas que no lo hacen.fuente
COUNT (*) también es mucho más lento con PSQL. Se supone que debe crear desencadenantes para este tipo de funcionalidad.
fuente
Debido a que Postgres efectivamente hace una copia en escritura para cada actualización (para que pueda manejar transacciones), si no necesita transacciones y hace muchas escrituras en relación con las lecturas, MySQL no tendrá la sobrecarga que PostgreS será. (cada registro actualizado necesita escribir más, actualizar índices, etc.)
fuente
Puedo pensar en una cosa que falta en PostgreSQL:
Creo que también hubo algo con el bloqueo, inserción o actualización. Pero parece que no puedo recordar qué era en realidad. : S
fuente
El campo auto_increment que es 'práctico' no es muy relevante, ¿verdad? Oracle tiene secuencias y es, sin duda, la base de datos comercial más utilizada en el mundo.
Hay una gran cantidad de información que se puede encontrar sobre cómo PostgreSQL si es más seguro contra colisiones, etc. Solo voy a señalar esta página en el wiki de PostgreSQL (sin duda una opinión coloreada, pero eso es lo que estás buscando de todos modos).
Mucha gente menciona en esta página que MySQL es más amigable para los novatos. ¿Entonces? Explíqueme cómo eso es importante en un entorno de misión crítica.
fuente
MySQL se llama a menudo como grep de SQL . En cuanto a mí (ahora en el momento de la escritura), se parece bastante a PHP, bastante incómodo, pero popular.
Intente renombrar una base de datos desde el principio. ;) Luego agregue índices condicionales (faltantes).
PD: Puedo señalar al menos una buena característica indiscutible que tiene MySQL: admite tipos de datos de conservación de espacio tan pequeños como byte (sin signo), por ejemplo. Esto podría ahorrar mucha RAM y espacio en disco cuando se usa en consecuencia. Pero hay muy pocas cosas para mencionar además, por desgracia. Y la comparación en el enlace que le han dado es realmente ingeniosa.
fuente
auto_increment es útil hasta que te das cuenta de que apestan para tablas con una concurrencia de inserción extremadamente alta, en ese momento se convierten en un cuello de botella y te ves obligado a implementar una secuencia usando una tabla MyISAM.
De todos modos, para responder a su pregunta, lo más importante que ha tenido MySQL ha sido la configuración fácil de replicación que permite el encadenamiento de replicación y la lectura de esclavos. Sin embargo, Postgres tendrá eso en la próxima versión, 9.0 (que ya está en estado alfa).
fuente