4_horas_microsoft

24
Capturando Dados Históricos com Change Data Capture Arthur Luz | MCSA & MCT em SQL Server [email protected] http://arthurluz.wordpress.com

Upload: arthurjosemberg

Post on 11-Apr-2017

67 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4_horas_microsoft

Capturando Dados Históricos com Change Data Capture

Arthur Luz | MCSA & MCT em SQL [email protected]://arthurluz.wordpress.com

Page 2: 4_horas_microsoft

Patrocinadores

Page 3: 4_horas_microsoft
Page 4: 4_horas_microsoft

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

Page 5: 4_horas_microsoft

AgendaParte 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çõesParte 2 Consumindo os Dados do CDC com SSIS – Default Consumindo os Dados do CDC com SSIS – Dynamic

Page 6: 4_horas_microsoft

Change Data Capture - OverviewFeature 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.

Page 7: 4_horas_microsoft

Change Data Capture - Arquitetura

Log

Table 1 Table 2 Table 3

_CDC 1

_CDC 2

_CDC 3

OLTP

OLAP

Page 8: 4_horas_microsoft

Criando o Change Data Capture

Page 9: 4_horas_microsoft

Parâmetros AvançadosNa 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.

Page 10: 4_horas_microsoft

Parâmetros AvançadosNa 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;

Page 11: 4_horas_microsoft

Parâmetros AvançadosMaxscans - 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

Page 12: 4_horas_microsoft

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

Page 13: 4_horas_microsoft

Parâmetros Avançados

Page 14: 4_horas_microsoft

Configurações

Avançadas

Page 15: 4_horas_microsoft

Melhores Práticas e Observações1) 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.

Page 16: 4_horas_microsoft

Melhores Práticas e Observações5) 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.

Page 17: 4_horas_microsoft

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;

Page 18: 4_horas_microsoft

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

Page 19: 4_horas_microsoft

Consumindo Dados do CDC através do SSIS - Default

CDC Source

CDC Splitter

Destino Inseridas

Data Flow

Destino Atualizadas

Destino Deletadas

Page 20: 4_horas_microsoft

Configurando ETL

Carga Padrão

Page 21: 4_horas_microsoft

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

Page 22: 4_horas_microsoft

Configurando ETL

Carga Dinâmica

Page 23: 4_horas_microsoft

Muito obrigado pela presença de todos!

Dúvidas?!...

Page 24: 4_horas_microsoft

Email - [email protected]

Linkedin – Arthur Luz

Twitter - @arthurjosemberg

Skype - arthurjosemberg

Blog – arthurluz.wordpress.com