SlideShare une entreprise Scribd logo
1  sur  25
NIVELES DE
AISLAMIENTO
NIVELES DE AISLAMIENTO
El nivel de aislamiento de una
transacción
(transaction
isolation
level) define el grado en que se aísla
una
transacción
de
las
modificaciones de recursos o datos
realizadas por otras transacciones
 El

nivel de aislamiento de una transacción
es una característica de vital importancia
en el desarrollo de aplicaciones de base
de datos, ya que afecta a los tipos y
duración de bloqueos que se producen en
una infraestructura de base de datos, lo
cual, tiene efectos directos en el
rendimiento y tiempo de respuesta de
nuestras consultas y transacciones
Lectura

sucia:

Las sentencias select son
ejecutadas si realizar bloques, pero
podría usarse una versión anterior
de un registro.
las lecturas no son consistentes al
usar este nivel de aislamiento.
Lectura no repetible:
una transacción vuelve a
leer datos que previamente
había leído y encuentra que
han sido modificados o
eliminados por una
transacción.
Lectura fantasma:
Una

transacción vuelve a ejecutar
una
consulta,
devolviendo
un
conjunto de registros que satisfacen
una condición de búsqueda y
encuentra que otros registro que
satisfacen la condición han sido
insertadas
por
otra
transacción
cursada.
Niveles de aislamiento:
Comportamiento permitido
Lectura
Nivel de aislamiento
Sucia

No repetible

Fantasma

Sí

Sí

Sí

Lectura comprometida

No

Sí

Sí

Lectura repetible

No

No

Sí

Secuenciable

No

No

No

Lectura no comprometida
SQL

permite todos estos
niveles, Oracle sólo permite
la lectura comprometida y
secuenciable.
Los
niveles se pueden
establecer en ambos para
cada transacción.
4 niveles de aislamiento basados en bloqueos.
• READ UNCOMMITTED puede recuperar datos
modificados pero no confirmados por otras
transacciones (lecturas sucias - dirty reads).
• En este nivel se pueden producir todos los efectos
secundarios de simultaneidad (lecturas sucias,
lecturas no repetibles y lecturas fantasma
• - EJEMPLO: entre dos lecturas de un mismo registro
en una transacción A, otra transacción B puede
modificar dicho registro, pero no hay bloqueos ni
versiones de lectura, por lo que se minimiza la
sobrecarga.
 Una

operación de lectura (SELECT) no
establecerá bloqueos compartidos (shared
locks) sobre los datos que está leyendo, por
lo que no será bloqueada por otra
transacción que tenga establecido un
bloqueo exclusivo por motivo de una
operación de escritura.
 Este nivel de aislamiento ofrece grandes
beneficios de rendimiento, pero sólo se
utiliza en casos en que la ocurrencia de
lecturas sucias (dirty reads) no sea un
problema.
READ COMMITTED
 permite

que entre dos lecturas de un
mismo registro en una transacción A, otra
transacción B pueda modificar dicho
registro, obteniendo diferentes resultados
de la misma lectura.
 Evita las lecturas sucias (dirty reads), pero
por el contrario, permite lecturas no
repetibles


Con ese nivel de aislamiento, una operación de
lectura (SELECT) establecerá bloqueos compartidos
(shared locks) sobre los datos que está leyendo. Sin
embargo, dichos bloqueos compartidos finalizarán
junto con la propia operación de lectura, de tal
modo que entre dos lecturas cabe la posibilidad
de que otra transacción realice una operación de
escritura.

EJEMPLO: ( UPDATE) en este caso, la segunda
lectura obtendrá datos distintos a la primera lectura
(lecturas no repetibles).
REPEATABLE READ
 Evita que entre dos lecturas de un mismo
registro en una transacción A, otra transacción B
pueda modificar dicho registro, con el efecto de
que en la segunda lectura de la transacción A
se obtuviera un dato diferente. De este modo,
ambas
lecturas
serían
iguales
(lecturas
repetidas).
Una operación de lectura (SELECT) establecerá
bloqueos compartidos (shared locks) sobre los
datos que está leyendo, y los mantendrá hasta el
final de la transacción, garantizando así que no se
produce lecturas no repetibles (non repeatable
reads).
la Mayor consistencia en la transacción, mediante
mayores recursos y bloqueos evitan los problemas de
las lecturas sucias y de las lecturas no repetibles.
Este modo de aislamiento no evita las lecturas
fantasma, es decir, una transacción podría ejecutar
una consulta sobre un rango de filas
EJEMPLO: ( 100 filas) y de forma simultánea otra
transacción podría realizar un inserción de una o
varias filas sobre el mismo rango.
SERIALIZABLE
 Garantiza que una transacción recuperará
exactamente los mismos datos cada vez que repita
una operación de lectura, es decir, la misma
sentencia SELECT con la misma cláusula WHERE
devolverá el mismo número de filas, luego no se
podrán insertar filas nuevas en el rango cubierto
por la WHERE, etc.
 Se

evitarán las lecturas fantasma) aunque para
ello aplicará un nivel de bloqueo que puede
afectar a los demás usuarios en los sistemas
multiusuario (realizará un bloqueo de un rango de
índice conforme a la cláusula WHERE y si no es
posible bloqueará toda la tabla).
 Evita los problemas de las lecturas sucias (dirty
reads), de las lecturas no repetibles (non
repeatable reads), y de las lecturas fantasma
(phantom reads).
 es

