Inquiridor
CDC e Memory Clerks

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
- Editado Junior Galvão - MVPMVP, Moderator quarta-feira, 22 de outubro de 2014 16:08
- Sugerido como Resposta Deric Ferreira sexta-feira, 24 de outubro de 2014 11:05
quarta-feira, 22 de outubro de 2014 15:10Moderador -
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:36Moderador -
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