A apresentação discute a nova funcionalidade de "Delayed Transaction Durability" no SQL Server 2014, que permite que transações sejam confirmadas de forma assíncrona para aumentar o desempenho. As propriedades ACID de transações e o processo de registro de log são explicados, assim como os cenários em que a funcionalidade pode ser útil e seus benefícios e riscos.
4. ■ 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
5.
6. ■ “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?
7.
8. • 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.
9.
10. 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)
11.
12. ■ 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
13. 1313
Begin Transaction
Insert into tabela 1
Delete from tabela 2
Commit
Aplicação
LOG BUFFER (60K)
TransactionLog.ldf
Transação 1 – (15K)
Begin Transaction
Insert into tabela 1
Delete from tablea 2
Commit
14. 1414
Aplicação
LOG BUFFER (60K)
TransactionLog.ldf
Transação 2 – (70K)
Begin Transaction
Insert into tabela 1
Delete from tabela 2
Insert into tabela 3
Delete from tabela 4
Insert into tabela 5
Delete from tabela 6
Insert into tabela 7
Delete from tablea 8
Delete from tablea 9
Commit
Insert into tabela 7
Delete from tabela 8
Delete from tabela 9
Commit
Begin Transaction
Insert into tabela 1
Delete from tabela 2
Insert into tabela 3
Delete from tabela 4
Insert into tabela 5
Delete from tabela 6
15. ■ 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
16. ■ 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ção
Delayed em Durable
17. 1717
Begin Transaction
Insert into tabela 1
Delete from tabela 2
Commit
Aplicação
LOG BUFFER (60K)
TransactionLog.ldf
Transação 3 – (15K)
Begin Transaction
Insert into tabela 1
Delete from tabela 2
Commit
• Log buffer (60KB) cheio
• Qualquer transação Fully Durable executada na base
• Execução sp_flush_log
18. 1818
Begin Transaction
Insert into tabela 1
Delete 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
19.
20. ■ 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
21. ■ 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 Procedures
CREATE PROCEDURE <procedureName> …
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
DELAYED_DURABILITY = ON,
...
)
END.
Cenários de utilização
22.
23. ■ 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
24. ■ 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
25.
26. ■ 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
27. ■ 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
28.
29. ■ Benefícios
■ Maior throughput no T-log
■ Liberação mais rápida dos locks
■Cuidados
■ Possibilidade de perda de dados
Benefícios vs Cuidados
30.
31.
32. ■ Excelente feature, mas deve ser usada com bastante cautela
■ Deve ser usada somente se houver tolerância a:
Conclusão
33.
34.
35. ■ 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