muy importante recordar que el tiempo de
espera por un bloqueo por defecto en SQL es
infinito. Es decir, si tenemos una transacción que
está manteniendo un bloqueo sobre un recurso.
 Para ello, es posible utilizar la sentencia SET
LOCK_TIMEOUT para especificar el tiempo máximo
de espera por bloqueo (en milisegundos).
 En caso de que una transacción alcance el tiempo
máximo de espera por bloqueo, se producirá un
mensaje de error.
1222 (Msg 1222, Level 16, State 51, Line 1. Lock request
time out period exceeded.).
También es posible conocer el actual tiempo de
espera por bloqueo, consultando el valor de la
función del sistema @@LOCK_TIMEOUT.


en vez de realizar un uso intensivo de
bloqueos, su funcionamiento se basa en el
almacenamiento de versiones de filas en
TEMPDB.

Si una transacción empieza en un momento del
tiempo determinado, sólo será capaz de
acceder a la información de la base de datos
que era real en aquel momento del tiempo.
conflictos de actualización lo cual implicaría que la
transacción se deshace (Rollback).
 Tiene

la ventaja de utilizar el versionado
de filas de tal modo, que las lecturas no
son bloqueadas por las escrituras y
viceversa.

Pueden producirse lecturas no repetibles y
lecturas fantasmas.
En PostgreSQL el bloqueo puede ser
Compartido (Share) o Exclusivo (Exclusive), son
administrados
por
un
“Lock
Manager.
si un bloqueo toma mucho tiempo en
ejecutarse se produce un Deadlock, el sistema
lo
muestra
como
un
Timeout.
Un bloqueo puede darse a una tupla, una
página
o
una
tabla
completa.

En PostgreSQL existe una tabla de locks, y esta
es consultada antes de ejecutar una
transacción
nueva.
Bloqueos y Tablas
Postgres ofrece varios modos de bloqueo para controlar el acceso
concurrente a los datos en tablas.
Todos los modos de bloqueo (excepto para AccessShareLock)
adquiridos en un transacción se mantienen hasta la duración de la
transacción.

