SlideShare une entreprise Scribd logo
1  sur  24
Capturando Dados Históricos com
Change Data Capture
Arthur Luz | MCSA & MCT em SQL Server
arthurjosemberg@gmail.com
http://arthurluz.wordpress.com
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 1 Table 2 Table 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 captura:
@maxscans – número de ciclos de leitura do log entre cada pollinginterval;
@maxtrans – número de transações lidas em cada ciclo;
@continuous – habilita a execução continua do job;
@pollinginterval – 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 limpeza:
@retention – quantidade de tempo em segundos de armazenamento dos dados
históricos;
@threshold – 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 – @continuous = 1, @maxscans = 10,
@maxtrans = 500 e @pollinginterval = 5
Modificado – @continuous = 1, @maxscans = 100,
@maxtrans = 5000 e @pollinginterval = 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?!...
Email - arthurjosemberg@gmail.com
Linkedin – Arthur Luz
Twitter - @arthurjosemberg
Skype - arthurjosemberg
Blog – arthurluz.wordpress.com

Contenu connexe

Similaire à 4_horas_microsoft

TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory DatabaseAndre Danelon
 
Aula01 administrador de banco de dados dba
Aula01 administrador de banco de dados  dbaAula01 administrador de banco de dados  dba
Aula01 administrador de banco de dados dbajjuniorlopes
 
2º trabalho de base dados
2º trabalho de base dados2º trabalho de base dados
2º trabalho de base dadosessa
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016Roberto Fonseca
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukHebert Alquimim
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoFabrício Catae
 
O Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfO Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfSergio Tavares Coutinho
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recoveryRodrigo Crespi
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAmós Lhips
 
Como Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealComo Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealDenodo
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 

Similaire à 4_horas_microsoft (20)

TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Aula01 administrador de banco de dados dba
Aula01 administrador de banco de dados  dbaAula01 administrador de banco de dados  dba
Aula01 administrador de banco de dados dba
 
2º trabalho de base dados
2º trabalho de base dados2º trabalho de base dados
2º trabalho de base dados
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
 
Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos Alexandruk
 
Cacti
CactiCacti
Cacti
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
O Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfO Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdf
 
Oracle
OracleOracle
Oracle
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós Lhips
 
Como Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealComo Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo Real
 
Atps sistemas operacionais
Atps sistemas operacionaisAtps sistemas operacionais
Atps sistemas operacionais
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
C # banco de dados
C # banco de dadosC # banco de dados
C # banco de dados
 

Plus de arthurjosemberg

sql_server_2016_history_tables
sql_server_2016_history_tablessql_server_2016_history_tables
sql_server_2016_history_tablesarthurjosemberg
 
carreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhocarreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhoarthurjosemberg
 
por_detras_dos_relatorios
por_detras_dos_relatoriospor_detras_dos_relatorios
por_detras_dos_relatoriosarthurjosemberg
 
realizando_limpeza_de_dados_com_data_quality_services
realizando_limpeza_de_dados_com_data_quality_servicesrealizando_limpeza_de_dados_com_data_quality_services
realizando_limpeza_de_dados_com_data_quality_servicesarthurjosemberg
 
carreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhocarreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhoarthurjosemberg
 
global_azure_bootcamp_2016
global_azure_bootcamp_2016global_azure_bootcamp_2016
global_azure_bootcamp_2016arthurjosemberg
 
desvendando_o_microsoft_datazen
desvendando_o_microsoft_datazendesvendando_o_microsoft_datazen
desvendando_o_microsoft_datazenarthurjosemberg
 
Desvendando o Microsoft Datazen
Desvendando o Microsoft DatazenDesvendando o Microsoft Datazen
Desvendando o Microsoft Datazenarthurjosemberg
 
datazen_inicio_ao_fim_sat_df
datazen_inicio_ao_fim_sat_dfdatazen_inicio_ao_fim_sat_df
datazen_inicio_ao_fim_sat_dfarthurjosemberg
 
