Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Bloqueo de tabla grande en MySQL

Estas en el tema de Bloqueo de tabla grande en MySQL en el foro de Mysql en Foros del Web. Muy buenas, me estoy encontrando con un problema con una tabla grande en MySQL, del que no sé salir. Tengo una tabla, la cual se ...
  #1 (permalink)  
Antiguo 12/05/2016, 10:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Bloqueo de tabla grande en MySQL

Muy buenas, me estoy encontrando con un problema con una tabla grande en MySQL, del que no sé salir.

Tengo una tabla, la cual se ha ido alimentando diariamente, y hora mismo cuenta con más de 215.000 registros.

El único índice que existe es el PRIMARY en el campo id.

El caso es que no puedo realizar ninguna operación en esta tabla, porque todas se bloquean, imagino que por el tamaño de la tabla.

Intento hacer un simple SELECT id FROM table LIMIT 50 y se está minutos sin responder.

También he intentado añadir un nuevo índice en otro de los campos, que es el que utilizo más en los WHERE, pero a la hora de intentar añadir el índice se queda bloqueado, debido imagino a la gran cantidad de registros que hay.

Lógicamente, tampoco puedo hacer un TRUNCATE, porque perdería todos los datos que se han ido almacenando a lo largo del tiempo.

He probado también de hacer un DELETE FROM table WHERE id = XXX y ni eso puede hacer.

Conocéis alguna solución que pueda llevar a cabo?

Muchas gracias!
  #2 (permalink)  
Antiguo 12/05/2016, 11:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloqueo de tabla grande en MySQL

Vamos por partes...
Una tabla con 215.000 registros no califica para definirla ni como "mediana". Con esa cantidad de registros no es siquiera una tabla "pequeña"... es un amago de tabla.
No hay ninguna razón a nivel de estructura de tablas y de base por la cual un simple SELECT a una tabl de ese tipo pueda causar bloqueos o retrasos. No tiene el peso necesario para tener problemas de performance, por lo que el inconveniente DEBE venir por otro lado.

Dado que no nos estás describiendo nada mas respecto a cómo usas esa tabla, de qué forma accedes a la base ni nada, solamente podemos suponer que lo haces por medio de una aplicación programada. Y de ser asi, cabe la posibilidad de que el problema provenga de ese lado, y NO necesariamente por la consulta.

Empecemos entonces por un detalle simple: Necesitamos conocer la estructura de esa tabla, lo cual se puede recuperar con una consulta que deberás ejecutar con algún front-end, como phpMyadmin o MySQL Workbench.
Suponiendo que la tabla se llamase "TABLA1", la query quedaría:

Código MySQL:
Ver original
  1. SHOW CREATE TABLE tabla1;

Supongo que queda suficientemente claro que deberás reemplazar ese "tabla1" por el nombre que tiene TU tabla. ¿No?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/05/2016, 14:23
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Bloqueo de tabla grande en MySQL

Agregando a lo ya dicho, estoy totalmente de acuerdo que esa cantidad de registros no para nada grande ni mediana.

El problema puede ser el hardware, sistema operativo y otras cosas que esté corriendo el equipo donde tenes instalado MySQL.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 12/05/2016, 16:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Bloqueo de tabla grande en MySQL

Finalmente el problema era que había una consulta colgada que estaba durando demasiado, y había bloqueado las transacciones posteriores.

Había hecho subconsultas con esa tabla que he mencionado de 215.000 registros, e imagino que he formado una consulta demasiado compleja. Una vez ha quedado ese proceso activo y sin finalizar, luego cualquier consulta, por simple que fuera, con esa misma tabla, era imposible de ejecutar.

Una vez matado el proceso, ya he podido trabajar de nuevo con la tabla sin problemas.

Gracias por vuestras respuestas!

Etiquetas: bloqueo, campo, grande, registros, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:57.