Existen dos tipos de bloqueos:
• Bloqueos a nivel de tabla
• Bloqueos a nivel de registro
Bloqueos a Nivel de tabla
AccessShareLock Un modo de bloqueo adquirido automáticamente sobre
tablas que están siendo consultadas. Postgres libera estos bloqueos después
de que se haya ejecutado una declaración.
RowShareLock Adquirido por SELECT FOR UPDATE y LOCK TABLE
para declaraciones IN ROW SHARE MODE.
RowExclusiveLock Lo adquieren UPDATE, DELETE, INSERT y LOCK
TABLE para declaraciones IN ROW EXCLUSIVE MODE.
ShareLock Lo adquieren CREATE INDEX y LOCK TABLE para
declaraciones IN SHARE MODE.
ShareRowExclusiveLock Lo toma LOCK TABLE para declaraciones IN
SHARE ROW EXCLUSIVE MODE.
ExclusiveLock Lo toma LOCK TABLE para declaraciones IN EXCLUSIVE
MODE.
AccessExclusiveLock Lo toman ALTER TABLE, DROP TABLE, VACUUM
FULL, por defecto en un LOCK TABLE
Bloqueos a Nivel de Fila
• Este tipo de bloqueos se producen cuando campos internos de
una fila son actualizados (o borrados o marcados para ser
actualizados). Postgres no retiene en memoria ninguna
información sobre filas modificadas y de este modo no tiene
límites para el número de filas bloqueadas sin incremento de
bloqueo.
• Sin embargo, SELECT FOR UPDATE modificará las filas
seleccionadas marcándolas, de tal modo que se escribirán en
el disco.
• Los bloqueos a nivel de fila no afecta a los datos consultados.
Estos son usados para bloquear escrituras a la misma fila
únicamente.
BEGIN WORK;
consulta1;
consulta2;
...
COMMIT WORK; == END
WORK;
ROLLBACK WORK; == ABORT
WORK

Contenu connexe

Tendances (20)

Sqlcommand
SqlcommandSqlcommand
Sqlcommand
 
Instruccion if
Instruccion ifInstruccion if
Instruccion if
 
Transacciones y errores en mysql
Transacciones y errores en mysqlTransacciones y errores en mysql
Transacciones y errores en mysql
 
Estructuras de control en android
Estructuras de control en androidEstructuras de control en android
Estructuras de control en android
 
Transacciones
TransaccionesTransacciones
Transacciones
 
TRANSACCIONES
TRANSACCIONESTRANSACCIONES
TRANSACCIONES
 
Estructuras de control en android
Estructuras de control en androidEstructuras de control en android
Estructuras de control en android
 
Administración de Transacciones - del tema 1 al 4
Administración de Transacciones - del tema 1 al 4Administración de Transacciones - del tema 1 al 4
Administración de Transacciones - del tema 1 al 4
 
Transacciones y manejo de errores en mysql
Transacciones y manejo de errores en mysqlTransacciones y manejo de errores en mysql
Transacciones y manejo de errores en mysql
 
Transacciones en SQL SERVER
Transacciones en SQL SERVERTransacciones en SQL SERVER
Transacciones en SQL SERVER
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Consistencia es un término más amplio que el de integridad
Consistencia es un término más amplio que el de integridadConsistencia es un término más amplio que el de integridad
Consistencia es un término más amplio que el de integridad
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Tarea
TareaTarea
Tarea
 
Consistencia
ConsistenciaConsistencia
Consistencia
 
Statement
StatementStatement
Statement
 
Modelos de estados
Modelos de estadosModelos de estados
Modelos de estados
 
Problemas del bloqueo en dos faces
Problemas del bloqueo en dos facesProblemas del bloqueo en dos faces
Problemas del bloqueo en dos faces
 
Transacciones en MySQL
Transacciones en MySQLTransacciones en MySQL
Transacciones en MySQL
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 

En vedette

Die Rolle der Unternehmenskommunikation für kleinere und mittlere Unternehmen
Die Rolle der Unternehmenskommunikation für kleinere und mittlere UnternehmenDie Rolle der Unternehmenskommunikation für kleinere und mittlere Unternehmen
Die Rolle der Unternehmenskommunikation für kleinere und mittlere UnternehmenScheidtweiler PR
 
