En ocasiones necesitamos realizar un mantenimiento de las bases de datos. Nos encontramos con tablas que guardan logs de información poco relevante y que con el tiempo ocupan bastantes Gigas de disco perjudicando el rendimiento de la base de datos y perjudicando el tiempo de carga de nuestra página web.
En el caso que detectemos una base de datos de un tamaño excesivo, lo primero que debemos hacer es investigar qué tabla es la que tiene más peso, es decir ocupa más tamaño en disco. Para ello entraremos en mysql:
Entrar a mysql:
mysql -uusuariodb -ppasswddb
Luego entramos a la database en cuestión, la que ocupa un peso excesivo sin justificación:
Entrar a una database mysql:
use databasegrande;
Ver tamaño de todas la tablas de una base de datos:
SELECT table_name AS «Tabla»,
round(((data_length + index_length) / 1024 / 1024 / 1024), 2) «GB»
FROM information_schema.TABLES
WHERE table_schema = «databasegrande»
ORDER BY (data_length + index_length) DESC;
Desde putty podemos ver como nos muestra un listado con todas las tablas de la database y su tamaño en Gigas:
Tal y como observamos en la imagen tenemos una tabla con 11,4Gb. Ahora lo que debemos hacer es investigar un poco acerca de qué datos contiene y si son registros de logs que no necesitamos guardar, procederemos a borrar la tabla.
Ver los primeros registros de una tabla
Para ver los primero registros de una tabla, podemos usar phpmyadmin, donde de forma sencilla podemos ir a la base de datos que queramos, luego entrar en una de sus tablas y luego ver los registros de forma paginada:
Tambien podemos optar por hacerlo desde consola, mediante putty. En ese caso podemos limitar el numero de registros a los primeros:
Ver los primeros x registros de una tabla
Para ver los primeros registros de una tabla usaremos LIMIT:
SELECT * FROM tabla LIMIT x, y
X es el primer registro desde el que nos mostrará, el primer registro es 0
Y es la cantidad de registros a mostrar
Ejemplo:
select * from wp_users LIMIT 0,5;
Nos mostrará los cinco primeros registros de la tabla wp_users empezando por el primero.
select * from wp_options LIMIT 10,5;
Nos mostrará los cinco registros de la tabla wp_users empezando por el nºonce.
Ver los x últimos registros de una tabla:
select * from wp_terms order by term_id desc LIMIT 5;
Nos ordena los resultados empezando por el último registro y los 4 anteriores al último:
Como siempre, no está de mas realizar un backup de la database entera:
Realizar Backup de database mysql:
mysqldump -uroot -p databasebackup > /var/backup/servidoresadmin.sql
Una vez tenemos claro que los registros pueden ser eliminados, procedemos a borrar todos los registros de la tabla:
Eliminar todos los registros de una tabla mysql:
Para eliminar todos los registros de una tabla, tenemos dos opciones. La opción más rápida y recomendable para borrar todos los registros de una tabla muy grande es:
TRUNCATE TABLE wp_st_log_post;
En realidad lo que hace es eliminar la tabla y regenerarla vacía.
La otra opción que tenemos es:
DELETE FROM wp_st_log_post;
Elimina uno por uno cada registro, manteniendo el valor de auto_increment donde estaba, en cambio el truncate empieza desde 0 el valor de auto_increment.