Download SQLSaturday_Guate_DelayedDurability
Transcript
SQL2014 Transacciones Diferidas - el AS bajo la manga Alejandro Cordero – Database Consultant - Pythian Correo electrónico: alejandro@sqlturbo.com Twitter: @ale_corderocr LinkedIn: https://cr.linkedin.com/in/alejandrocorderocr BLOG: Sqlturbo.com MCTS, CSM Patrocinadores del SQL Saturday Gold Sponsor Bronze Sponsor Geek Sponsor Alejandro Cordero SQLTURBO.COM DBA en Pythian Scrum Master Certified alejandro@sqlturbo.com 3 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 4 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 5 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 6 Bitacora de transacciones O transaction log Comparativa Memoria Vrs Disco Duro 7 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. 8 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 3 9 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 0 Como Implementarlo? Control a Nivel de Base de Datos ALTER DATABASE … SET DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED } Ejemplo #1.1 1 1 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 2 Como Implementarlo? Control a Nivel de COMMIT COMMIT [ { TRAN | TRANSACTION } ] [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] Ejemplo #1.3 1 3 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 4 Ejercicio#2 ejemplo de una transacción desde una aplicación utilizando Enterprise library logging block 1 5 Ejercicio #3 el caso de la perdida de datos 1 6 PREGUNTAS Y RESPUESTAS alejandro@sqlturbo.com Sqlturbo.com Alejandro @ale_corderocr Evaluaciones Evaluacion del evento http://www.sqlsaturday.com/443/eventeval.aspx Evaluacion de las charlas http://www.sqlsaturday.com/443/sessions/sessionevaluation.aspx