¿Espacio libre en MySQL después de eliminar tablas y columnas?

Tengo una database de alnetworkingedor de 20 GB. Necesito eliminar 5 tablas y soltar algunas columnas en otras 3 tablas.

Dejar caer 5 tablas con algunos 3 GB gratis y colocar columnas en otras tablas debería liberar otros 8GB.

¿Cómo reclamo este espacio de MySQL?

He leído volcar la database y restaurarla como una solución, pero no estoy muy seguro de cómo funciona, ni siquiera estoy seguro de si esto solo funciona para eliminar toda la database o solo partes de ella.

Por favor, sugiera cómo hacerlo. Gracias.

Según los comentarios, parece que está usando InnoDB sin la opción de file por tabla.

Por lo general, no es posible reclamar espacio desde el tablespace de innodb en este modo. Su único curso de acción es volcar toda la database, activar el modo de file por tabla y volver a cargarlo (con una instancia de mysql completamente limpia). Esto llevará mucho time con una gran database; Las herramientas mk-parallel-dump y restre pueden ser un poco más rápidas, pero aún tardarán un time. Asegúrese de probar este process primero en un server que no sea de producción.

EDITAR: No se aplica sin file_per_table, Mark está ahí.

Lo que sucede es que una vez que MySQL toma espacio, no lo devuelve. Esto es así, si elimina 500 filas e inmediatamente inserta 500, no tiene que devolver ese espacio al sistema de files y luego volver a solicitarlo. Es una optimization para evitar la sobrecarga del sistema de files, y funciona bien cuando elimina pequeños bits.

Si elimina una cantidad grande, tardará mucho time en volver a utilizar todo ese espacio, lo que puede ser molesto. Esto se puede solucionar de dos maneras: descartar la tabla y volver a cargar los contenidos u optimizar la tabla (que básicamente creo que recarga la tabla internamente).

Todo lo que tienes que hacer para recuperar el espacio de una table es:

 OPTIMIZE TABLE my_big_table; 

Tenga en count que esto puede llevar un time, no es una operación casi instantánea. Básicamente, planee un poco de time de inactividad. Si sus tablas son solo unos pocos conciertos, no deberían ser demasiado largos (probablemente unos minutos). Esto también reconstruye los índices y hace otras tareas domésticas.

Puedes ver más sobre optimizar en el sitio de MySQL . Aquí está su consejo:

OPTIMIZE TABLE se debe usar si ha eliminado una gran parte de una tabla o si ha realizado muchos cambios en una tabla con filas de longitud variable (tablas que tienen columnas VARCHAR, VARBINARY, BLOB o TEXT). Las filas eliminadas se mantienen en una list vinculada y las operaciones subsiguientes de INSERT reutilizan las posiciones de fila antiguas. Puede usar OPTIMIZE TABLE para reclamar el espacio no utilizado y desfragmentar el file de datos.