Delayed Durability, desde la
perspectiva de una Aplicación
Alejandro Cordero
Correo electrónico: [email protected]
Twitter: https://twitter.com/ale_corderocr
LinkedIn: https://cr.linkedin.com/in/alejandrocorderocr
BLOG: Sqlturbo.com
MCTS, CSM
Organiza
http://tinyurl.com/ComunidadWindows
Patrocinadores del SQL Saturday
Premier Sponsor
Gold Sponsor
Bronze Sponsor
Alejandro Cordero
SQLTURBO.COM
DBA en Pythian
Scrum Master Certified
[email protected]
4
Agenda
 Durabilidad de las transacciones, completas vrs diferidas( full vrs
delayed)
 Comparativa de velocidad de una memoria vrs disco duro
 Cuando se guarda la información en disco?
 Riesgos en las transacciones diferidas
 Posibles Casos de Uso
 Como Implementarlo? Control a nivel de bloque atómico vrs
Control a nivel de base de datos (atomic block level control)
 Ejercicio#1,1.2,1.3 Implementando transacciones diferidas
 Que puedo esperar al implementarlo desde una aplicación?
 Ejercicio#2 ejemplo de una transacción desde una aplicación
utilizando Enterprise library logging block
 Ejercicio #3 el caso de la perdida de datos
5
Durabilidad de las transacciones, completas
vrs Diferidas( full vrs delayed)
1 TRANSACCIÓN COMPLETA
sincrónico
Transacción
3
2
Archivo de datos
O Data file
Bitacora de transacciones
O transaction log
6
write-ahead logging (WAL)
Durabilidad de las transacciones, completas
vrs Diferidas( full vrs delayed)…cont
1
5
TRANSACCIÓN DIFERIDA
Asincrónico
Transacción
2
3
Archivo de datos
O Data file
4
Memoria
7
Bitacora de transacciones
O transaction log
Comparativa Memoria Vrs Disco Duro
8
Cuando Se guarda la información en Disco?
 La información guardada en el espacio de memoria
de SQL Server destinado a transacciones diferidas
se guarda en disco en las siguientes circunstancias:
• Una transacción completa en la misma base de
datos realiza un cambio en la base de datos y
ejecuta un commit exitosamente.
• El usuario ejecuta el comando sp_flush_log.
• El buffer de memoria destinado a transacciones
diferidas se llena, generando un “flush” al disco.
9
Riesgos en las transacciones diferidas
1
ID
Ubicación
1
San José
2
Ciudad de
Panama
2
4
Transacción
Archivo de datos
O Data file
OPSIEEE!
Toasty!
Bitacora de transacciones
O transaction log
Memoria
1
0
3
Posibles Casos De Uso
 Cuando se puede tolerar perder datos
 Cuando se experimenta un cuello de botella en la
bitacora de
 Transacciones (transaction logs)
 Cuando las transacciones tienen un
nivel alto de contención
1
1
Como Implementarlo? Control a Nivel de
Base de Datos
 ALTER DATABASE … SET DELAYED_DURABILITY = {
DISABLED | ALLOWED | FORCED }
Ejemplo #1.1
1
2
Como Implementarlo? Control a Nivel
atómico en bloques
CREATE PROCEDURE <procedureName> …
WITH NATIVE_COMPILATION, SCHEMABINDING,
EXECUTE AS OWNER AS
BEGIN ATOMIC WITH (
DELAYED_DURABILITY = ON, TRANSACTION
ISOLATION LEVEL = SNAPSHOT, LANGUAGE =
N'English' …
 )
 END





Ejemplo #1.2
1
3
Como Implementarlo? Control a Nivel de
COMMIT
 COMMIT [ { TRAN | TRANSACTION } ] [
transaction_name | @tran_name_variable ] ] [ WITH
( DELAYED_DURABILITY = { OFF | ON } ) ]
Ejemplo #1.3
1
4
Que puedo esperar al implementarlo desde
una aplicación? Ejemplo ado.net
 Se abre la Conexión y se crea una
transacción
 Se configura el objecto SqlCommand
 Se define el texto de la transacción
 Se ejecuta
 Se espera el retorno del control a la
aplicación
 Se hace un commit/rollback, o se cierra.
1
5
Ejercicio#2 ejemplo de una transacción
desde una aplicación utilizando Enterprise
library logging block
1
6
Ejercicio #3 el caso de la perdida de datos
1
7
PREGUNTAS Y RESPUESTAS
email
blog
Nombre
expositor
twitter
18 |
Descargar

Document