Flink CDC 中sqlserver cdc 2.4.0 无锁有什么特殊要求吗?.startupOptions(StartupOptions.initial()) 这样就是无锁的么~我今天试了下·还是会锁的样子。。用的RDS 是开了的 USE db GO EXEC sp_rds_cdc_enable_db GO这个命令
在使用 Flink CDC 中的 SQL Server CDC 2.4.0 版本实现无锁模式时,有一些特殊要求:
1. SQL Server 版本要求 ≥ 2017:无锁 CDC 模式是从 SQL Server 2017 版本开始支持的。
2. 表需要有 store_version
列:Flink CDC 在消费 SQL Server CDC Event 时会根据该列进行增量消费。默认情况下,该列会被自动添加。
3. 设置 CDC 选项 WITH (NO_LOG):在表上启用 SQL Server CDC Services 时,需要设置该选项来开启无锁模式。
如果满足以上条件,Flink CDC 2.4.0 及以上版本将自动支持 SQL Server 的无锁 CDC 模式。
您可以通过启用增量快照(incremental snapshot)功能,并查看相关日志来确认是否成功打开了增量快照功能。在日志中,您可以查看执行的 SQL 语句,确认是否开启了无锁模式。
k CDC 支持的 SQL Server CDC 实际上是基于 SQL Server CDC Services(变更数据捕获服务)实现的。
对于 SQL Server CDC Services,从 SQL Server 2017 版本开始支持了无锁 CDC 模式。
无锁 CDC 模式意味着:
不需要对数据库表做锁定,没有影响数据库写入性能
可以即时捕获数据库表的所有变更,不会错过任何数据
要启用 SQL Server CDC 的无锁模式,需要满足如下条件:
SQL Server 版本要求 ≥ 2017
表需要有列store_version列 (默认添加)
设置CDC选项 WITH (NO_LOG)
Flink CDC 2.4.0 以上版本已经默认支持 SQL Server 的无锁 CDC 模式。
所以有如下要求:
SQL Server 数据库版本要 ≥ 2017
Flink CDC 版本 ≥ 2.4.0(支持 SQL Server 无锁 CDC)
在表上启用 SQL Server CDC Services,设置WITH (NO_LOG)选项
Flink CDC 在消费 SQL Server CDC Event 时,会根据 store_version 列来进行增量消费
如果满足以上条件,Flink CDC 将会自动使用 SQL Server 的无锁 CDC 模式。
开启增量快照,可以在这个日志确认下执行用的sql,确认打开增量快照了,2.4.0版本的话,执行应该是无锁的。 ,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。