Capturando Dados Históricos com Change Data Capture Arthur Luz | MCSA & MCT em SQL Server
Patrocinadores
Quem sou eu? Sênior BI Analyst at Comp Line Services Solutions BI and Database Consultant and Instructor in One Way Solution and BI do Brasil Writer at SQL Magazine MCSA e MCT em SQL Server Microsoft Instructor at Hepta Novintec
Agenda Parte 1 Change Data Capture – Overview Change Data Capture – Arquitetura Criando o CDC no SQL Server Entendendo as Funções [get_all_changes] e [get_net_changes] Parâmetros Avançados – sys.sp_cdc_change_job Melhores Práticas e Observações Parte 2 Consumindo os Dados do CDC com SSIS – Default Consumindo os Dados do CDC com SSIS – Dynamic
Change Data Capture - Overview Feature responsável pela captura de dados de alteração em tabelas a partir do Log de maneira assíncrona. Permite o versionamento dos dados com range de duração definido pelo LSN de início da transação. Usa as mesmas estrutura de sistema que a replicação transacional. Por isso permite a captura não somente de tabelas específicas, mas também de colunas específicas.
Change Data Capture - Arquitetura Log Table 1Table 2Table 3 _CDC 1 _CDC 2 _CDC 3 OLTP OLAP
Criando o Change Data Capture
Parâmetros Avançados Na procedure de sistema sys.sp_cdc_change_job é possível editar os seguintes parâmetros de configuração do CDC para o Job de – número de ciclos de leitura do log entre cada – número de transações lidas em cada – habilita a execução continua do – intervalo em segundos entre cada ciclo de leitura de log.
Parâmetros Avançados Na procedure de sistema sys.sp_cdc_change_job é possível editar os seguintes parâmetros de configuração do CDC para o Job de – quantidade de tempo em segundos de armazenamento dos dados – quantidade de registros deletados a cada interação do job;
Parâmetros Avançados Maxscans - Número de ciclos de leitura do Log Novo ciclo de leitura Maxstrans - Número de transações lidas por ciclo Pollinginterval – tempo em segundos entre cada ciclo de leitura Tempo
Parâmetros Avançados Padrão = = = 500 = 5 Modificado = = = 5000 = 5
Parâmetros Avançados
Configurações Avançadas
Melhores Práticas e Observações 1) Cuidado com o subsistema de I/O. Quando o CDC está habilitado, o Log pode crescer entre 200% e 300%. 3) Mesmo em recovery mode simple e bulk logged ou depois de um backup de log no mode full o log continua a crescer as tabelas de CDC não forem populadas. 4) Não é possível realizar Shrink ou backup de log para reduzí-lo antes de as tabelas de CDC estarem devidademente carregadas. 2) O CDC funciona em todos os recovery modes, porém, não será mais possível realizar operações minimamente logadas.
Melhores Práticas e Observações 5) Se o arquivo de Log estiver cheio não será possível carregar as tabelas de CDC. Nesse caso, a melhor prática é adicionar temporariamente um novo arquivo de Log. 6) Para manter o filegroup primary pequeno e ter uma clara distinção do que são dados do sistema e dados históricos é recomendando habilitar as tabelas de cdc em um file group diferente; 7) O CDC funciona em todos os recovery modes, porém, não será mais possível realizar operações minimamente logadas. 8) Uma boa rotina de Cleanup é recomendada.
Consumindo Dados do CDC através do SSIS - Default CDC Source – Task usada para captura de dados a partir de uma tabela de CDC; CDC Splitter – Task usada para realizar a separação dos registros Deletados, Inseridos e Atualizados. CDC Control Task – Task usada para controle de Range de LSN;
Consumindo Dados do CDC através do SSIS - Default Verifica o tipo de carga Marca o LSN inicial de Carga Executa carga inicial Captura o último LSN para carga incremental Executa carga incremental Marca o LSN final da carga inicial Salva o ultimo LSN para próxima carga CDC Control Task Control Flow
Consumindo Dados do CDC através do SSIS - Default CDC Source CDC Splitter Destino Inseridas Data Flow Destino Atualizadas Destino Deletadas
Configurando ETL Carga Padrão
Consumindo Dados do CDC através do SSIS - Dynamic Captura tabela do ciclo Habilita Trace Flag 610 Desabilita Trace Flag 610 Verifica o tipo de carga Captura as colunas a serem populadas Executa carga inicial Captura as colunas a serem populadas Executa carga incremental
Configurando ETL Carga Dinâmica
Muito obrigado pela presença de todos! Dúvidas?!...
- Linkedin – Arthur Luz Twitter Skype - arthurjosemberg Blog – arthurluz.wordpress.com