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

InnoDB, cuando es obligatorio?

Estas en el tema de InnoDB, cuando es obligatorio? en el foro de Mysql en Foros del Web. Bueno esa es básicamente mi consulta. Cuando es realmente importante trabajar con InnoDB en lugar de MyISAM? InnoDB permite trabajar con FK y Transacciones. Pero ...
  #1 (permalink)  
Antiguo 25/05/2010, 23:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años
Puntos: 11
InnoDB, cuando es obligatorio?

Bueno esa es básicamente mi consulta.
Cuando es realmente importante trabajar con InnoDB en lugar de MyISAM?
InnoDB permite trabajar con FK y Transacciones.

Pero cuando las necesitamos realmente?
Es decir, MyISAM viene ppor defecto en MySQL, y creo que la gran mayoria de las BD que hay en MySQL dando vueltas por ahi son MyISAM.
Y supongo funcionan bien.

Hay algun caso concreto donde necesitemos si o si InnoDB?
Por ejemplo, si se trata de un sitio como este foro, donde entran miles de personas por dia y todos consultan y escriben en la BD, es peligroso tenerlo en MyISAM?
de ser asi, por qué? que podría pasar?

Saludos !!!

PD: acabo de fijarme en la BD de un foro de Icy Phoenix (con "SHOW TABLE STATUS"), y las tablas son todas MyISAM, tambien desde la web de MySQL dice que es obligatorio tener las tablas del sistema en MyISAM y que InnoDB ocupa mas espacio y es mucho mas lento con los indices.
Mi miedo basicamente es que se me rompa toda la base de datos al interactuar con muchos usuarios al mismo tiempo, puede pasar esto con MyISAM o es muy poco probable?

Última edición por enridp; 26/05/2010 a las 00:02
  #2 (permalink)  
Antiguo 26/05/2010, 05:09
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, 5 meses
Puntos: 2658
Respuesta: InnoDB, cuando es obligatorio?

Cita:
MyISAM viene ppor defecto en MySQL,
Venía como motor por defecto en MySQL. Desde la versión 5.0 el motor por default es InnoDB, pese a que hubo alguna edición con MyISAM por default, pero son raras.
Cita:
Hay algun caso concreto donde necesitemos si o si InnoDB?
Tu mismo respondiste la pregunta: Necesitas usarlo cuando hay:
1) Usuarios y procesos ABM concurrentes.
2) La integridad referencial es más importante que la velocidad de inserciones/actualizaciones.
3) Poca experiencia en bloqueo de tablas y/o programación para bases de datos.
__________________
¿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 26/05/2010, 08:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años
Puntos: 11
Respuesta: InnoDB, cuando es obligatorio?

Hola gnz!
Pero como es entonces que un sistema de foros tan famoso como Icy Phoenix, que debe estar preparado para una gran sobrecarga en la BD esta armado con MyISAM?
(alguien sabe forosdelweb que tipo de tablas usa?)

He leido mucho sobre el tema, pero al no tener experiencia me cuesta decidir porque creo que no se aclara muy bien sobre los riesgos reales y de forma concreta.

Yo ya tengo mis tablas creadas con MyISAM y ahora tengo miedo de que se rompa la BD. Mi pregunta es básicamente, que tanto riesgo de que eso ocurra hay?
Cuales serian los errores que podria dejarnos en la BD una tabla MyISAM.
Podria ocurrir que inserte mal un valor? que no lo inserte? que devuelva mal una consulta?
Cuando ocurriria algo de eso?
  #4 (permalink)  
Antiguo 26/05/2010, 08:34
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, 5 meses
Puntos: 2658
Respuesta: InnoDB, cuando es obligatorio?

Cita:
Pero como es entonces que un sistema de foros tan famoso como Icy Phoenix, que debe estar preparado para una gran sobrecarga en la BD esta armado con MyISAM?
Imaginate que si es tan famoso, sus programadores y administradores no son precisamente aprendices en las necesidades de una base de datos basada en MyISAM...
¿No te parece?
Cita:
Yo ya tengo mis tablas creadas con MyISAM y ahora tengo miedo de que se rompa la BD. Mi pregunta es básicamente, que tanto riesgo de que eso ocurra hay?
Cuales serian los errores que podria dejarnos en la BD una tabla MyISAM.
Podria ocurrir que inserte mal un valor? que no lo inserte? que devuelva mal una consulta?
Cuando ocurriria algo de eso?
La base no se va a "romper", en todo caso te van a quedar datos corruptos por inconsistencia, si no manejas bien la programación.
Ten en cuenta que las inserciones/actualizaciones no te van a devolver errores porque las claves ingresadas en una tabla no existan en la tabla donde se supone se deben verificar, si esa verificación no la haces correctamente en el programa.
Esa es una parte del problema: Como no existen FK en MyISAM, el motor no verifica si ingresan o no datos válidos; eso es tu problema, no del DBMS.

¿Puede que ingrese mal los datos?
Si, porque solamente tiene que poder entrar en la columna (tipo de columna), y no verifica contra nada.

¿Que no lo inserte?
No, si cumple las restricciones del tipo de columna.

¿Que devuelva mal una consulta?
Si metes basura, sacarás basura.

En esencia, el problema de MyISAM es que requiere que todos los procesos de verificación de las relaciones entre tablas se programen en la aplicación, ya que no tiene recursos propios para hacerlo. Lo que quiere decir que los datos que se ingresan manualmente y que deberían ser PK en una tabla cualquiera, antes de ir a su destino deben verificarse en la tabla donde deberían existir...
¿Se entiende?

Eso para empezar.

¿Si te sirven las InnoDB o las MyISAM?
Eso es una cuestión que tiene que ver con el diseño de la base en sí. Sin ver el diagrama de Entidad - Relación y/o el Modelo de Datos graficado, no te lo puedo decir con certeza.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/05/2010, 08:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años
Puntos: 11
Respuesta: InnoDB, cuando es obligatorio?

Bueno en mi BD tengo cerca de 20 tablas, las relaciones no son tan elaboradas, cosas del estilo:
Ciudades, con ID a la tabla Provincias, que a su vez tiene un ID a la tabla Paises, etc.

Y voy a permitir que el usuario modifique solo 2 tablas asique a lo mejor no es tan necesario InnoDB ya que sobre el resto son solo SELECTs.
o estoy equivocado?

Mi duda era basicamente con cosas como estas por ejemplo:
Código PHP:
//en PHP:
INERT INTO USUARIOS (Nombre,ApellidoVALUES ('$nombre','$apellido');
$id_usuario SELECT LAST_INSERT_ID() FROM USUARRIOS;
//$id_usuario=$mysqli->insert_id; o asi? 
Hay probabilidad de que MySQL me devuelva mal ese ID?
No se, me imagino por ejemplo si se inserta otro usuario justo despues de ese (y antes de llamar a LAS_INSERT_ID).

Etiquetas: cuando, innodb
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 19:59.