Página 1 de 1

Pregunta sobre BBDD (Eliminar registros)

Publicado: 26 Jul 2010, 16:26
por Dr0gNan
Buenas. La base de datos de mi foro empieza a ocupar bastante y quiero hacer limpieza de temas como los de noticias.

He comprobado que desde el panel de moderador o desde el de admin no se puede hacer gran cosa, eliminar en tandas de 25 o eliminar todos los hilos de un subforo (pero al hacer esto el foro se bloquea y me tienen que reparar la tabla los del hosting para que vuelva a funcionar todo correctamente).

Por eso he estado echando un ojo para eliminarlo mediante SQL.

Por lo que he visto tendria que hacer un borrado en las tablas:

- posts (Mensajes)
- topics (titulos de mensajes)
- topics_posted (numero de mensajes)

La cosa es que me gustaria saber como borrar registros relacionados con las otras 2 tablas, es decir borrarlo a la vez de las 3 tablas segun su relacion.

Una vez conseguido esto sera hacer un LIMIT para que borre de 30 en 30 y que no sature el servidor y lo cuelgue.

de MySQL no se mucho, no se si las JOIN funcionan en MySQL, a ver si podeis echarme una mano y decirme si esto vale:

Código: Seleccionar todo

DELETE FROM `phpbb_posts` AS P
JOIN `phpbb_topics` AS T ON T.forum_id = P.forum_id
JOIN `phpbb_topics_posted` AS TP ON TP.topic_id = T.topic_id
WHERE P.forum_id = 61
LIMIT 30

Código: Seleccionar todo

SELECT * FROM `phpbb_posts` AS P
JOIN `phpbb_topics` AS T ON T.forum_id = P.forum_id
JOIN `phpbb_topics_posted` AS TP ON TP.topic_id = T.topic_id
WHERE P.forum_id = 61
LIMIT 30
Gracias

Re: Pregunta sobre BBDD (Eliminar registros)

Publicado: 26 Jul 2010, 16:58
por Alorse
La verdad con la cantidad me mensajes y de usuarios que tienes la base de datos no es que deba estar muy pesada, o al menos no muy lenta, esas consultas claro que funcionan en MySQL, pero no te recomiendo combines esas tablas para borrar contenido, ya que las relaciones podrían no concordar... yo descartaría el JOIN, esto se usa en otros casos cuando las plataformas no están tan estructuradas como lo esta phpBB3.

Es mejor tomar otras opciones como la optimización de todas las tablas... aunque no es mucho el peso que reduciría, podría servir.
Otro es que limpies o vacíes las tablas de búsqueda, osea phpbb_search_wordmatch y phpbb_search_wordlist, pero esto puedes hacerlo directamente desde el ACP, limpiando los índices de Búsqueda.

Si quieres prueba esas 2 cosas, se que te servirán harto, al menos limpiar los índices puede bajar notoriamente el tamaño de la base de datos.

Otra cosa es Purgar los temas, pero la verdad no se como funciona muy bien esta opción, lo que hace es eliminar los temas cuando llevan mucho tiempo sin estar activos o sin ser visitados, puedes encontrar dicha utilidad en el ACP >> Foros >> Purgar foros.
Con esto eliminaras bastante contenido de tu foro, si haces esto es recomendable que optimices luego las tablas.

Re: Pregunta sobre BBDD (Eliminar registros)

Publicado: 26 Jul 2010, 18:06
por ahh72
holas, tengo una duda del porque deseas eliminar informacion de tu foro o es que tu hosting limita la capacidad en la base de datos? si es asi seria recomendable andar viendo otro hosting donde no tengas estas limitaciones ya que seria un trabajo de nunca acabar y siempre estarias borrando informacion del foro :wink:

saludos

Re: Pregunta sobre BBDD (Eliminar registros)

