Diego,

Te hago un par de preguntas antes.

Realmente necesitas transacciones ?
Que volumen de datos estas manejando ?
Los datos que traes y los que actualizas ... los podes relacionar alguna
columna que sea clave unica, no ?


Saludos!


-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Diego Jancic
Enviado el: Jueves, 03 de Julio de 2008 02:40 p.m.
Para: [EMAIL PROTECTED]
Asunto: [dbms] Proceso sin bloqueos

Hola,

Leonardo: Creo que corte la explicacion por la mitad, lo que quiero
hacer es meter todo dentro de una transaccion, y como la transaccion
bloquea la tabla que usa mientras esta activa (la transaccion) me va a
bloquear a todos los usuarios que quieran usar esta tabla.

Hernan: Parece buena idea, a excepcion de performance. Para hacer lo
que decis deberia usar un cursor o algo asi y creo que va a ser medio
lento...
Igual se me ocurre que podria hacer lo mismo que tengo ahora pero
usando un TOP n y corriendolo varias veces (es decir, hacerlo en
batches mas pequeños)
Creo que de esa forma podria "calibrar" el tiempo que se bloquea, para
equilibrar velocidad de import versus tiempo de tabla bloqueada.

Gracias!
Diego

2008/7/3 Hernán Zaldívar <[EMAIL PROTECTED]>:
> Siempre que hagas un bulk va a bloquear todo y es por proteccion... si le
sacas el bloqueo se pueden producir errores no muy buenos...
>
> Y si actualizas uno a uno en vez de bulk? Uno a uno va bloqueando de a un
registro a la vez y soltandonlo cuando lo termina de usar.. esto es rapido
>
> -----Mensaje original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leonardo
Micheloni
> Enviado el: Jueves, 03 de Julio de 2008 2:13 p.m.
> Para: Hernán Zaldívar
> Asunto: [dbms] Proceso sin bloqueos
>
> Hola Diego,
>  No entiendo qué querés decir con "bloquear toda la aplicación web"
>
> On Thu, Jul 3, 2008 at 1:04 PM, Diego Jancic <[EMAIL PROTECTED]> wrote:
>> Hola gente!,
>> Tengo un problema (posiblemente de diseño), tengo una app web que
>> permite importar algunas cosas (usuarios, permisos, etc) desde csv. Ya
>> esta funcionando todo en un proceso aparte, lo que se hace es:
>> 1 - importar cada linea del csv a una tabla temporal, sin hacer mucho
>> procesamiento
>> 2 - ejecutar bulk inserts para los nuevos usuarios
>> 3 - ejecutar bulk updates para actualizar los usuarios existentes
>> 4 - ejecutar bulk inserts para los nuevos permisos
>> 5 - ejecutar bulk updates para actualizar los permisos existentes
>> 6 - ....
>>
>> Como puedo hacer para ejecutar los pasos 2, 3, 4, 5, ..., n sin
>> bloquear a toda la aplicacion web ?
>> Posiblemente tarde poco el import, pero bloquear todo durante algunos
>> segundos no es muy bueno que digamos...
>>
>> Alguna idea?
>>
>> Gracias,
>> Diego
>>
>>
>
>
>
> --
> Leonardo Micheloni.
> Ayudando a organizar las primeras jornadas ágiles de Latinoamérica
>
> http://agiles2008.org/
>
> Blog Personal
>
> http://leomicheloni.blogspot.com/
>
>
>




Responder a