greeksuspend21
Empleado de Fotocopiadora
Sin estado :(
Ing. en Sistemas
Facultad Regional Buenos Aires
Mensajes: 35
Agradecimientos dados: 8
Agradecimientos: 38 en 11 posts
Registro en: Dec 2013
|
RE: [Aporte] Final de Gestion de Datos 16/12/2014
Buenas, hay algo que no me cerro en la resolucion. Pusieron que la respuesta al 3) a. es:
" Devolvia a=c=n y b=n+1 siendo n la cantidad de registros."
Pero la transaccion 2 al ser serializable, establece con el select un exclusive lock sobre toda la tabla, que no se va a liberar hasta que commitee. La transaccion 1 por mas que sea read uncommited, intenta establecer un shared lock por el select solo durante la duracion del select (despues lo libera), pero el shared lock es incompatible con el exclusive lock. Por ende deberian devolver las 3 variables el mismo resultado...
Leyendo en la pagina de microsoft sobre locks, dice que el select con read uncommited si establece un shared lock y lo libera:
"Shared (S) locks allow concurrent transactions to read (SELECT) a resource under pessimistic concurrency control. For more information, see Types of Concurrency Control. No other transactions can modify the data while shared (S) locks exist on the resource. Shared (S) locks on a resource are released as soon as the read operation completes, unless the transaction isolation level is set to repeatable read or higher, or a locking hint is used to retain the shared (S) locks for the duration of the transaction."
Pero tambien dice sobre los exclusive locks que bloquean todos los select salvo en read uncommited:
"Exclusive (X) locks prevent access to a resource by concurrent transactions. With an exclusive (X) lock, no other transactions can modify data; read operations can take place only with the use of the NOLOCK hint or read uncommitted isolation level."
Entonces, alguien que la tenga clara con base de datos me puede responder cual de las 2 opciones es?
Porque si se intentara establecer un shared lock por el select, no se podria, puesto que ya tiene un exclusive lock por el insert. Entonces, como joraca pueden hacerse selects si ya hay un exclusive lock?
(Este mensaje fue modificado por última vez en: 03-04-2015 12:02 por greeksuspend21.)
|
|
03-04-2015 11:57 |
|
|
alee_91
Empleado del buffet
Sin estado :(
Ing. en Sistemas
Facultad Regional Buenos Aires
Mensajes: 12
Agradecimientos dados: 3
Agradecimientos: 2 en 2 posts
Registro en: Jul 2012
|
RE: [Aporte] Final de Gestion de Datos 16/12/2014
Buenas.. fede, yo por mas q ya di el final tampoco la tengo muy clara que digamos pero coincido con lo que dijeron los profesores, de hecho, en mi opinion coincide con lo que pusiste vos:
al principio aclara sobre el primer lock que se libera al toque q termina de leer:
"Shared (S) locks on a resource are released as soon as the read operation completes, unless the transaction isolation level is set to repeatable read or higher, or a locking hint is used to retain the shared (S) locks for the duration of the transaction."
asi que al momento de establecer el segundo lockeo (el exclusivo) no hay ningun problema, y una vez hecho ese exclusive lock si otra transaccion quiere editar algo o leerlo seguro debe esperar, serializarse.. SALVO que sea solo una lectura con read uncommited, que es exactamente lo que intenta hacer la primer transaccion para calcular @b:
"With an exclusive (X) lock, no other transactions can modify data; read operations can take place only with the use of the NOLOCK hint or read uncommitted isolation level."
igual repito, no lo digo por conocimiento sinó por deducción.
|
|
04-04-2015 02:04 |
|
alee_91 recibio 1 Gracias por este postalee_91 recibio 1 Gracias por este post
holautn (29-02-2016)
|