MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Artigos

Dois Bons Motivos para Migrar para o SQL Server 2014

por Nilton Pinheiro julho 28, 2014 Nenhum comentário

Olá pessoal, nesta última semana tive a oportunidade de participar juntamente com meu amigo Fabiano Amorim (@mcflyamorim | blog | facebook) da migração de um SQL Server 2012 Cluster para o SQL Server 2014. O ambiente em questão é um cluster com 3 servidores ou nós, 3 instâncias de SQL sendo que duas delas ainda possuem configuradas 1 grupo do AlwaysOn Availabity Group para uma quarta instância, que também foi migrada.

Bom, mas o que realmente interessa aqui é que nossa migração tinha como foco logo após sua conclusão ativar duas novas funcionalidades do SQL Server 2014 que na nossa visão iria prover ótimos resultados para o ambiente, o NEW Cardinality Estimation (CE) e o DELAYED DURABILITY.

NEW Cardinality Estimation (CE)

Bom, não vou entrar no contexto de detalhar o CE aqui, mas colocarei logo abaixo alguns links para caso você queira se aprofundar no assunto. Por hora, o que você precisa saber é que o CE é uma importante parte do Query Optimizer (QO) e que no SQL Server 2014 ele foi significativamente redesenhado/reescrito para melhorar a qualidade dos “query plans” e consequentemente melhorar o desempenho das queries. E pelo que vimos, deu certo 🙂

O novo CE é ativado quando você altera o nível de compatibilidade do banco de dados para 120 (o nivel de compatibilidade do SQL Server 2014). Simples assim! Então, o Fabiano já tinha um belo alvo…um banco de dados que há tempos vinha lhe dando algumas dores de cabeça com algumas queries do LINQ….hummmmm LINQ…faz todo sentido né 🙂

Bom, então logo após a conclusão da migração das instâncias o nível de compatibilidade do banco de dados foi alterado e o resultado foi surpreendente, como mostro nos dois prints abaixo.

ANTES

 DEPOIS

Fizemos outros testes depois utilizando o SQL Profiler e as diferenças em logical reads, CPU e Durantion quando se ativava o novo CE eram gritantes. É óbvio que cada caso é um caso, cada ambiente é um ambiente, mas acredito que no geral você terá bons resultados com a utilização do novo CE. Principalmente se você também tiver LINQ 🙂

Alguns link para caso você queira se aprofundar no conhecimento do novo CE:

http://msdn.microsoft.com/en-us/library/dn600374.aspx

http://blogs.technet.com/b/dataplatforminsider/archive/2014/03/17/the-new-and-improved-cardinality-estimator-in-sql-server-2014.aspx (não deixem de ler esse)

http://michaeljswart.com/2014/05/enabling_the_new_ce/

 

DELAYED DURABILITY

Outra excelente feature do SQL Server 2014 é o delayed durability! Caso você não saiba, quando uma transação é processada no SQL Server um “transaction log record” para as modificações de dados em questão é gravado no arquivo de LOG do banco de dados ANTES que o SQL Server envie para a aplicação a informação de que a transação foi efetivada com sucesso, o acknowledgement.

Bom, com isso, em ambientes onde se tem um grande volume transacional e a escrita no LOG é um gargalo, por exemplo, pelo uso de um disco de baixa performance, é muito comum a identificação do wait type WRITELOG (normalmente combinado com PAGEIOLATCH_) e também se ter um alto valor para o contador Log flush waits/sec.

Para o ambiente migrado, alguns bancos de dados estavam sofrendo muito com isso e não por acaso o WRITELOG era o TOP1 na lista de TOP waits :). Então, resolvemos ativar o delayed durability para 3 bancos de dados e acompanhar o comportamento.

O delayed durability pode ser ativado no nível de transação, no entanto, a maneira mais simples é ativá-lo no nível de banco de dados executando o comando “ALTER DATABASE dbname SET DELAYED_DURABILITY = FORCED”.

Os resultados também foram surpreendentes…

WRITELOG ANTES:

WRITELOG DEPOIS:

Log Flush waits/sec: a linha Azul mostra o comportamento após a ativação da feature para um dos bancos de dados. Bela redução não? 🙂

 

Novamente, cada ambiente é um ambiente e não acho que essa seja uma funcionalidade para se sair aplicando de forma “default” no ambiente. Por exemplo, ainda não sei como isso se comportaria em um banco de dados/aplicação que na necessidade de um restore precisa-se restaurar o arquivo de log no momento mais próximo da falha possível (point in time). De qualquer forma, considerando que o problema de escrita em LOG é um problema bastante comum em muitos ambientes, esta é um feature que pode valer muito a pena.

Por fim, tivemos ainda um belo ganho no consumo de CPU 🙂

Bom, é isso aí pessoal, para quem quiser se aprofundar no estudo do delayed durability segue abaixo alguns links interessantes sobre o assunto…

http://sqlperformance.com/2014/04/io-subsystem/delayed-durability-in-sql-server-2014

http://msdn.microsoft.com/en-us/library/dn449490.aspx

http://www.pythian.com/blog/sql-server-2014-delayed-durability-from-an-application-perspective/

E aí….vamos migrar 🙂

Um abraço
Nilton Pinheiro 

 

 

 

Avaliação:
Compartilhe:
  • Anterior Updating permission setting for file ‘….System Volume InformationResumeKeyFilt11 anos atrás
  • Próximo Azure IaaS for IT Pros Online Event11 anos atrás

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2025 MCDBA Brasil.