Algo confundido en Transacciones en Sql2000

10/07/2006 - 23:35 por Dany Acosta | Informe spam
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

#1 Maxi
11/07/2006 - 00:39 | Informe spam
Hola Dany, en tu ejemplo estas siempre haciendo insert, porque deberia no
dejarlo hacer? si no estas trabajando sobre los mismos registros. Vos que es
lo q buscas? que mientras alguien haga un insert nadie mas pueda hacerlo?
esto es muy restrictivo segun mi opinion, al igual que el tipo de
aislamiento que has seleccionado.
Mira lo que dicen los BOL

SERIALIZABLE

Se establece un bloqueo de intervalo en el conjunto de datos, lo que impide
que otros usuarios actualicen o inserten filas en el conjunto de datos hasta
que finalice la transacción. Es el más restrictivo de los cuatro niveles de
aislamiento. Al ser menor la simultaneidad, sólo se debe utilizar esta
opción cuando sea necesario. Esta opción tiene el mismo efecto que
establecer HOLDLOCK en todas las tablas y en todas las instrucciones SELECT
de la transacción




Salu2

Microsoft MVP SQL Server
www.sqlgururs.org
Email:


"Dany Acosta" wrote in message
news:
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 -

Preguntas similares