Imagen de Ayuda dinahosting

Optimizar tablas de MySQL para liberar espacio

Bases de Datos

Categorías


Estás en
Inicio > Hosting > Bases de Datos > Optimizar tablas de MySQL para liberar espacio

Optimizar tablas de MySQL para liberar espacio

Algunas tablas de tu base datos MySQL o MariaDB de tipo MyISAM mediante el gestor phpMyAdmin, pueden mostrar un espacio ocupado que no se corresponde con el volumen de los datos almacenados. Para ello debemos optimizar las tablas de MySQL.

Principalmente es más notable encontrar esta incidencia cuando se elimina gran parte del contenido de la tabla. El funcionamiento por defecto de la base de datos es reservar ese espacio eliminado para futuras inserciones de datos. Sin embargo, lo habitual suele ser que estemos liberando espacio para usarlo en otros contenidos.

Función optimizar tabla en phpMyAdmin

La manera más rápida de liberar ese espacio reservado es usar la herramienta para optimizar tablas de phpMyAdmin, para ello accede de a tu base de datos desde el Panel de Control de hosting.

Una vez conectado a phpMyAdmin selecciona tu base de datos en la parte superior izquierda y verás el listado de tablas que componen tu base de datos, a continuación, selecciona la tabla que desees y en el desplegable que encontrarás en la parte inferior selecciona Optimizar la tabla.

 

Optimizar tabla

Optimizar tablas de forma automática mediante PHP

En el caso de que no desees estar pendiente de sí tus tablas deben liberar espacio que no estén utilizando, puedes emplear este código PHP y ejecutarlo mediante una tarea cron.

Recuerda ajustar los parámetros ServidorDB, UsuarioDB, ContraseñaDB y NombreDB del código por los datos de conexión a tu base de datos.

<?php
// Conexión a la base de datos
$con = new mysqli("ServidorDB","UsuarioDB","ContraseñaDB");
// Seleccionamos la base de datos
mysqli_select_db($con,"NombreDB");
// Obtenemos listado de tablas
$alltables = mysqli_query($con,"SHOW TABLES;");

// Guardamos la salida
$output = array();

while($table = mysqli_fetch_assoc($alltables)){
foreach($table as $db => $tablename){
$sql = 'OPTIMIZE TABLE '.$tablename.';';
$response = mysqli_query($con,$sql) or die(mysql_error());
$output[] = mysqli_fetch_assoc($response);
};
};
// Muestra la salida
print_r($output);
?>

No es necesario ejecutarlo siempre que hagas cambios en las tablas. Con ejecutarlo una vez al día, o una vez a la semana, sería suficiente en la mayoría de los casos.

Este código nos generará una salida con el resultado de ejecución del comando optimize por cada una de las tablas.

Salida optimize

Publicado en







    Valóranos

    ¿Te ha ayudado este artículo?










    ¿Has encontrado este artículo con facilidad?










    ¿No das tu opinión sobre el artículo?