febrero 20, 2022

MySQL:: Re: cómo reducir una base de datos MySQL

Correcto. Esta es una limitación del archivo de espacio de tabla compartido de InnoDB. Sería una operación muy costosa para el Servidor MySQL compactar el espacio utilizado en el archivo de espacio de tabla y reducir el archivo. Imagínese si tiene un archivo de espacio de tabla de 100 GB y desea realizar una reconstrucción para compactarlo. Normalmente, las reconstrucciones de tablas MySQL requieren que tanto el almacenamiento antiguo como el nuevo existan simultáneamente en el disco durante la operación.
Por lo tanto, el comportamiento de InnoDB es dejar el espacio vacío y usarlo para la inserción posterior de nuevas versiones de filas.
Ver:
Bug #1287 http://bugs.mysql.com/bug.php?id=1287
Bug #1341 http://bugs.mysql.com/bug.php?id=1341
Una solución para reducir un espacio de tablas InnoDB compartido es:
1. Copia de seguridad *todas* las tablas InnoDB con mysqldump.
2. Suelta todas las mesas InnoDB.
3. Elimine físicamente el archivo ibdata1 en la interfaz del sistema de archivos.
4. Reinicie el servidor MySQL, que recrea un nuevo archivo de espacio de tabla pequeño.
5. Restaure todas sus tablas InnoDB, lo que expande el archivo de espacio de tabla según sea necesario.
Otra solución es usar la opción de almacenar tablas InnoDB en un archivo separado por tabla. Consulte http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html Si hace eso, debería poder usar OPTIMIZAR TABLA o MODIFICAR TABLA en cada tabla InnoDB que desee reducir. Se supone que esto reconstruye el .archivo ibd para la tabla individual.
Saludos,
Bill K.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.