Académique Documents
Professionnel Documents
Culture Documents
TipoConcurrenciayNiveldeAislamientoenTransacciones|Pensandobajolalluvia
Pensandobajolalluvia
byRodrigoPerezBurgues
TipoConcurrenciayNiveldeAislamientoenTransacciones
Publicadoel29/05/2013
1Vote
TiposdeConcurrenciadeTransacciones
Optimista:Dejarealizarmodificacionesdelosdatosysepersisten(commitado).Cuandosevanapersistirse
verificaquenosehanmodificadoporotrastransaccionessimultneamenteencuyocasoproduceunerror.
MsinformacindelPatrnOptimista.
Pesimista:Paralosdatosmodificados,realizarunbloqueodelosmismos.Impendiendoqueotras
transaccionesrealicencambiosdeesosdatos.MsinformacindelPatrnPesimista.
TiposdeNiveldeAislamientodeTransaccin
READUNCOMMITTED:Leenvaloresmodificadosporotrastransaccionesnopersisitidos(commitados).
READCOMMITTED:Nodejanleervaloresmodificadosporotrastransaccionesnopersisitidos(commitados).
READCOMMITTEDalreleerdatosquesehancomitadoporotratransaccindurantelaejecucindela
propiaobtienevaloresdiferentes.
READ_COMMITTED_SNAPSHOT:EvitaelproblemadelREADCOMMITED.Creaunestadoenlabasede
datosdeestamaneralatransaccinleelosdatosreferidosaeseestado.Noimpidequeotrastransacciones
modifiquenlosdatosleidosporlanuestra.
REPEATABLEREAD:EvitaelproblemadelREADCOMMITED.REPEATABLEREADevitaqueotra
transaccinmodifiquelosdatosmodificadospornuestratransaccin.Dadoquelosdatosledospueden
dependerdelorealizadoenlaotratransaccin.
SERIALIZABLE:REPEATABLEREADqueademsseextiendeparainserciones.
TransaccionesenSQLSERVER
EnSQLServereltipodeconcurrenciaespesimista.Elbloqueoseactivaalmodificarlosdatosnoalleerlos.Si
queremosactivarloensulecturacondebemosusarlaclausulaWITHUPDLOCK.
1
SELECT*FROMTABLEWITH(UDPLOCK)WHEREID=1
ElniveldelAislamientoenSQLSERVERseindicaconlainstruccinSETTRANSACTIONISOLATIONLEVEL.
PordefectoesREADCOMMITTED.
EnSQLSERVERcuandoindicamosREADCOMMITTED,puedeserREADCOMMITTEDoREADCOMMITED
SNAPSHOT.Estosedeterminaenfuncindelaconfiguracindelabasededatos:
READCOMMITEDSNAPSHOT:LabasededatosseencuentraconlaconfiguracinSET
READ_COMMITTED_SNAPSHOTON.
https://rodrigopb.wordpress.com/2013/05/29/tipoconcurrenciayniveldeaislamientoentransacciones/
1/4
15/11/2016
TipoConcurrenciayNiveldeAislamientoenTransacciones|Pensandobajolalluvia
READCOMMITTED:LabasededatosseencuentraconlaconfiguracinSET
READ_COMMITTED_SNAPSHOTOFF
EnSQLAZUREsoloexisteREADCOMMITTEDSNAPSHOT.NosepuededesactivarconlaconfiguracinSET
READ_COMMITTED_SNAPSHOTOFF.
TransaccionesenOtrosEntornos
EnEntityFramework,LINQ,DataSet,eltipodeconcurrenciaesoptimista.
EnNHibernate,pordefectotieneconcurrenciaoptimista.Perosepuedehabilitarconcurrenciapesimista.
Engeneral,serecomindaelusodelTransactionScope,paradeterminarelniveldeaislamientocon
TransactionScopeOption.
EjemplodeTransacciones
Enelsiguientelink,estadisponibleunproyectodeejemplo:ConcurrencyAndIsolationOnTransaction.sln
Elproyecto,generadostransaccionesconcurrentesqueincrementanenunoelmismocampodeunatabladela
basededatos.EnfuncindelNiveldeAislamiento(READCOMMITEDoREPETIBLEREAD)yelEntrono
(EntitiyFramework,SQLoSQLconConcurrenciaPesimistaenLectura).Seobtiene:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
9:ENTITYReadCommitted
9:InitialValue=1
11:ReadValue=1
11:Incrementingto2
12:ReadValue=1
12:Incrementingto2
11:Saving
11:Commit
12:Saving
12:Commit
9:FinalValue=2
9:SQLReadCommitted
9:InitialValue=1
12:ReadValue=1
12:Incrementingto2
11:ReadValue=1
11:Incrementingto2
12:Saving
12:Commit
11:Saving
11:Commit
9:FinalValue=2
9:SQLUpdLockReadCommitted
9:InitialValue=1
14:ReadValue=1
14:Incrementingto2
14:Saving
14:Commit
11:ReadValue=2
11:Incrementingto3
11:Saving
11:Commit
9:FinalValue=3
9:ENTITYRepeatableRead
9:InitialValue=1
12:ReadValue=1
12:Incrementingto2
38
11:ReadValue=1
https://rodrigopb.wordpress.com/2013/05/29/tipoconcurrenciayniveldeaislamientoentransacciones/
2/4
15/11/2016
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
TipoConcurrenciayNiveldeAislamientoenTransacciones|Pensandobajolalluvia
11:ReadValue=1
11:Incrementingto2
12:Saving
11:Anerroroccurredwhileupdatingtheentries.Seetheinnerexcepti
onfordetails.
12:Commit
9:FinalValue=2
9:SQLRepeatableRead
9:InitialValue=1
12:ReadValue=1
12:Incrementingto2
13:ReadValue=1
13:Incrementingto2
12:Saving
13:Transaction(ProcessID68)wasdeadlockedonlockresourceswitha
notherprocessandhasbeenchosenasthedeadlockvictim.Rerunthetransaction
.
12:Commit
9:FinalValue=2
9:SQLUpdLockRepeatableRead
9:InitialValue=1
13:ReadValue=1
13:Incrementingto2
13:Saving
13:Commit
12:ReadValue=2
12:Incrementingto3
12:Saving
12:Commit
9:FinalValue=3
Acercadeestosanuncios
Compartir:
Megusta
Selprimeroendecirquetegusta.
Relacionado
GlosarioTerminosAzureSQL
En"SqlAzure"
AzureRedisCache
En"Azure"
ActiveGeoReplicationSQLAzure
En"SqlAzure"
EstaentradafuepublicadaenAzure,Desarrollo,SqlServeryetiquetadatransactionisolationlevel.Guardaelenlacepermanente.
https://rodrigopb.wordpress.com/2013/05/29/tipoconcurrenciayniveldeaislamientoentransacciones/
3/4
15/11/2016
TipoConcurrenciayNiveldeAislamientoenTransacciones|Pensandobajolalluvia
UnarespuestaaTipoConcurrenciayNiveldeAislamientoenTransacciones
Pingback:AzureRedisCache|Pensandobajolalluvia
Pensandobajolalluvia
BlogdeWordPress.com.
https://rodrigopb.wordpress.com/2013/05/29/tipoconcurrenciayniveldeaislamientoentransacciones/
4/4