Amigo estoy probando los niveles de aislamiento de transacciones en 2
ventanas de Query Analyzer de una misma tabla.
Ventana 1 tiene:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Begin Tran
declare @va int
set @va=0
While @va<000
Begin
print @va
Insert into categories (CategoryName,Description) Values ('AAAA','')
set @va = @va + 1
if @va>11000
Begin
Break
End
Else
Continue
End
Commit Tran
Ventana 2 tiene esto
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
Begin Tran
Insert into categories (CategoryName,Description) Values ('BBBB','')
Insert into categories (CategoryName,Description) Values ('BBBB','')
Insert into categories (CategoryName,Description) Values ('BBBB','')
Commit Tran
Cuando Ejecuto las 2 ventanas en paralelo supuestamente Una ventana
entra en transaccion y la otra ventana espera que la transaccion se
libere para que haga los cambios en la misma tabla. Pero me doy con la
sorpresa que la ventana 2 termina rapido y despues de un ratito termina
la ventana 1 con los cambios hechos.
Como trabaja el Nivel Serializable?:
Realiza N-Transacciones Aisladas en los Insert,Update,Delete y bloquea
las lecturas con Select hasta que se liberen las transacciones ????
es recomendable trabajar con este tipo de aislamiento en un entorno de
60 usuarios de las cuales 10 Actualizan en una tabla
paralelamente(Instantaneamente) y los otros 50 son lectura de esta tabla
o que tipo de aislamiento debo usar para este entorno???
La Data es constamente consultada.
Gracias y disculpen por lo extenso del mensaje
Dany Acosta
Developers -
Leer las respuestas