Cita de: ^TiFa^ en 29 Noviembre 2009, 19:59 PM
Por ponerte ejemplos sencillos, asume que haces lo siguiente y por desgracia sufres un corte electrico a mitad del proceso o sencillamente pierdes conexión a la red o similar, falla de disco etc :
* Transacciones masivas entre un esclavo y un maestro (espejo)
* Transaciones en clusteres
* Transferencia de datos de una DB a otra
* Restaurancion de un backup de mas de 50GB
- Son solo ejemplos basicos, cosas que pueden hacer que un o mas tablas se corrompan de alguna u otra forma. Que aunque influye tambien en parte en esto el motor de almacenamiento (como los no transaccionales en MySQL) hago incapie en que no es la causa del todo. (He visto tablas corromperse en motores transaccionales como InnoDB a causa de un programador web que asigno como indice campos varchar) mientras mas consistentes sean los datos, por cuestion de rendimiento y optimizacion al menos yo, me inclino mas en campos caracteres por char aunque me ocupe mas espacio en disco, son mas improbables a corromperse incluso en tablas Myisam (Que suelen corromperse con frecuencia) .
Aunque sera cuestion de gustos, he conocido DBA Seniors en Oracle que les he preguntado cosas tan simples como, sabes la diferencia entra un char y un varchar2? y me han respondido cosas tipo: que no son acaso lo mismo.... y he tenido que exponerle que no y el porque.
Yo me he tornado un poco maniatica con la optimizacion de los motores de DB, no digo que varchar sea mediocre o malo, porque ejerce su funcion decentemente aunque tenga sus riesgos, las unicas veces que opto por varchar es si son campos de una tabla que no sean muy importantes o tenga que economizar espacio en el disco, o similar. De lo contrario, intento que todos los tipos de datos sean lo mas consistentes posibles, asi se evita la gente muchos problemas futuros.
Se que no es mi hilo, pero necesito que me aclares algo, tu mencionas que se corrompe toda la tabla(eso es lo probable y logico) debido a una falla determinada (corte de electricidad o caida de red en tu ejemplo )lo que no me parece logico es que sea mas probable que se corrompan determinados campos solo por tener el tipo de datos varchar lo cual me parece incorrecto, por que las unicas veces donde los campos de tipo caracter estan propensos a ser truncados(corruptos) es cuando haces migraciones de distintos motores(por los tipos de intercalacion que poseen los tablas o por caracteres validos en un motor y en el otro no) ejem. sybase a sqlserver o viceversa. pero esto es indistinto ya que es aplicable tanto para campos char y varchar.
Como nota adicional de suceder un error(sea cual sea la naturaleza) para el tipo de transacciones del ejemplo se corrompen las tablas haciendolas inclusive inoperativas, en el caso de quedar operativa al ser error transaccional se trunca la insercion de registros ya que la ATOMICIDAD que mencionas se aplica a las transacciones mas no a un tipo de dato en particular, por lo cual la expresion "(Varchar es muy dispuesto a corromperse no tiene mucha atomicidad)" me queda bastante confusa hasta me aventuraria a decir incorrecta y quisiera saber a que hacer referencia; todos los dias se aprende algo nuevo dicen quizas me he perdido de algo...
atte.
Miguel Angel