datazen_inicio_ao_fim_sat_sp
datazen_inicio_ao_fim_sat_spdatazen_inicio_ao_fim_sat_sp
datazen_inicio_ao_fim_sat_sparthurjosemberg
 

Plus de arthurjosemberg (13)

sql_server_2016_history_tables
sql_server_2016_history_tablessql_server_2016_history_tables
sql_server_2016_history_tables
 
carreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhocarreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalho
 
por_detras_dos_relatorios
por_detras_dos_relatoriospor_detras_dos_relatorios
por_detras_dos_relatorios
 
realizando_limpeza_de_dados_com_data_quality_services
realizando_limpeza_de_dados_com_data_quality_servicesrealizando_limpeza_de_dados_com_data_quality_services
realizando_limpeza_de_dados_com_data_quality_services
 
carreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalhocarreira_certificacoes_mercado_de_trabalho
carreira_certificacoes_mercado_de_trabalho
 
ssrs_2016_sql_day_bahia
ssrs_2016_sql_day_bahiassrs_2016_sql_day_bahia
ssrs_2016_sql_day_bahia
 
global_azure_bootcamp_2016
global_azure_bootcamp_2016global_azure_bootcamp_2016
global_azure_bootcamp_2016
 
ssrs_2016_sat_joinville
ssrs_2016_sat_joinvillessrs_2016_sat_joinville
ssrs_2016_sat_joinville
 
desvendando_o_microsoft_datazen
desvendando_o_microsoft_datazendesvendando_o_microsoft_datazen
desvendando_o_microsoft_datazen
 
Cargas Dinamicas - SSIS
Cargas Dinamicas - SSISCargas Dinamicas - SSIS
Cargas Dinamicas - SSIS
 
Desvendando o Microsoft Datazen
Desvendando o Microsoft DatazenDesvendando o Microsoft Datazen
Desvendando o Microsoft Datazen
 
datazen_inicio_ao_fim_sat_df
datazen_inicio_ao_fim_sat_dfdatazen_inicio_ao_fim_sat_df
datazen_inicio_ao_fim_sat_df
 
datazen_inicio_ao_fim_sat_sp
datazen_inicio_ao_fim_sat_spdatazen_inicio_ao_fim_sat_sp
datazen_inicio_ao_fim_sat_sp
 

4_horas_microsoft

  • 1. Capturando Dados Históricos com Change Data Capture Arthur Luz | MCSA & MCT em SQL Server arthurjosemberg@gmail.com http://arthurluz.wordpress.com
  • 3.
  • 4. 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
  • 5. 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
  • 6. 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.
  • 7. Change Data Capture - Arquitetura Log Table 1 Table 2 Table 3 _CDC 1 _CDC 2 _CDC 3 OLTP OLAP
  • 9. 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 captura: @maxscans – número de ciclos de leitura do log entre cada pollinginterval; @maxtrans – número de transações lidas em cada ciclo; @continuous – habilita a execução continua do job; @pollinginterval – intervalo em segundos entre cada ciclo de leitura de log.
  • 10. 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 limpeza: @retention – quantidade de tempo em segundos de armazenamento dos dados históricos; @threshold – quantidade de registros deletados a cada interação do job;
  • 11. 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
  • 12. Parâmetros Avançados Padrão – @continuous = 1, @maxscans = 10, @maxtrans = 500 e @pollinginterval = 5 Modificado – @continuous = 1, @maxscans = 100, @maxtrans = 5000 e @pollinginterval = 5
  • 15. 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.
  • 16. 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.
  • 17. 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;
  • 18. 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
  • 19. Consumindo Dados do CDC através do SSIS - Default CDC Source CDC Splitter Destino Inseridas Data Flow Destino Atualizadas Destino Deletadas
  • 21. 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
  • 23. Muito obrigado pela presença de todos! Dúvidas?!...
  • 24. Email - arthurjosemberg@gmail.com Linkedin – Arthur Luz Twitter - @arthurjosemberg Skype - arthurjosemberg Blog – arthurluz.wordpress.com