Optimizar MySQL para WordPress

Un blog o sitio en wordpress activo recibe trafico y publicacion de articulos a diario, este es el uso comun de un blog, pero tambien ocasiona que MySQL crezca y crezca provocando lentitud en el servicio.

Como blogger nos mantenemos mas escribiendo nuestros articulos que pensando en como optimizar nuestro blog de WordPress. Aun asi es necesario mantener optimizada la base de datos.

¿Cuando y Por que optimizar?

Una base de datos grande y sin optimizar se vuelve lenta y consume mas memoria y ciclos del CPU. Cuando se ha borrado registros de una tabla, sobre todo si contiene filas de longitud variable (VARCHAR, BLOB, TEXT) se dejan muchos espacios en blanco. Al utilizar el comando OPTIMIZE TABLE se recupera el espacio inutilizado y se desfragmenta el archivo de datos.

Optimizar automáticamente la base de datos

Hay varias formas de optimizar y lograr recuperar la velocidad del MySQL, desde la consola hasta herramientas graficas como phpmyadmin.
Para nuestro fin crearemos un archivo de comandos el cual sera ejecutado por el administrador de procesos Cron.

Creamos el archivo optimizar.php dentro del directorio scripts. Como contenido de este script copiamos y pegamos las instrucciones para la optimizacion automatica del MySQL. Bajo privilegios de root el script buscara todas las bases de datos en el servidor y las optimizara automaticamente.

Solo es necesario cambiar la varias de conexion ($h, $u, $p). Puede ser ejecutador desde un navegador (Firefox, Mozilla, Opera, Internet Explorer).
El script anterior optimizara ademas de las tablas por defecto de la version 2.7 de WordPress otras tablas de plugins y demas bases de datos.

archivo: optimizar.php
<?php
echo '<pre>' . "nn";
set_time_limit( 100 );

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

//Connection variables :
$h = 'localhost';
$u = 'root';
$p = 'password';

$dummy_db = 'mysql';

/*The php->mysql API needs to connect to a database even when executing scripts like this.
If you got an error from this(permissions),
just replace this with the name of your database*/
$db_link = mysql_connect($h,$u,$p);

$res = mysql_db_query($dummy_db, 'SHOW DATABASES', $db_link) or die('Could not connect: ' . mysql_error());
echo 'Found '. mysql_num_rows( $res ) . ' databases' . "n";
$dbs = array();
while ( $rec = mysql_fetch_array($res) )
{
$dbs [] = $rec [0];
}

foreach ( $dbs as $db_name )
{
echo "Database : $db_name nn";
$res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Query : ' . mysql_error());
$to_optimize = array();
while ( $rec = mysql_fetch_array($res) )
{
if ( $rec['Data_free'] > 0 )
{
$to_optimize [] = $rec['Name'];
echo $rec['Name'] . ' needs optimization' . "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 'Parsed in ' . $total_time . ' secs' . "nn";
?>
  1. Procedemos a crear el trabajo de cron, tecleando el siguiente comando:
  2. crontab -e.
  3. Ya dentro del editor de cron agregamos:
  4. 0 * * * * /scripts/optimizar.php
  5. Guardamos el trabajo, y listo. Podemos comprobar si quedó instalado ejecutando crontab -l

El trabajo de cron va a ejecutar todos los dias cada hora el script de optimizacion, si esto consume demasiado ciclos del CPU o quizas no es necesario ejecutarlo tantas veces al dia podemos cambiarlo, vean el howto de Cron.

Notas de interes

  • Podemos utilizar WP-Cache o Super cache para reducir el trabajo de PHP para consultar la base de datos MySQL y generar el contenido XHTML, por medio de copias estáticas.
  • Si no utilizan sus plugins, aunque esten desactivados es mejor borrarlos de la carpeta de plunins de WordPress.
  • Para acelerar los procesos de acceso a la base de datos y generacion de temas existe LighPress, un backend para WordPress.

Script para optimizar via | Webdigity

Linux Gratis

No soy un asesor financiero y la información que proporciono es solo para fines educativos e informativos. No brindo asesoramiento de inversión y cualquier decisión que tome con respecto a sus inversiones es suya. Consulte a un asesor financiero autorizado antes de tomar cualquier decisión de inversión. El valor de las criptomonedas puede ser volátil e invertir en ellas implica un riesgo significativo. Debe considerar cuidadosamente su propia situación financiera y tolerancia al riesgo antes de tomar cualquier decisión de inversión. No garantizo la exactitud o integridad de la información proporcionada y no soy responsable de ninguna pérdida o daño que pueda resultar del uso de esta información.

Disqus Comments Loading...
Share
Published by
Linux Gratis

Recent Posts

Más Allá de la Teoría: Estudiantes en la Vanguardia de Lightning Network 2023

En el ámbito de la informática y la cadena de bloques, el conocimiento teórico a…

6 meses ago

Un Análisis Detallado del Informe de Crimen Cripto 2023: Una Guía para Principiantes

El emergente dominio de las criptomonedas ha cautivado la imaginación colectiva por su potencial para…

7 meses ago

Capital de Riesgo en Cripto: Sobreviviendo y Prosperando en un Mercado Bajista

En el siempre evolucionante mundo de las criptomonedas, el capital de riesgo (VC) ha encontrado…

7 meses ago

Bitcoin, divisas y criptomonedas: Potencial y perspectivas | Análisis 2023

?? Resumen video : Gareth Soloway Bitcoin, prepárate para lo que viene Introducción El mercado…

12 meses ago

El desmoronamiento de Silicon Valley Bank: la crisis bancaria del 2023

En marzo de 2023, el mundo financiero se vio sacudido por el repentino colapso de…

1 año ago

SegWit – Bitcoin Segregated Witness

A medida que Bitcoin continúa ganando popularidad y reconocimiento, aumenta la necesidad de escalabilidad y…

1 año ago