Sitios web

Optimizar las tablas de una base de datos MySQL

Las tablas almacenadas en una base de datos MySQL deben estar siempre optimizadas. Ello repercute en un mayor rendimiento. A continuación explicamos lo que hay que hacer para llevar a cabo la optimización sin utilizar phpMyAdmin, el popular gestor de bases de datos.

Optimizar las tablas de una base de datos MySQL

La mayoría de los sitios web actuales utilizan un gestor de contenidos, que a su vez emplea una o varias bases de datos para almacenar y mostrar los contenidos. Cada vez que se hace una solicitud desde un navegador web, y siempre que no esté activado ningún programa de caché, el sistema accede a las tablas para procesar los datos. Aunque el caché esté activado la base de datos está en continuo procesamiento si el sitio tiene muchas visitas. Continuamente se está guardando y mostrando información.

Las tablas de la base de datos se fraccionan y el procesamiento de información se hace más lento y tedioso. Existen algunas formas de optimizar las tablas con residuo a depurar. La más utilizada y tediosa es accediendo a las bases a través de un gestor, como phpMyAdmin, marcar las tablas a depurar y pulsar sobre la opción de Optimizar la tabla. Pero hay algunas más.

Lee también:  Un sencillo contador para tu web – Integrar visor de resultados

En Webdigity (inactivo en estos momentos) nos proporcionan un script en PHP, que debemos guardar en un directorio de nuestro sitio web, que se ocupa de optimizar las tablas de todas las bases de datos alojadas en nuestro servidor MySQL. Después de indicar los datos de acceso al servidor, debemos subir el script, a través de FTP, a nuestro servidor web con el nombre que queramos, por ejemplo, optimizar.php. Podemos ejecutar dicho script manualmente desde el navegador web siempre que queramos, o crear un cronjob para la ejecución automática. En este segundo caso tendremos que darle al script los permisos adecuados: 755 o 777.

Este es el script:

<?php
echo '<pre>' . "\n\n";
set_time_limit( 100 );

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;

//Connection variables :
$h = 'servidor';
$u = 'nombre_usuario';
$p = 'contraseña';

$dummy_db = 'mysql';

$db_link = mysql_connect($h,$u,$p);

$res = mysql_db_query($dummy_db, 'SHOW DATABASES', $db_link) or die('No se pudo conectar: ' . mysql_error());
echo 'Encontradas '. mysql_num_rows( $res ) . ' bases de datos' . "\n";
$dbs = array();
while ( $rec = mysql_fetch_array($res) )
{
$dbs [] = $rec [0];
}

foreach ( $dbs as $db_name )
{
echo "Base de datos : $db_name \n\n";
$res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Llamada : ' . mysql_error());
$to_optimize = array();
while ( $rec = mysql_fetch_array($res) )
{
if ( $rec['Data_free'] > 0 )
{
$to_optimize [] = $rec['Name'];
echo $rec['Name'] . ' necesita optimización' . "\n";
}
}
if ( count ( $to_optimize ) > 0 )
{
foreach ( $to_optimize as $tbl )
{
mysql_db_query($db_name, "OPTIMIZE TABLE `" . $tbl ."`", $db_link );
}
}
}

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Analizado en ' . $total_time . ' segundos' . "\n\n";
?>

Antes de subirlo al servidor web con un cliente FTP, no te olvides de cambiar servidor, nombre_usuario y contraseña por los que corresponden a tu servidor MySQL.

Lee también:  Instalación de los foros phpBB versión 3
Etiquetas

fabriciano

Amante de la informática y de Internet entre otras muchas pasiones. Leo, descifro, interpreto, combino y escribo. Lo hago para seguir viviendo y disfrutando. Trato de dominar el tiempo para que no me esclavice.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Botón volver arriba
Cerrar