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.
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.
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"; ?> |
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.
Script para optimizar via | Webdigity
En el ámbito de la informática y la cadena de bloques, el conocimiento teórico a…
El emergente dominio de las criptomonedas ha cautivado la imaginación colectiva por su potencial para…
En el siempre evolucionante mundo de las criptomonedas, el capital de riesgo (VC) ha encontrado…
?? Resumen video : Gareth Soloway Bitcoin, prepárate para lo que viene Introducción El mercado…
En marzo de 2023, el mundo financiero se vio sacudido por el repentino colapso de…
A medida que Bitcoin continúa ganando popularidad y reconocimiento, aumenta la necesidad de escalabilidad y…