locked
CDC e Memory Clerks RRS feed

  • Pergunta

  • Eu sei que o MEMORYCLERK_SQLUTILITIES é usado pelas operações de BACKUP, e para melhorá-los, posso usar parâmetros como BUFFERCOUNT e MAXTRANSFERSIZE.

    O change data capture (CDC) também utiliza este mesmo CLERK para armazenar temporáriamente as operações lidas do Log de Transação.

    Existe alguma maneira de aumentar o tamanho deste CLERK, com  finalidade de agilizar o processo de scan... (semelhante ao que é feito quando ele está sendo utilizado pelo BACKUP)

    []'s | Rodrigo Ribeiro Gomes | MCTS/MCITP Dev/DBA


    • Editado RodrigoRRG terça-feira, 21 de outubro de 2014 20:11 título incorreto
    terça-feira, 21 de outubro de 2014 20:10

Todas as Respostas

  • Rodrigo,

    Nossa, esta sua dúvida é a mesma que recebi hoje em meu e-mail através do grupo de profissionais e especialistas em SQL Server!!!

    Você sabe que os parâmetros BufferCount e MaxtransferSize por padrão não necessitam ser especificados durante o processo de backup, pois o próprio SQL Server procura identificar e definar o melhor indicador para este parâmetros.

    Pois bem, quando utilizamos o BufferCount estamos especificano o número total de buffers de E/S a ser usado para a operação de backup. Por padrão este número é definido internamente com um valor inteiro, sendo este, considerado um número pequeno e dentro da faixa de buffers.

    Mas, caso um grande número de buffers venha a ser definido, o mesmo poderá provocar erros de "memória insuficiente" devido a espaço de endereço virtual inadequado no processo Sqlservr.exe.

    Já o MaxTransferSize, tem a finalidade de permitir a definição do tamanho da unidade de transferência de bytes a ser utilizada na mídia de backup, valor que deve ser compatível como o tipo da mídia e formatação, que por padrão devem ser múltiplos de 65536 bytes (64 KB), estendendo-se até 4194304 bytes (4 MB).

    Não sou especialista em Memory_Clerk, reconheço que tenho que estudar mais, mas com base em alguns cenários que estou estudando e também informações que atualmente estou colentado, este comportamento de alterar parâmetros no processo de backup, não é permitido ou melhor dizendo não é possível no Memory_Clerk.

    Isso devido a forma que o SQL Server trabalho com estes recursos, que na versão 2008 apresentava uma pequeno desequilíbrio na sua utilização, mas que foi contornado com um novo operador: MEMORYCLERK_SQLLOGPOOL, pois foi o Frederico Guimarães que destacou.

    Qual é a sua necessidade em relação a este cenário?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com




    quarta-feira, 22 de outubro de 2014 15:10
    Moderador
  • Olá Galvão,

    A dúvida é sim a mesma que você recebeu na lista de e-mail, pois o Rodrigo Trabalha junto comigo e estávamos discutindo uma solução para este problema, quando eu postei na lista e ele resolveu postar aqui no fórum.

    Algumas considerações:

    A dúvida não é  o funcionamento dos parâmetros do processo de backup que afetam o MEMORY CLERK, pois conforme informado, já sabemos o funcionamento e causas destas possíveis alterações.

    Os parâmetros BUFFERCOUNT, MAXTRANSFERSIZE apenas foram citados, para exemplificar que a alteração destes, influencia diretamente no tamanho do CLERK "MEMORYCLERK_SQLUTILITIES", que é utilizado pelo backup e também pelo CDC (Até o SQL Server 2008 R2).

    " este comportamento de alterar parâmetros no processo de backup, não é permitido ou melhor dizendo não é possível no Memory_Clerk. "

    A afirmação acima ficou um pouco confusa, pois conforme informado, É POSSÍVEL alterar os parâmetros supracitados para influenciar diretamente o espaço utilizado pelo SQLUTILITIES e consequentemente agilizar a performance do processo de backup.

    RESUMINDO:

    O que precisamos é otimizar o processo de SCAN do CDC. O Backup foi citado apenas como exemplo.

    Abraços,


    Edvaldo Castro MCTS - SQL SERVER 2005/2008 MCITP:DBA SQL SERVER 2005/2008 CCSQLA: Cambridge Certified SQL Associate MCT Alumni

    quarta-feira, 22 de outubro de 2014 16:24
  • Edvaldo,

    Perfeito, foi o que eu imaginei!!!

    Mas como não tinha certeza, respondi sobre os parâmetros afim de obter mais algum tipo de questionamento.

    A minha resposta foi justamente com base no que eu li nos e-mails, e como o próprio Fred Guimarães argumentou, ele mesmo não tinha uma resposta totalmente acertiva, como eu também não.

    Estou buscando mais informações para saber, mas acredito que o processo de Backup é bem diferente da forma que o CDC trabalha.

    Sei que você citou como exemplo, mas acho que a comparação não é mais indicada!!!!

    Me referi a comportamento, justamente por falar que ao alterar os parâmetros no backup, estaremos sim alterando a maneira e em muitos casos a forma que o SQL Server vai se comportar.

    Gostaria de saber a sua opinião sobre esta dúvida. Você acredita que isso é possível de ser feito?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 22 de outubro de 2014 17:36
    Moderador
  • Olá Galvão,

    A dúvida é sim a mesma que você recebeu na lista de e-mail, pois o Rodrigo Trabalha junto comigo e estávamos discutindo uma solução para este problema, quando eu postei na lista e ele resolveu postar aqui no fórum.

    Algumas considerações:

    A dúvida não é  o funcionamento dos parâmetros do processo de backup que afetam o MEMORY CLERK, pois conforme informado, já sabemos o funcionamento e causas destas possíveis alterações.

    Os parâmetros BUFFERCOUNT, MAXTRANSFERSIZE apenas foram citados, para exemplificar que a alteração destes, influencia diretamente no tamanho do CLERK "MEMORYCLERK_SQLUTILITIES", que é utilizado pelo backup e também pelo CDC (Até o SQL Server 2008 R2).

    " este comportamento de alterar parâmetros no processo de backup, não é permitido ou melhor dizendo não é possível no Memory_Clerk. "

    A afirmação acima ficou um pouco confusa, pois conforme informado, É POSSÍVEL alterar os parâmetros supracitados para influenciar diretamente o espaço utilizado pelo SQLUTILITIES e consequentemente agilizar a performance do processo de backup.

    RESUMINDO:

    O que precisamos é otimizar o processo de SCAN do CDC. O Backup foi citado apenas como exemplo.

    Abraços,


    Edvaldo Castro MCTS - SQL SERVER 2005/2008 MCITP:DBA SQL SERVER 2005/2008 CCSQLA: Cambridge Certified SQL Associate MCT Alumni

    Edvaldo,

    Apenas para que todos possamos ajudar (e aprender também), você poderia postar a alternativa indicada nesta "Lista de Discussões" ?

    Assim este conteúdo e o seu raciocínio fica mais claro para todos os interessados nesta sua questão.



    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quarta-feira, 22 de outubro de 2014 18:12
  • Olá Durval,

    A partir do SQL Server 2012, o MEMORY CLERK utilizado pelo CDC deixou de ser o  MEMORYCLERK_SQLUTILITIES (que também é utilizado pelas operações de BACKUP), e passou a utilizar o MEMORYCLERK_SQLLOGPOOL (que é utilizado pelo always, para re-sincronização das replicas).

    Basicamente foi esta a grande alteração entre SQL Server 2008 / 2008 R2 e 2012+ relacionadas do CDC...


    Edvaldo Castro MCTS - SQL SERVER 2005/2008 MCITP:DBA SQL SERVER 2005/2008 CCSQLA: Cambridge Certified SQL Associate MCT Alumni

    • Sugerido como Resposta Deric Ferreira sexta-feira, 24 de outubro de 2014 11:05
    sexta-feira, 24 de outubro de 2014 10:46