35
#GlobalAzure SQL Server 2014 “New Feature” Delayed Transaction Durability Edvaldo Castro

SQL Server 2014 New Feature - Delayed Transaction Durability

Embed Size (px)

Citation preview

#GlobalAzure

SQL Server 2014 “New Feature” Delayed Transaction DurabilityEdvaldo Castro

Patrocinadores

■ O que é uma transação?

■ Propriedades A. C. I. D.

■ W. A. L. (Write Ahead Logging)

■ Transações Fully Durable VS Delayed Durable

■ Cenários de utilização

■ Interoperabilidade

■ Benefícios VS Cuidados

■ DEMO

Agenda

■ “Uma sequência de operações, executadas como uma únidade lógica de trabalho, que apresenta as quatro propriedades ACID.”

O que é uma transação?

• Atomicidade

• Tudo ou Nada.

• Consistência

• Sempre em um estado Consistente.

• Isolamento

• Transações são isoladas até antes de começar, ou depois de concluir.

• Durabilidade

• Após completada, uma transação deve ser persistida em midia recuperável.

Propriedades A. C. I. D.

O WAL, garante que toda transação commited deve estar persistida em

disco, no arquivo de Log de Transações, para garantir a Durabilidade da

mesma, e consistência dos dados.

W. A. L. (Write Ahead Logging)

■ O commit acontece de forma síncrona e a aplicação que submeteu a transação,

recebe o retorno após a escrita ser concluída no log de transações.

■ Qualquer transação deste tipo, força um “Flush” do log buffer, fazendo todas as

transações no log buffer, serem persistidas (inclusive as Delayed Durable

Transactions)

Fully Durable Transactions

1313

Begin TransactionInsert into tabela 1Delete from tabela 2

Commit

Aplicação

LOG BUFFER (60K)

TransactionLog.ldf

Transação 1 – (15K)

Begin TransactionInsert into tabela 1Delete from tablea 2

Commit

1414

Aplicação

LOG BUFFER (60K)

TransactionLog.ldf

Transação 2 – (70K)

Begin TransactionInsert into tabela 1Delete from tabela 2Insert into tabela 3Delete from tabela 4Insert into tabela 5Delete from tabela 6

Insert into tabela 7Delete from tablea 8Delete from tablea 9

Commit

Insert into tabela 7Delete from tabela 8Delete from tabela 9

Commit

Begin TransactionInsert into tabela 1Delete from tabela 2Insert into tabela 3Delete from tabela 4Insert into tabela 5Delete from tabela 6

■ O commit é realizado de forma assíncrona, fazendo com que a aplicação que

submeteu a transação não tenha que aguardar a escrita no log de transações.

■ Possibilidade de perda de dados não persistidos no arquivo do transaction log.

Delayed Durable Transactions

■ Log buffer (60 KB) cheio.

■ Qualquer transação Fully Durable executada no banco

■ Execução da sp_flush_log

Situações que transformam uma transaçãoDelayed em Durable

1717

Begin TransactionInsert into tabela 1Delete from tabela 2

Commit

Aplicação

LOG BUFFER (60K)

TransactionLog.ldf

Transação 3 – (15K)

Begin TransactionInsert into tabela 1Delete from tabela 2

Commit

• Log buffer (60KB) cheio

• Qualquer transação Fully Durable executada na base

• Execução sp_flush_log

1818

Begin TransactionInsert into tabela 1Delete from tablea 2

Commit

Aplicação

LOG BUFFER (60K)

TransactionLog.ldf

• Log buffer (60KB) cheio

• Qualquer transação Fully Durable executada na base

• Execução sp_flush_log

• Log buffer (60KB) cheio

• Qualquer transação Fully Durable executada na base

• Execução sp_flush_log

■ Contenção e Locks■ Delayed Transaction Durability reduz o tempo de commit e libera os locks mais

rapidamente, resultando em um maior throughput.

■ Gargalos na escrita do transaction log■ Latências na escrita do T-Log beneficiam-se diretamente pela não espera da

escrita no arquivo de log de transações.

■ Tolerância à possibilidade de perda de (poucos) dados■ Como a escrita é assíncrona, uma falha súbita pode causar perda de registros

não escritos em disco.

Cenários de utilização

■ Grande quantidade de transações de pequeno tamanho (< 60KB)■ Uma transação grande (long running transaction) naturalmente vai exceder o tamanho

do log buffer (60KB), fazendo com que o flush seja realizado.

■ IN-MEMORY OLTP (HEKATON) – Native Compiled ProceduresCREATE PROCEDURE <procedureName> …

WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER

AS BEGIN ATOMIC WITH

(

DELAYED_DURABILITY = ON,

...

)

END.

Cenários de utilização

■ DATABASE

■ DISABLED■ Todas as transações são FULLY DURABLE

■ ALTER DATABASE [AdventureWorks2014] SET DELAYED_DURABILITY = DISABLED

■ ALLOWED■ Durabilidade deprende da configuração na transação

■ ALTER DATABASE [AdventureWorks2014] SET DELAYED_DURABILITY = ALLOWED

■ FORCED■ Todas as transações são DELAYED DURABLE

■ ALTER DATABASE [AdventureWorks2014] SET DELAYED_DURABILITY = FORCED

Configuração e habilitação

■ TRANSAÇÃO

■ ON■ A transação com esta cláusula torna-se DELAYED DURABLE

■ COMMIT TRAN transaction_name WITH (DELAYED_DURABILITY = ON)

■ OFF■ A transação com esta cláusula torna-se FULLY DURABLE

■ COMMIT TRAN transaction_name WITH (DELAYED_DURABILITY = ON)

Configuração e habilitação

■ Failover clustering■ Comportamento normal, Delayed Durable Transactions podem ser perdidas.

■ Replication■ Delayed Transactions não são imediatamente replicadas, isso acontece

somente quanto se tornam Fully Durable.

■ Log Shipping■ Apenas as transações Durable são incluídas no log que será enviado ao target.

■Backup de Log■ Apenas as transações Durable são incluídas no backup de log.

Interoperabilidade

■ Change Tracking e Change Data Capture (CDC)■ Todas as transações feitas em tabelas com estas features são Fully Durable

■ Crash Recovery■ Consistência garantida, porém transações que não foram persistidas em disco,

podem ser perdidas.

■ Cross-database e MSDTC■ Todas transações distribuídas ou cross-database transactions são Fully Durable

■ AlwaysOn Availability Groups e Database Mirroring■ A durabilidade não é garantida para Delayed Durable (Comportamento

normal)

Interoperabilidade

■ Benefícios■ Maior throughput no T-log

■ Liberação mais rápida dos locks

■Cuidados■ Possibilidade de perda de dados

Benefícios vs Cuidados

■ Excelente feature, mas deve ser usada com bastante cautela

■ Deve ser usada somente se houver tolerância a:

Conclusão

■ SQL Server 2014 – New Feature – Delayed Transaction Durability■ http://edvaldocastro.com/delayeddurability/

■ Control Transaction Durability■ https://msdn.microsoft.com/en-us/library/dn449490.aspx

Referências