Estou tentando entender onde traçar uma linha tênue para o Indirect Checkpoint que foi introduzido no SQL Server 2012.
Com base no meu entendimento
O SQL Server faz um ponto de verificação para liberar páginas sujas para o disco, mas a frequência ou o intervalo de tempo entre os pontos de verificação depende de muitos fatores. Ele é controlado pela configuração no nível do servidor chamada intervalo de recuperação e o valor padrão para essas configurações é zero, o que significa que, em um sistema bastante ocupado, o SQL Server pode executar um ponto de verificação a cada minuto e pode resultar em um tempo de recuperação do banco de dados inferior a um minuto.
O SQL Server 2012 introduziu o ponto de verificação indireto – que, por sua vez, pode permitir que você controle o intervalo de recuperação de bancos de dados individuais.
Em um nível alto, essa configuração parece boa, pois permite equilibrar o IO do disco executando pontos de verificação mais frequentes em vez de fazer um checkpoint periódico que pode resultar em inundação do subsistema de IO subjacente
Agora minhas perguntas são
a) O ponto de verificação indireto leva em consideração o número de buffers sujos em vez do número de transações que o ponto de verificação geralmente automático estava usando?
b) Continuo descobrindo em muitos blogs que a configuração de ponto de verificação indireto é muito perigosa, pois
pode manter seu sistema IO muito ocupado. A afirmação abaixo é verdadeira no blog acima?
O Checkpoint normalmente grava grandes blocos de dados no disco de maneira otimizada em uma única operação de gravação, até 256 KB, dependendo do número de páginas sujas contíguas no cache que precisam ser descarregadas no disco. Depois de ativar o recurso de ponto de verificação indireto definindo o tempo de recuperação de destino para um valor diferente de zero, as gravações do ponto de verificação se transformarão em gravações de página única, gravações de 8 KB.
c) A configuração de ponto de verificação indireto é mais adequada para carga de trabalho do tipo Data Warehouse versus OLTP? Quais cenários você considera para o banco de dados SQL em questão antes de começar a aproveitar o ponto de verificação indireto?
ATUALIZAÇÃO (14 de abril de 2016):
Do SQL 2016 – Ele apenas roda mais rápido: padrão de ponto de verificação indireto no log da Web da equipe oficial para Suporte e Atendimento ao Cliente Microsoft (CSS) SQL Support:
O ponto de verificação indireto leva em consideração o número de buffers sujos em vez do número de transações que o ponto de verificação geralmente automático estava usando?
Depois de definir o target_recovery_time, o SQL Server calcula internamente o limite do Target Dirty Buffer. À medida que as transações são registradas no log de transações, uma lista de páginas sujas rastreia os LSNs e os buffers sujos que são modificados pela transação. Portanto, para pontos de verificação indiretos, os buffers sujos de cada transação junto com o LSN estão sendo rastreados.
O gravador de recuperação (um novo processo em segundo plano em 2012) pesquisa periodicamente a lista de páginas sujas e, se encontrar um número de páginas sujas no pool de buffers maior que o limite do buffer sujo de destino, ele libera os buffers sujos e move o minLSN para frente.
A configuração de ponto de verificação indireto é mais adequada para carga de trabalho do tipo Data Warehouse versus OLTP?
De BOL , uma carga de trabalho transacional online em um banco de dados configurado para pontos de verificação indiretos pode sofrer degradação de desempenho. Isso ocorre porque o gravador em segundo plano usado pelo ponto de verificação indireto às vezes aumenta a carga total de gravação para uma instância do servidor.
Quais cenários você considera para o banco de dados SQL em questão antes de começar a aproveitar o ponto de verificação indireto?
Isso depende de muitos fatores, pois cada ambiente é diferente em termos de hardware, memória, ocorrência de transações, etc. Eu recomendaria que você TESTE e TESTE duas vezes esse recurso específico, pois pode ser útil para você ou pode causar um efeito prejudicial em sua carga de trabalho e possivelmente comprometer seus bancos de dados também. Por padrão, o tempo de recuperação de destino é definido como significado ZERO, altere-o se você o testou completamente e seu comportamento é aceitável para você ...
Vantagens:
Pode melhorar o tempo de recuperação do banco de dados Pode reduzir a E/S do ponto de verificação, pois grava páginas continuamente no disco em segundo plano
Desvantagens:
Na carga de trabalho OLTP, pode aumentar as gravações gerais no servidor gravando páginas continuamente no disco em segundo plano, o que pode reduzir o desempenho.
Ref:
Definindo pontos de verificação indiretos por banco de dados no SQL Server 2012
Como funcionam os pontos de verificação e o que é registrado?