SlideShare uma empresa Scribd logo
1 de 35
#GlobalAzure
SQL Server 2014 “New Feature”
Delayed Transaction Durability
Edvaldo 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 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
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
■ 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ção
Delayed em Durable
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
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
■ 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 Procedures
CREATE 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

Mais conteúdo relacionado

Destaque

High Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasHigh Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasLuiz Henrique Garetti Rosário
 
Sql SAT #147 Problemas de Fragmentção com TLog
Sql SAT #147 Problemas de Fragmentção com TLogSql SAT #147 Problemas de Fragmentção com TLog
Sql SAT #147 Problemas de Fragmentção com TLogMarcus Bittencourt
 
AlwaysOn Availability Groups na nuvem em 3 cliques
AlwaysOn Availability Groups na nuvem em 3 cliquesAlwaysOn Availability Groups na nuvem em 3 cliques
AlwaysOn Availability Groups na nuvem em 3 cliquesEdvaldo Castro
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Lucas A. Romão
 
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...Daniel Donda - MVP
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 

Destaque (7)

High Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasHigh Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidas
 
Sql SAT #147 Problemas de Fragmentção com TLog
Sql SAT #147 Problemas de Fragmentção com TLogSql SAT #147 Problemas de Fragmentção com TLog
Sql SAT #147 Problemas de Fragmentção com TLog
 
AlwaysOn Availability Groups na nuvem em 3 cliques
AlwaysOn Availability Groups na nuvem em 3 cliquesAlwaysOn Availability Groups na nuvem em 3 cliques
AlwaysOn Availability Groups na nuvem em 3 cliques
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
 
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
Disaster Recovery usando Windows Server 2012 R2, Microsoft System Center 2012...
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016
 

Semelhante a SQL Server 2014 New Feature - Delayed Transaction Durability

Tratamento de transacao
Tratamento de transacaoTratamento de transacao
Tratamento de transacaoEvandro Polese
 
Apresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESApresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESSergioBernardes11
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaJuliano Padilha
 
Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11André Phillip Bertoletti
 
Transações no SQL Server
Transações no SQL ServerTransações no SQL Server
Transações no SQL ServerDanilo Lima
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
TDC 2018 - Boas práticas no desenvolvimento de Smart Contracts
TDC 2018 - Boas práticas no desenvolvimento de Smart ContractsTDC 2018 - Boas práticas no desenvolvimento de Smart Contracts
TDC 2018 - Boas práticas no desenvolvimento de Smart ContractsAndré Ferreira
 
Estratégias de Backup e Restore
Estratégias de Backup e RestoreEstratégias de Backup e Restore
Estratégias de Backup e RestoreFabrício Catae
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPIssac Nolis Ohasi
 
Sqlite - Introdução
Sqlite - IntroduçãoSqlite - Introdução
Sqlite - IntroduçãoJoao Johanes
 
Gerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de ConsultasGerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de ConsultasWendel Moreira
 
Rethinking main memory oltp recovery
Rethinking main memory oltp recoveryRethinking main memory oltp recovery
Rethinking main memory oltp recoveryLucas Vinícius
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 

Semelhante a SQL Server 2014 New Feature - Delayed Transaction Durability (20)

Tratamento de transacao
Tratamento de transacaoTratamento de transacao
Tratamento de transacao
 
Apresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCESApresentação IDMS DC / DB COMPONENTS RESOURCES
Apresentação IDMS DC / DB COMPONENTS RESOURCES
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11
 
Transações no SQL Server
Transações no SQL ServerTransações no SQL Server
Transações no SQL Server
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Banco de Dados 2: Controle de Concorrência
Banco de Dados 2: Controle de ConcorrênciaBanco de Dados 2: Controle de Concorrência
Banco de Dados 2: Controle de Concorrência
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
TDC 2018 - Boas práticas no desenvolvimento de Smart Contracts
TDC 2018 - Boas práticas no desenvolvimento de Smart ContractsTDC 2018 - Boas práticas no desenvolvimento de Smart Contracts
TDC 2018 - Boas práticas no desenvolvimento de Smart Contracts
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 
Estratégias de Backup e Restore
Estratégias de Backup e RestoreEstratégias de Backup e Restore
Estratégias de Backup e Restore
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 
Sqlite
Sqlite Sqlite
Sqlite
 
SQL e Transações
SQL e TransaçõesSQL e Transações
SQL e Transações
 
Putting a-heat-with-thermostat
Putting a-heat-with-thermostatPutting a-heat-with-thermostat
Putting a-heat-with-thermostat
 
Sqlite - Introdução
Sqlite - IntroduçãoSqlite - Introdução
Sqlite - Introdução
 
J530 12 transactions
J530 12 transactionsJ530 12 transactions
J530 12 transactions
 
Gerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de ConsultasGerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de Consultas
 
Rethinking main memory oltp recovery
Rethinking main memory oltp recoveryRethinking main memory oltp recovery
Rethinking main memory oltp recovery
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 

SQL Server 2014 New Feature - Delayed Transaction Durability

  • 1. #GlobalAzure SQL Server 2014 “New Feature” Delayed Transaction Durability Edvaldo Castro
  • 3.
  • 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