Loading

¡Bienvenido!

Al registrarte con nosotros, podrás discutir, compartir y enviar mensajes privados con otros miembros de nuestra comunidad.

¡Regístrate ahora!

Limpieza correcta BD en ETECSA

Lucien's iconLucien

Bored
Administrador
Mensajes
1,759
Puntos de reacción
5,610
Como nota aclaratoria este tutorial debería funcionar en cualquier entorno pero me voy a centrar en el proporcionado por ETECSA para eso.

Requisitos: Phpmyadmin y una instalación de Xenforo a la que se le quiera hacer un mantenimiento (limpiar los perfiles, reacciones y conversaciones para liberar espacio) .

1- Logearse en el phpmyadmin y buscar la Base de Datos correspondiente, en este caso tendrá de nombre bd_alterego.

2- El primer paso y pienso yo que es el más importante es el de limpiar las reacciones para que no aparezcan una vez borremos todo el contenido.

Una breve explicación de como se almacenan las reacciones en xenforo 2:

Todas las reacciones se guardan en una tabla llamada : xf_reaction_content , esta tabla tiene varias columnas , entre las que se encuentran:

content_type que indica el tipo de contenido al que se está reaccionando, este puede ser:

post : mensaje en un tema , esta nos interesa preservar
profile_post: a un estado que haya publicado el usuario en su perfil
profile_post_comment: a algún comentario en los perfiles
conversation_message: a las conversaciones privadas

reaction_id: que almacena la reacción que el usuario le dio al contenido , por ejemplo el usuario reaccionó con la id 1 (Like) a un profile_post , osea que le dio un like al estado.

Una vez explicado esto el metodo más efectivo para limpiar esa información que pude encontrar es hacer que las reacciones que vayamos a quitar tengan un valor 0 , para que así no afecte a la hora de borrarse.

4- En el Phpmyadmin luego de haber seleccionado la base de datos vamos al apartado SQL y escribimos los siguientes comandos:

SQL:
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'profile_post'

Este comando hará que todos los mensajes de perfil tengan la reacción 0 , que no existe, por lo tanto no tendrán (cabe destacar que aún se sigue mostrando porque hace falta reconstruir eso)

5- Lo mismo que el comando anterior pero esta vez para los comentarios a los estados
SQL:
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'profile_post_comment'


6- Este limpia todas las reacciones en las conversaciones privadas.
SQL:
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'conversation_message'



Listo :) , ya hemos dado valor cero a las reacciones prescindibles , ahora es tiempo de eliminarlas porque queremos tener de nuevo ese espacio para nosotros.

7- y eso se hace con este simple comando:

SQL:
DELETE FROM  xf_reaction_content WHERE reaction_id = '0'

¿Que hace este? pues elimina todas las reacciones que tengan valor 0 , que son las que previamente hemos marcado en los pasos anteriores)

la base de datos se llevaba unos 6.4 MiB a la hora de hacer esta ¨purga¨ y una vez corrido el paso numero 7 se redujo a 4.8 , y mientras más usuarios y conversaciones se tenga más se puede limpiar (aunque la finalidad de esto es evitar el ¨like fantasma¨)
 
Última edición por un moderador:
Ahora es totalmente seguro limpiar las conversaciones privadas que se encuentran alojadas en las siguientes tablas:

xf_conversation_master
xf_conversation_message
xf_conversation_recipient
xf_conversation_user


hay que ejecutar estos comandos en el apartado SQL de nuevo en el orden siguiente:

SQL:
TRUNCATE xf_conversation_master
SQL:
TRUNCATE xf_conversation_message
SQL:
TRUNCATE xf_conversation_recipient
SQL:
TRUNCATE xf_conversation_user

Una vez que todos corrieron satisfactoriamente todas las conversaciones privadas quedarán limpias

Como nota añadir que el comando TRUNCATE limpia todo el contenido de la base de datos pero sin eliminarla, por eso es mejor que DROP que DEFINITIVAMENTE no se debe usar para estos casos
 
Ahora es el turno de limpiar los perfiles, en este caso solo son dos tablas, las siguientes:

SQL:
TRUNCATE xf_profile_post
SQL:
TRUNCATE  xf_profile_post_comment

y listo, se borran los perfiles completamente :D
 
podemos limpiar otras tablas con TRUNCATE como son:

xf_news_feed
xf_search_index
xf_user_alert (PARA ELIMINAR LAS ALERTAS, OBLIGATORIO)
xf_moderator_log (elimina el log de moderación)


las dos primeras se volverán a reconstruir pero se llevarán un mega menos tal vez, o dos como mucho
 
Última edición por un moderador:
Atrás