Trabajo definitivo
Trabajo definitivoTrabajo definitivo
Trabajo definitivolauri83
 
Foro aspectos que influyen en el rendimiento academico
Foro aspectos que influyen en el rendimiento academicoForo aspectos que influyen en el rendimiento academico
Foro aspectos que influyen en el rendimiento academicoFlor Mp
 
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - Rückmeldung
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - RückmeldungB&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - Rückmeldung
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - RückmeldungWolfgang Hornung
 
Museu do ouro peru 7julho2010
Museu do ouro peru   7julho2010Museu do ouro peru   7julho2010
Museu do ouro peru 7julho2010Agostinho Gouveia
 
Clase 2 de PHP
Clase 2 de PHPClase 2 de PHP
Clase 2 de PHPLismirabal
 
EL SISTEMA DIGESTIVO
EL SISTEMA DIGESTIVOEL SISTEMA DIGESTIVO
EL SISTEMA DIGESTIVOkaritonolasco
 
Chio y jess presentacion
Chio y jess presentacion Chio y jess presentacion
Chio y jess presentacion Luis Blink
 
Trabajo slidehare aula y correo
Trabajo slidehare aula y correoTrabajo slidehare aula y correo
Trabajo slidehare aula y correofabiancruzvargas
 

En vedette (20)

Herramientas telematicas 3 punto
Herramientas telematicas 3 puntoHerramientas telematicas 3 punto
Herramientas telematicas 3 punto
 
Die Rolle der Unternehmenskommunikation für kleinere und mittlere Unternehmen
Die Rolle der Unternehmenskommunikation für kleinere und mittlere UnternehmenDie Rolle der Unternehmenskommunikation für kleinere und mittlere Unternehmen
Die Rolle der Unternehmenskommunikation für kleinere und mittlere Unternehmen
 
El túnel
El túnelEl túnel
El túnel
 
Razones
RazonesRazones
Razones
 
Tuaregs Manar
Tuaregs ManarTuaregs Manar
Tuaregs Manar
 
Trabajo definitivo
Trabajo definitivoTrabajo definitivo
Trabajo definitivo
 
Expresiones de la ley
Expresiones de la leyExpresiones de la ley
Expresiones de la ley
 
Businessplan
BusinessplanBusinessplan
Businessplan
 
Stakeholders.
Stakeholders.Stakeholders.
Stakeholders.
 
Foro aspectos que influyen en el rendimiento academico
Foro aspectos que influyen en el rendimiento academicoForo aspectos que influyen en el rendimiento academico
Foro aspectos que influyen en el rendimiento academico
 
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - Rückmeldung
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - RückmeldungB&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - Rückmeldung
B&IT-Prozessablauf: Mobile Instandhaltung auf Tablet PC / iPad - Rückmeldung
 
Derechos humanos
Derechos humanosDerechos humanos
Derechos humanos
 
Presentación1
Presentación1Presentación1
Presentación1
 
Museu do ouro peru 7julho2010
Museu do ouro peru   7julho2010Museu do ouro peru   7julho2010
Museu do ouro peru 7julho2010
 
Educacion y pedagogia
Educacion y pedagogiaEducacion y pedagogia
Educacion y pedagogia
 
Clase 2 de PHP
Clase 2 de PHPClase 2 de PHP
Clase 2 de PHP
 
EL SISTEMA DIGESTIVO
EL SISTEMA DIGESTIVOEL SISTEMA DIGESTIVO
EL SISTEMA DIGESTIVO
 
Chio y jess presentacion
Chio y jess presentacion Chio y jess presentacion
Chio y jess presentacion
 
Barrios practica1
Barrios practica1Barrios practica1
Barrios practica1
 
Trabajo slidehare aula y correo
Trabajo slidehare aula y correoTrabajo slidehare aula y correo
Trabajo slidehare aula y correo
 

Similaire à Unidad iv expo sbdts

U456 postgre sql
U456 postgre sqlU456 postgre sql
U456 postgre sqlJr. Serrano
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7GeovannyYungan
 
