SQL Server如何配置cdc進行ETL
企業核心業務系統oltp的資料需要透過ETL同步到資料倉儲,原始的ETL流程透過定製化從SQL Server中進行資料抽取,經過生產環境的監控,發現ETL過程的query會對生產系統造成額外負載。於是制定了透過cdc進行增量資料同步的方案:
方案選型中比對了SQL server的trigger,CT,CDC, temporary table各種方式,選型對比如下:
|
Trigger |
CT |
CDC |
Temporal table |
Sync way |
Synchronous |
Synchronous |
Asynchronous |
Synchronous |
Internal work |
Heavy than index |
Same as index |
Call
|
|
Table part in transaction |
Yes |
Yes |
No |
Yes |
Historical Data retention |
Manual control |
No |
Yes |
Yes
|
透過表格對比可以看到,cdc透過非同步非侵入式進行增量資料捕獲,使用了sp_replcmds,這個過程和sql server的transactional replication中的log reader agent是相同的,缺點就是會對佔用原始database的datafile和logfile,造成資料增長。
在cdc的使用過程中,比較重要的是將cdc資料置於單獨的filegroup內,這樣,在資料管理恢復和效能上會減少對於原始oltp的影響。具體過程如下:
-
在db級別啟用cdc時需要先將db的預設filegroup改成cdc,這樣cdc對應的後設資料資訊,例如經常變化的表cdc.lsn_time_mapping可以存放到單獨的filegroup中
-
對於表的cdc資料使用@fileGroup_Name引數指定filegroup
--enable cdc filegroup
USE DB1
ALTER DATABASE DB1 ADD FILEGROUP CDC
GO
ALTER DATABASE DB1 ADD FILE
(
NAME='CDC',
FILENAME='D:\DATA\DB_CDC1.ndf',
SIZE = 1024MB,
MAXSIZE = unlimited,
FILEGROWTH=256MB
)TO FILEGROUP CDC
GO
USE DB1
GO
ALTER DATABASE DB1 MODIFY FILEGROUP [CDC] DEFAULT
GO
EXEC sys.sp_cdc_enable_db
GO
ALTER DATABASE DB1 MODIFY FILEGROUP [DATA] DEFAULT
go
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo',@source_name = 'T1',@role_name = N'cdc_Admin',@fileGroup_Name = N'CDC'
CDC建立後有capture job和clean job,當cdc的資料增量非常大的時候,需要適當調整job的引數:
EXEC sys.sp_cdc_change_job
@job_type = 'capture'
,@maxtrans = 5000 --每個掃描迴圈可以處理的最多事務數
,@maxscans = 100 --為了從日誌中提取所有行而要執行的最大掃描迴圈次數
,@continuous = 1 --連續執行最多處理(max_trans * max_scans)個事務
,@pollinginterval = 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69950462/viewspace-2661068/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何進行SQL Server容災恢復WISQLServer
- SQL Server進行Crash RecoverySQLServer
- SQL Server 變更資料捕獲(CDC)SQLServer
- SQL Server CDC配合Kafka Connect監聽資料變化SQLServerKafka
- SQL SERVER 2008安全配置SQLServer
- 第三方SQL Server ETL工具推介(下)QJSQLServer
- 第三方SQL Server ETL工具推介(上)RBSQLServer
- sql server如何刪除前1000行資料SQLServer
- ETL工具 etl-engine 能嵌入go語言進行開發的ETL產品Go
- SQLServer對錶進行CDC捕捉報錯SQLServer
- Linux 上配置 SQL Server Always On Availability GroupLinuxSQLServerAI
- 使用ETL進行資料接入的方式
- SQLServer對錶進行CDC捕捉時報錯SQLServer
- 關於SQL Server配置管理器SQLServer
- Windows 系統 SQL Server 配置使用安全模式WindowsSQLServer模式
- 利用SSIS進行SharePoint 列表資料的ETL
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- SQL稽核 | 如何使用 SQLE 進行開發階段 SQL稽核SQL
- 如何對爬蟲程式進行配置爬蟲
- FTP,FTP該如何進行連線,如何配置FTP
- 配置SQL server遠端連線(區域網)SQLServer
- DataGear 變更部署資料庫為SQL Server填坑指南(含轉寫後的SQL server程式碼及SQL server配置檔案)資料庫SQLServer
- SQL Server中使用臨時表進行資料備份與恢復SQLServer
- sql serverSQLServer
- SQL Server 查詢歷史執行的SQL語句SQLServer
- SQL Server 如何合併組內字串SQLServer字串
- SQL Server中的版本號如何理解SQLServer
- SQL Server 2000詳細安裝過程及配置SQLServer
- SQL Server 2005詳細安裝過程及配置SQLServer
- 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)CentOSSQLServer
- 監控 SQL Server 的執行狀況SQLServer
- 如何使用PL/SQL進行分級查詢WPSQL
- airflow 進行後端大資料中ETL處理(草稿)AI後端大資料
- 如何在SQL Server中最佳化TempdbSQLServer
- SQL Server 資料太多如何最佳化SQLServer
- 如何改善SQL Server + SharePoint組合效能BGSQLServer
- Moebius for SQL ServerSQLServer
- sql server 使用SQLServer