Control de Concurrencia y Niveles de Aislamiento en Bases de Datos Oracle
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 3,14 KB
Control de Concurrencia y Niveles de Aislamiento en Oracle
Set Transaction Isolation Level: No pierde actualizaciones (cada transacción es independiente) | Si la transacción A accede a recursos bloqueados por la transacción P, ocurre un deadlock y excepción (si no se captura, la transacción A realiza un rollback).
Si hay lecturas repetibles, las modificaciones hechas por la transacción solo las ve dicha transacción mientras no haga un commit. | Si la transacción A termina sin commit o rollback, ocurre una excepción (si no se captura, se realiza un rollback).
Si Ti actualiza algo que ya actualizó Tj y Tj está sin confirmar, entonces Ti aborta | Control de concurrencia: cuando actualizamos un dato, no sobrescribimos -> check obsol.
Set Transaction Isolation Level: Lectura consistente. La transacción no tiene lectura repetible | Propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) para evitar la inconsistencia de datos.
Modificaciones por una transacción y otras transacciones son visibles solo si las otras han hecho commit. | DDL:
create, alter, drop, truncate. DML: select, insert, update, delete.Si Ti tiene DML que necesita bloquear filas que tiene otra transacción, Ti espera |
plsql_block := 'BEGIN insert into ' || NombreTabla || ' values (:b, :c, :d, :e); END;';Aislamiento de lectura consistente: durante la ejecución de una transacción, las demás transacciones ven la base de datos congelada: |
EXECUTE IMMEDIATE plsql_block USING IN dnibusca, NombreCL, DirCL, TelCL;Nivel de instrucción: (por defecto en Oracle)
set transaction read write | plsql_block := 'create table ' || NombreTabla || '(DNI CHAR(8) not null, Nombre CHAR(30)Solo ve actualizaciones confirmadas antes de ejecutar la instrucción actual. | , Direccion VARCHAR2(50), Telefono CHAR(12), PRIMARY KEY (DNI))' ;
Nivel de transacción:
set transaction read only -> Solo puede leer, no modificar. El de arriba | plsql_block := 'drop table ' || NombreTabla || ' cascade constraints';Aislamiento por bloqueo de datos: locks (filas DML o tablas DDL). DML lo hace implícitamente a S o X |
Lock table mitabla in xxx mode [nowait]. Share (S): Lectura concurrente. Permite otros S, |
DBMS_output.put_line('--- tabla ' || NombreTabla || ' creada ');Todos pueden leer pero ninguno escribir. Exclusive (E): No permite otro lock, otros ven versiones anteriores. |
Pragma AUTONOMUS_TRANSACTION: Si Tp hace un rollback to savepoint -> lo hecho, hecho está. |
Si Ta está en: read committed: cuando Ta hace commit, Tp ve lo modificado; serializable no lo ve. |