Abf leccion 11
Abf leccion 11Abf leccion 11
Abf leccion 11victdiazm
 
Capítulo 18 (Técnicas de control de la concurrencia)
Capítulo 18 (Técnicas de control de la concurrencia)Capítulo 18 (Técnicas de control de la concurrencia)
Capítulo 18 (Técnicas de control de la concurrencia)Liz Ocampo
 
Rosero inés bdii_t7 (1)
Rosero inés bdii_t7 (1)Rosero inés bdii_t7 (1)
Rosero inés bdii_t7 (1)Inés Rosero
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidosTensor
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidosTensor
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
87 Php. Borrar Registros Y Salvar Datos
87 Php. Borrar Registros Y Salvar Datos87 Php. Borrar Registros Y Salvar Datos
87 Php. Borrar Registros Y Salvar DatosJosé M. Padilla
 
Exposicion estalin
Exposicion estalinExposicion estalin
Exposicion estalinStalyn Cruz
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De ProcesosAcristyM
 

Similaire à Unidad iv expo sbdts (20)

U456 postgre sql
U456 postgre sqlU456 postgre sql
U456 postgre sql
 
Taller de Base de Datos - Unidad 5 transacciones
Taller de Base de Datos - Unidad 5  transaccionesTaller de Base de Datos - Unidad 5  transacciones
Taller de Base de Datos - Unidad 5 transacciones
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7
 
Simultaneidad impedidos por los bloqueos
Simultaneidad impedidos por los bloqueosSimultaneidad impedidos por los bloqueos
Simultaneidad impedidos por los bloqueos
 
Abf leccion 11
Abf leccion 11Abf leccion 11
Abf leccion 11
 
ATOMICIDAD
ATOMICIDADATOMICIDAD
ATOMICIDAD
 
Capítulo 18 (Técnicas de control de la concurrencia)
Capítulo 18 (Técnicas de control de la concurrencia)Capítulo 18 (Técnicas de control de la concurrencia)
Capítulo 18 (Técnicas de control de la concurrencia)
 
Doris aguagallo bdii_t7
Doris  aguagallo bdii_t7Doris  aguagallo bdii_t7
Doris aguagallo bdii_t7
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Rosero inés bdii_t7 (1)
Rosero inés bdii_t7 (1)Rosero inés bdii_t7 (1)
Rosero inés bdii_t7 (1)
 
Gestion de transacciones
Gestion de transaccionesGestion de transacciones
Gestion de transacciones
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidos
 
Archivos distribuidos
Archivos distribuidosArchivos distribuidos
Archivos distribuidos
 
Transac sq ll
Transac sq llTransac sq ll
Transac sq ll
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
87 Php. Borrar Registros Y Salvar Datos
87 Php. Borrar Registros Y Salvar Datos87 Php. Borrar Registros Y Salvar Datos
87 Php. Borrar Registros Y Salvar Datos
 
Exposicion estalin
Exposicion estalinExposicion estalin
Exposicion estalin
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 