Publicado: 26 Jul 2010, 20:55
por Dr0gNan
Alorse escribió:no te recomiendo combines esas tablas para borrar contenido, ya que las relaciones podrían no concordar... yo descartaría el JOIN, esto se usa en otros casos cuando las plataformas no están tan estructuradas como lo esta phpBB3.

Es mejor tomar otras opciones como la optimización de todas las tablas... aunque no es mucho el peso que reduciría, podría servir.
Otro es que limpies o vacíes las tablas de búsqueda, osea phpbb_search_wordmatch y phpbb_search_wordlist, pero esto puedes hacerlo directamente desde el ACP, limpiando los índices de Búsqueda.

Otra cosa es Purgar los temas, pero la verdad no se como funciona muy bien esta opción, lo que hace es eliminar los temas cuando llevan mucho tiempo sin estar activos o sin ser visitados, puedes encontrar dicha utilidad en el ACP >> Foros >> Purgar foros.
Con esto eliminaras bastante contenido de tu foro, si haces esto es recomendable que optimices luego las tablas.
Aha, pues descartado queda. He usado MSSQL Server usando JOIN (en otras cosas) y no sabia si en MySQL existia. Gracias.

Probare lo de optimizar las tablas, thanks ;)


Sobre las tablas de busqueda, si las vacio pero luego genero los indices se volveran a crear, de lo contrario el buscador no valdria para nada no?

Sobre purgar temas no me queda muy claro, lo he intentado en el foro de pruebas y por hache o por B acaba borrando todos los temas. Se podrian haber creado los de phpBB una opcion para eliminar mensajes que se hayan creado hace x dias.
ahh72 escribió:porque deseas eliminar informacion de tu foro o es que tu hosting limita la capacidad en la base de datos? si es asi seria recomendable andar viendo otro hosting donde no tengas estas limitaciones ya que seria un trabajo de nunca acabar y siempre estarias borrando informacion del foro
La verdad es que si, esta limitado a 600 MB pero no es por eso, es sin mas, para borrar noticias o mensajes que se publicaron hace años y ya no tiene mucho sentido ya que pocos van a acceder a ellos.

Gracias a los dos por la ayuda.

Re: Pregunta sobre BBDD (Eliminar registros)

Publicado: 27 Jul 2010, 09:14
por leviatan21
Mensajes totales 52597 | Temas totales 13717 | Usuarios totales 714
Con esta estadística no creo que tu base pese mas de 200MB, y eso es un tamaño razonable.

En cuanto a vaciar las tablas de búsqueda ( generalmente pesan cerca de un 50% del total de la DB ) es lógico que no te funcionará la búsqueda de temas/mensajes anteriores y al re-crearla suele agrandarse un poco más.
Si utilizas Fulltext native, una opción sería ajustar los parámetros antes de recrearla :
ACP -> GENERAL
CONFIGURACIÓN DEL SERVIDOR
Configuración de búsqueda
Y en el apartado de Fulltext native verás las siguientes opciones :
Mínimo de caracteres indexados para búsqueda:
Palabras con no menos que esta cantidad de caracteres serán indexadas para búsqueda.
Máximo de caracteres indexados para búsqueda:
Palabras con no más que esta cantidad de caracteres serán indexadas para búsqueda.
Umbral de palabra común:
Palabras que estén contenidas en un porcentaje mayor de todos los mensajes serán referidas como comunes. Las palabras comunes serán ignoradas en las consultas de las búsquedas. Solo se efectuará si hay más de 100 mensajes. Si quiere que palabras que actualmente referidas como comunes sean tomadas en cuenta de nuevo tendrá que reformar el índice.
Y por último la opción de Habilitar auto-purga: sería lo ideal, ya que funciona bastante bien :chulo:

Re: Pregunta sobre BBDD (Eliminar registros)

Publicado: 29 Jul 2010, 23:20
por Dr0gNan
Aha, gracias compañero, lo de full text le meti mano hace tiempo y mas o menos ya lo tengo claro. De todas formas gracias. La BBDD ocupa 210 MB, no se, en unos meses de 80 ha subido a 200 jeje