SQL Server 2014 New Feature - Delayed Transaction Durability

409 visualizações

Publicada em

Palestra realizada no evento Global Azure BootCamp no dia 25/04/2015

Publicada em: Design
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

SQL Server 2014 New Feature - Delayed Transaction Durability

  1. 1. #GlobalAzure SQL Server 2014 “New Feature” Delayed Transaction Durability Edvaldo Castro
  2. 2. Patrocinadores
  3. 3. ■ 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
  4. 4. ■ “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?
  5. 5. • 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.
  6. 6. 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)
  7. 7. ■ 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
  8. 8. 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
  9. 9. 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
  10. 10. ■ 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
  11. 11. ■ 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
  12. 12. 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
  13. 13. 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
  14. 14. ■ 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
  15. 15. ■ 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
  16. 16. ■ 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
  17. 17. ■ 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
  18. 18. ■ 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
  19. 19. ■ 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
  20. 20. ■ Benefícios ■ Maior throughput no T-log ■ Liberação mais rápida dos locks ■Cuidados ■ Possibilidade de perda de dados Benefícios vs Cuidados
  21. 21. ■ Excelente feature, mas deve ser usada com bastante cautela ■ Deve ser usada somente se houver tolerância a: Conclusão
  22. 22. ■ 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

×