Unidad iv expo sbdts

  • 2. NIVELES DE AISLAMIENTO El nivel de aislamiento de una transacción (transaction isolation level) define el grado en que se aísla una transacción de las modificaciones de recursos o datos realizadas por otras transacciones
  • 3.  El nivel de aislamiento de una transacción es una característica de vital importancia en el desarrollo de aplicaciones de base de datos, ya que afecta a los tipos y duración de bloqueos que se producen en una infraestructura de base de datos, lo cual, tiene efectos directos en el rendimiento y tiempo de respuesta de nuestras consultas y transacciones
  • 4. Lectura sucia: Las sentencias select son ejecutadas si realizar bloques, pero podría usarse una versión anterior de un registro. las lecturas no son consistentes al usar este nivel de aislamiento.
  • 5. Lectura no repetible: una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados o eliminados por una transacción.
  • 6. Lectura fantasma: Una transacción vuelve a ejecutar una consulta, devolviendo un conjunto de registros que satisfacen una condición de búsqueda y encuentra que otros registro que satisfacen la condición han sido insertadas por otra transacción cursada.
  • 7. Niveles de aislamiento: Comportamiento permitido Lectura Nivel de aislamiento Sucia No repetible Fantasma Sí Sí Sí Lectura comprometida No Sí Sí Lectura repetible No No Sí Secuenciable No No No Lectura no comprometida
  • 8. SQL permite todos estos niveles, Oracle sólo permite la lectura comprometida y secuenciable. Los niveles se pueden establecer en ambos para cada transacción.
  • 9. 4 niveles de aislamiento basados en bloqueos. • READ UNCOMMITTED puede recuperar datos modificados pero no confirmados por otras transacciones (lecturas sucias - dirty reads). • En este nivel se pueden producir todos los efectos secundarios de simultaneidad (lecturas sucias, lecturas no repetibles y lecturas fantasma • - EJEMPLO: entre dos lecturas de un mismo registro en una transacción A, otra transacción B puede modificar dicho registro, pero no hay bloqueos ni versiones de lectura, por lo que se minimiza la sobrecarga.
  • 10.  Una operación de lectura (SELECT) no establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo, por lo que no será bloqueada por otra transacción que tenga establecido un bloqueo exclusivo por motivo de una operación de escritura.  Este nivel de aislamiento ofrece grandes beneficios de rendimiento, pero sólo se utiliza en casos en que la ocurrencia de lecturas sucias (dirty reads) no sea un problema.
  • 11. READ COMMITTED  permite que entre dos lecturas de un mismo registro en una transacción A, otra transacción B pueda modificar dicho registro, obteniendo diferentes resultados de la misma lectura.  Evita las lecturas sucias (dirty reads), pero por el contrario, permite lecturas no repetibles
  • 12.  Con ese nivel de aislamiento, una operación de lectura (SELECT) establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo. Sin embargo, dichos bloqueos compartidos finalizarán junto con la propia operación de lectura, de tal modo que entre dos lecturas cabe la posibilidad de que otra transacción realice una operación de escritura. EJEMPLO: ( UPDATE) en este caso, la segunda lectura obtendrá datos distintos a la primera lectura (lecturas no repetibles).
  • 13. REPEATABLE READ  Evita que entre dos lecturas de un mismo registro en una transacción A, otra transacción B pueda modificar dicho registro, con el efecto de que en la segunda lectura de la transacción A se obtuviera un dato diferente. De este modo, ambas lecturas serían iguales (lecturas repetidas). Una operación de lectura (SELECT) establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo, y los mantendrá hasta el final de la transacción, garantizando así que no se produce lecturas no repetibles (non repeatable reads).
  • 14. la Mayor consistencia en la transacción, mediante mayores recursos y bloqueos evitan los problemas de las lecturas sucias y de las lecturas no repetibles. Este modo de aislamiento no evita las lecturas fantasma, es decir, una transacción podría ejecutar una consulta sobre un rango de filas EJEMPLO: ( 100 filas) y de forma simultánea otra transacción podría realizar un inserción de una o varias filas sobre el mismo rango.
  • 15. SERIALIZABLE  Garantiza que una transacción recuperará exactamente los mismos datos cada vez que repita una operación de lectura, es decir, la misma sentencia SELECT con la misma cláusula WHERE devolverá el mismo número de filas, luego no se podrán insertar filas nuevas en el rango cubierto por la WHERE, etc.
  • 16.  Se evitarán las lecturas fantasma) aunque para ello aplicará un nivel de bloqueo que puede afectar a los demás usuarios en los sistemas multiusuario (realizará un bloqueo de un rango de índice conforme a la cláusula WHERE y si no es posible bloqueará toda la tabla).  Evita los problemas de las lecturas sucias (dirty reads), de las lecturas no repetibles (non repeatable reads), y de las lecturas fantasma (phantom reads).
  • 17.  es muy importante recordar que el tiempo de espera por un bloqueo por defecto en SQL es infinito. Es decir, si tenemos una transacción que está manteniendo un bloqueo sobre un recurso.  Para ello, es posible utilizar la sentencia SET LOCK_TIMEOUT para especificar el tiempo máximo de espera por bloqueo (en milisegundos).  En caso de que una transacción alcance el tiempo máximo de espera por bloqueo, se producirá un mensaje de error. 1222 (Msg 1222, Level 16, State 51, Line 1. Lock request time out period exceeded.). También es posible conocer el actual tiempo de espera por bloqueo, consultando el valor de la función del sistema @@LOCK_TIMEOUT.
  • 18.
  • 19.  en vez de realizar un uso intensivo de bloqueos, su funcionamiento se basa en el almacenamiento de versiones de filas en TEMPDB. Si una transacción empieza en un momento del tiempo determinado, sólo será capaz de acceder a la información de la base de datos que era real en aquel momento del tiempo. conflictos de actualización lo cual implicaría que la transacción se deshace (Rollback).
  • 20.  Tiene la ventaja de utilizar el versionado de filas de tal modo, que las lecturas no son bloqueadas por las escrituras y viceversa. Pueden producirse lecturas no repetibles y lecturas fantasmas.
  • 21. En PostgreSQL el bloqueo puede ser Compartido (Share) o Exclusivo (Exclusive), son administrados por un “Lock Manager. si un bloqueo toma mucho tiempo en ejecutarse se produce un Deadlock, el sistema lo muestra como un Timeout. Un bloqueo puede darse a una tupla, una página o una tabla completa. En PostgreSQL existe una tabla de locks, y esta es consultada antes de ejecutar una transacción nueva.
  • 22. Bloqueos y Tablas Postgres ofrece varios modos de bloqueo para controlar el acceso concurrente a los datos en tablas. Todos los modos de bloqueo (excepto para AccessShareLock) adquiridos en un transacción se mantienen hasta la duración de la transacción. Existen dos tipos de bloqueos: • Bloqueos a nivel de tabla • Bloqueos a nivel de registro
  • 23. Bloqueos a Nivel de tabla AccessShareLock Un modo de bloqueo adquirido automáticamente sobre tablas que están siendo consultadas. Postgres libera estos bloqueos después de que se haya ejecutado una declaración. RowShareLock Adquirido por SELECT FOR UPDATE y LOCK TABLE para declaraciones IN ROW SHARE MODE. RowExclusiveLock Lo adquieren UPDATE, DELETE, INSERT y LOCK TABLE para declaraciones IN ROW EXCLUSIVE MODE. ShareLock Lo adquieren CREATE INDEX y LOCK TABLE para declaraciones IN SHARE MODE. ShareRowExclusiveLock Lo toma LOCK TABLE para declaraciones IN SHARE ROW EXCLUSIVE MODE. ExclusiveLock Lo toma LOCK TABLE para declaraciones IN EXCLUSIVE MODE. AccessExclusiveLock Lo toman ALTER TABLE, DROP TABLE, VACUUM FULL, por defecto en un LOCK TABLE
  • 24. Bloqueos a Nivel de Fila • Este tipo de bloqueos se producen cuando campos internos de una fila son actualizados (o borrados o marcados para ser actualizados). Postgres no retiene en memoria ninguna información sobre filas modificadas y de este modo no tiene límites para el número de filas bloqueadas sin incremento de bloqueo. • Sin embargo, SELECT FOR UPDATE modificará las filas seleccionadas marcándolas, de tal modo que se escribirán en el disco. • Los bloqueos a nivel de fila no afecta a los datos consultados. Estos son usados para bloquear escrituras a la misma fila únicamente.
  • 25. BEGIN WORK; consulta1; consulta2; ... COMMIT WORK; == END WORK; ROLLBACK WORK; == ABORT WORK