Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Final] Gestión de Datos 18/12/2012
Autor Mensaje
eltipito Sin conexión
Profesor del Modulo A
^^
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 386
Agradecimientos dados: 73
Agradecimientos: 45 en 19 posts
Registro en: May 2008
Last.fm
Mensaje: #16
RE: [Final] Gestión de Datos 18/12/2012
Yo también tengo dudas en el 3a con las dos versiones, para mi terminaba en (2,4)
Sólo por el hecho en que ambas comienzan con un set isolation level, por lo cual la serializable va a bloquear todo lo que use


Votemos..... (?)

Alguien que pueda confirmar como es?
23-02-2015 15:49
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
p3rch4 Sin conexión
Militante
Sin estado :(
***

-----
-----

Mensajes: 85
Agradecimientos dados: 22
Agradecimientos: 28 en 14 posts
Registro en: Sep 2011
Mensaje: #17
RE: [Final] Gestión de Datos 18/12/2012
Hice las pruebas con estas sentencias:



set transaction isolation level read committed
begin tran
select * from prueba where numero=2
WAITFOR DELAY '000:00:5'
update prueba set valor =valor -2 where numero=2
WAITFOR DELAY '000:00:05'
select * from prueba where numero=2
commit transaction




set transaction isolation level serializable
begin tran
WAITFOR DELAY '000:00:03'
select * from prueba where numero=2
WAITFOR DELAY '000:00:05'
update prueba set valor=valor*2 where numero=2
select * from prueba where numero=2
commit transaction


Me da que el resultado final es (2,2) y es lo que yo a ojo habia intuido en un principio pero no estoy seguro de como justificarla:
- Si poner que T1 se bloquea porque como T2 en el tiempo 4 hace un select de ese registro y es serializable, bloquea el registro
- O que, T1 en el tiempo 4 espera a que T2 haga el commit por su condicion de read commited
27-02-2015 12:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] p3rch4 recibio 2 Gracias por este post
Fly (01-03-2015), coolerking (02-03-2015)
Fly Sin conexión
Secretario de la SAE
estado sólido
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 578
Agradecimientos dados: 119
Agradecimientos: 215 en 67 posts
Registro en: May 2011
Mensaje: #18
RE: [Final] Gestión de Datos 18/12/2012
(27-02-2015 12:15)p3rch4 escribió:  Me da que el resultado final es (2,2) y es lo que yo a ojo habia intuido en un principio pero no estoy seguro de como justificarla:
- Si poner que T1 se bloquea porque como T2 en el tiempo 4 hace un select de ese registro y es serializable, bloquea el registro
- O que, T1 en el tiempo 4 espera a que T2 haga el commit por su condicion de read commited

3a)
Usé tus scripts (que de paso, están bien planteados) y si se fijan en los resultados, todos los selects de la Transacción 1 dan (2,2), mientras que en la Transacción 2 primero da (2,2) y en el último (2,4)... Sin embargo el resultado final es (2,2).

Lo que saco como deducción es que la transacción 1 se "frena" cuando llega al UPDATE, porque el primer SELECT de la Transacción 2 "bloquea" el mismo rango de registros que usa el UPDATE. Entonces la transacción 2 sigue su recorrido, se actualizan los valores a (2,4) (eso es lo que muestra el último select de T2) y se hace el Commit. Recién ahí se libera T1 y hace su UPDATE, actualizando el registro a (2,2) (lo que muestra el último select de T1). Se commitea T1 y fin del ejercicio.

3b)
También chequeado con los scripts.
Como ambas transacciones son READ UNCOMMITED, es como si las transacciones no existieran y por ende todo se ejecutara a la vez.
Es lo mismo que si en vez de dos "hilos" de ejecución tengamos uno sólo que haga lo siguiente:


set transaction isolation level read uncommitted
begin tran
select * from TablaPrueba where numero = 2
select * from TablaPrueba where numero = 2
update TablaPrueba set valor = valor - 2 where numero=2
update TablaPrueba set valor=valor*2 where numero=2
select * from TablaPrueba where numero = 2
commit transaction


(Este mensaje fue modificado por última vez en: 01-03-2015 21:10 por Fly.)
01-03-2015 21:03
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Fly recibio 3 Gracias por este post
coolerking (02-03-2015), _Gabo (05-12-2015), CarooLina (08-02-2018)
leandrong Sin conexión
Secretario de la SAE
...
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 632
Agradecimientos dados: 180
Agradecimientos: 621 en 81 posts
Registro en: Sep 2008
Mensaje: #19
RE: [Final] Gestión de Datos 18/12/2012
El 3A queda (2,2) por lo siguiente

   

El 3B queda (2,0) por lo siguiente

   
(Este mensaje fue modificado por última vez en: 21-12-2015 12:28 por leandrong.)
21-12-2015 12:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] leandrong recibio 2 Gracias por este post
rovila (11-01-2017), CarooLina (08-02-2018)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 2 invitado(s)