world the source postgres open online most advanced mysql postgresql vacuum

mysql - the - postgresql vs mariadb



¿Por qué no es necesario un vacío con Mysql en comparación con PostgreSQL? (2)

La aproximación de MySQL al vacuum de PostgreSQL es OPTIMIZE TABLE tablename ( MySQL docs ). Realiza una función similar en MySQL como PostgreSQL en el sentido de que, dependiendo del motor de almacenamiento utilizado, recupera el espacio no utilizado, reorganiza los índices y tablas y desfragmenta los archivos de datos. Definitivamente debes ejecutarlo periódicamente como vacuum en PostgreSQL.

Estoy más familiarizado con PostgreSQL que MySQL. He encontrado una falla en la identificación de la envoltura una vez con la base de datos PostgreSQL y luego entendió la importancia de aspirar en la base de datos. En realidad, fue un trabajo masivo con el cual lidiar (y fue con una versión anterior 7.4.3 que se actualizó hace unos meses para tener el autovacuum). Al comparar MySQL con PostgreSQL, asuma que MySQL no tiene que lidiar con tales gastos generales como el vacío en PostgreSQL. ¿Es correcto este supuesto?

Además, ¿por qué no se necesita un vacío con MySQL en comparación con PostgreSQL? ¿Existe alguna otra alternativa de optimización similar al vacío para MySQL dbs?


Robert Haas escribió sobre este tema .

La versión corta es que InnoDB usa registros de reversión, más como el diseño de Oracle. Solo la versión más reciente de una fila se mantiene en la tabla principal. Debe administrar la purga de registros, una operación asincrónica / retardada con una función relacionada con VACUUM de PostgreSQL.

Esto significa más escrituras para hacer en las actualizaciones y hace que el acceso a las versiones de filas anteriores sea mucho más lento, pero elimina la necesidad de un vacío asíncrono y significa que no tiene problemas de inflado de tablas. En su lugar, puede tener grandes segmentos de reversión o quedarse sin espacio para la reversión.

Así que es un compromiso, un diseño con un conjunto diferente de ventajas y problemas.

Si estás hablando de tablas MyISAM, entonces es totalmente diferente. Las tablas de PostgreSQL no comerán tus datos. MyISAM lo hará. Las tablas de PostgreSQL son transaccionales. MyISAM no lo es. Un archivo plano no requiere VACUUM tampoco, por lo que no es una buena idea.