UTNianos

Versión completa: [Aporte] Final de Gestion de Datos 16/12/2014
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
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?
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.
Retomo este tema, a ver si alguno me puede aclarar esto.
El 3a) no quedaría a=b=c? Tengo entendido que serializable, bloquea por insert y por select, por lo tanto en el tiempo 4 inserta y bloquea la tabla, cuando pasa al tiempo 5, T1 no puede hacer el select porque esta bloqueado por T2. En el tiempo 6 se hace el rollback, se libera la tabla, y b queda con el mismo valor que a. C queda con el mismo valor que a y b.

Si serializable no bloquea por insert, entonces si queda como lei mas arriba. a=c=n y b=n+1
Yo pensé lo mismo, pero justamente la primera transacción es read uncomitted, o sea que lee valores no comitteados (por eso tiene el problema de lecturas sucias)

Así que a=c y b=c+1
Una demostración analítica que realice para concluir lo de huffman.

Del apunte de reinosa obtenemos que un arbol N-ario, con n nodos internos(todo lo que no es hoja) donde la cantidad de nodos externos(hojas) que tiene es: (N-1)*n +1

Como Huffman se basa en un arbol binario, sabemos que N=2 => Externos = (2-1)*n +1 = n + 1 => Externos = n + 1 (2)

La cantidad de nodos totales es: Cantidad de nodos externos + cantidad de nodos internos

Si de (2) despejo n, n = externos - 1

La cantidad de nodos totales es = Externos + n = Externos + Externos - 1 = 2*Externos - 1

Externos son las hojas, que en el caso de huffman siempre son las letras. Y ya queda demostrado que eso es cierto
Y tambien sirve para el otro VOF que anda dando vuelta, que ahora no estoy encontrando y que dice:

"en el arbol de huffman la cantidad total de nodos es la siguiente: (total de hojas*2 )-1"
Tengo entendido que Serializable bloquea toda la tabla para hacer inserts,updates y deletes por otra transacción pero permite que otra se realice un select. Por lo que quedaría A=C y B=A+1.
Si no es así por favor avisenme jaj
Páginas: 1 2
URLs de referencia