Flink CDC 做SQL Server → StarRocks 的全量 + 增量同步对源数据库的压力分析

Flink CDC 做 SQL Server → StarRocks 的全量 + 增量同步,对 SQL Server 一定会产生压力
但压力大小取决于:

  1. 表大小(千万级 / 亿级)
  2. 是否高并发业务库
  3. 是否全量快照阶段
  4. CDC 增量日志读取速度
  5. 是否加过滤条件
  6. SQL Server 磁盘性能
  7. 索引设计是否合理
  8. SQL Server 版本(Standard / Enterprise)
  9. Flink 并发度
  10. StarRocks 写入速度是否跟得上

一、先说结论(最真实)

阶段对 SQL Server 压力
全量同步(Snapshot)高压力
增量同步(CDC 日志)中低压力
全量+增量同时运行最高压力

二、最主要的性能压力来源(按重要度排序)

① 磁盘 IO 压力(最大头)

这是最核心的。

SQL Server 数据都在:

  • MDF(数据文件)
  • NDF(辅助数据文件)
  • LDF(事务日志)

Flink CDC 全量时会大量扫表:

SELECT * FROM big_table

这会导致:

顺序读取大量数据页

磁盘持续读取:

8KB 数据页 → Buffer Pool → 网络传输

如果表 500GB:

意味着 SQL Server 要疯狂读磁盘。


结果:

业务 SQL 原本也要读磁盘:

select top 100 ...

结果被 CDC 抢 IO,业务变慢。


举例:

服务器磁盘能力:

1000 IOPS

业务原本占:

400 IOPS

CDC 全量扫表占:

700 IOPS

系统就爆了:

总需求 1100 > 1000

出现:

  • 查询变慢
  • 锁等待
  • CPU 上升
  • 超时

为什么 IO 最大?

因为:

CPU 可以扩展

内存可以缓存

磁盘速度最难提升

尤其机械盘最明显。


三、CPU 压力

全量同步时 SQL Server 要执行查询:

SELECT col1,col2... FROM table

需要:

  • SQL 解析
  • 执行计划
  • 行读取
  • 类型转换
  • 网络封包

如果多并发读取:

8 个并发 snapshot reader

CPU 会升高。


四、Buffer Pool 内存压力

SQL Server 会把读取的数据页放缓存。

CDC 扫全表时:

大量冷数据进入缓存

把业务热点数据挤掉。

导致业务 SQL 原本命中缓存:

99%

变成:

60%

然后业务查询也去磁盘读,雪崩开始。


五、事务日志压力(增量阶段核心)

CDC 增量不是扫表,而是读:

transaction log

SQL Server CDC 本质依赖:

sys.fn_cdc_get_all_changes_xxx

或者读取日志解析。


如果业务写入量大:

每秒 1 万 update

那么:

日志持续增长

LDF 文件暴涨

Log Reader Agent 持续解析日志

Flink 持续消费日志

会带来:

  • 日志磁盘 IO
  • CPU
  • log truncate 延迟

六、网络带宽压力

全量阶段:

SQL Server → Flink

如果 1TB 数据同步:

网络持续跑满:

1Gbps / 10Gbps

会影响:

  • 应用访问数据库
  • 备份传输
  • 远程连接

七、锁竞争压力(很多人忽略)

如果 snapshot 隔离级别没处理好:

SELECT * FROM big_table WITH (TABLOCK)

可能阻塞业务写入。

或者业务更新时,CDC 查询被阻塞。


八、tempdb 压力

如果开启:

snapshot isolation
read committed snapshot

SQL Server 会使用:

tempdb version store

CDC 大查询时 tempdb 压力很明显。


九、最危险的场景(生产常见)


场景1:白天做全量同步

5000 万表,上午 10 点开始同步。

结果:

  • CPU 95%
  • 磁盘 100%
  • ERP 卡死

场景2:日志消费跟不上

StarRocks 写慢。

导致 Flink 积压:

CDC offset 不前进

SQL Server 日志不能清理:

LDF 盘满

数据库挂掉。


场景3:无主键大表

Flink snapshot 会:

select * from big_table order by ??

极慢。


十、如何降低 SQL Server 压力(实战)

方案1:全量放夜间

凌晨 1 点开始

方案2:限制并发

Flink 参数:

scan.incremental.snapshot.chunk.size=5000
parallelism=2

别开 16 并发。


方案3:分批同步

按时间:

where create_time >= '2024'

方案4:只同步必要字段

别:

select *

改:

id,name,status

方案5:给主键/时间字段建索引

否则全表扫描。


方案6:监控 SQL Server

重点看:

CPU
PAGEIOLATCH
WRITELOG
CXPACKET
tempdb
log reuse wait

十一、如果是 SQL Server → StarRocks,谁最耗资源?

在 SQL Server 侧:

全量阶段:磁盘 IO > CPU > 内存 > 网络
增量阶段:日志 IO > CPU > 网络

十二、真实经验值(大概)

数据量压力
100万很小
1000万中等
5000万明显
1亿+
10亿+专项方案

十三、最优实践(推荐)

第一次:
夜间全量 + 开启增量

以后:
只跑增量

新表:
单独补历史数据

十四、如果你是生产库(非常关键)

如果是 ERP / MES / OA / 财务库:

强烈建议:

从库同步(只读副本)

别直接扫主库。


十五、总结一句话

Flink CDC 同步 SQL Server 到 StarRocks,真正压垮 SQL Server 的通常不是 CDC 增量,而是第一次全量快照的大规模磁盘 IO 和缓存挤占。

摘 要 随着互联网影视产业的迅速发展,电影资源呈指数级增长,类型也愈加多样化,但是用户面对如此庞大的影片库时,会遇到信息过载、筛选效率低下、观影决策成本高这些难题,而传统的电影平台大多只是对基本的分类和热度进行展示,并没有提供个性化的推荐服务,社交互动以及一体化管理的能力也比较薄弱。 该系统使用的是Spring Boot+Vue前后端分离的方式进行开发,设计并开发了一个电影推荐和评论系统。开发系统中存在三个问题,即无法准确地判断出用户的喜好、电影推荐功能上线之初没有用户数据,因此推荐效果不佳、大量用户同时评论打分时系统容易出现不稳定的情况。为了克服上述问题,本文查阅相关资料,不断迭代开发原型,并进行实际测试,完成整个系统的全部过程,即系统需求分析、架构设计、功能开发、系统测试。系统分为普通用户和管理员两种身份,具有注册登录、电影浏览、电影推荐、评分评论、影片收藏、个人中心、后台管理等功能,采用结合用户喜好和电影热度的简单推荐方式,提供热门电影推荐和个性化推荐,很好地解决了推荐功能初始没有数据、数据较少的问题。项目用接口来完成前后端的数据交互,使用MySQL数据库存储用户、电影、评论、收藏等各种数据,并且加入权限验证、密码加密等安全措施,保证系统安全稳定并且便于后期扩展。除此之外,系统还增加了电影资讯查看、首页轮播图设置、编辑资讯等功能,使整个电影平台的服务更加全面,使用更加高效。经过全面的功能测试、接口测试和性能测试,系统各个模块运行稳定,推荐接口响应时间小于300ms,主要的互动操作成功率大于98%,可以大大降低用户的选片成本,提高观影决策的速度和社区互动的效果。 本文给出一套轻量级、易部署、可复用的电影推荐类Web应用工程实现方案,相比于传统的单一列表展示型平台,个性化服务、社交互动体验和后台管理效率都有明显的提高,可以给影视文化数字化传播、推荐算法轻量化工程实践
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 在 Excel 中进行阳历与阴历的相互转换,对于处理集体信息(例如通讯录)统计工作具有显著的实用性。本文将具体阐述如何借助 VBA 编辑器在 Excel 环境下完成阳历与阴历的互换转换。首先,需要打开相应的 Excel 文件,通过按 Alt+F11 激活 VBA 编辑器,随后选择插入菜单下的模块选项,将提供的代码片段复制到新模块中,并保存更改后关闭编辑器。完成上述步骤后,即可在指定单元格中调用以下四个函数以达成转换目标。 1. 阴阳历转换功能: 函数 `Lunar(SolarDate[, Part = 0 | 1 | 2 | 3])` 负责将阳历日期转换为对应的阴历日期。参数 `Part` 决定转换内容的详略程度,其值可为 0、1、2 或 3,分别对应完整日期、阴历年、阴历月及阴历日的转换。 函数 `Solar(LunarDate[, LunarMonth = 0 | 1])` 适用于将阴历日期转换为阳历日期。参数 `LunarMonth` 用于指定月份的归属,可为 0 或 1,分别代表转换至阳历月份或保留阴历月份。 2. 生日日期转换功能: 函数 `lunarbirth("1975-5-6")` 能够计算出阴历生日所对应的阳历日期。相对地,函数 `solarbirth("1975-5-6")` 用于推算阳历生日对应的阴历日期。 3. 日期信息计算功能: 函数 `LunarData(q_year)` 提供阴历日期的详细数据,涵盖阴历年、阴历月、阴历日等信息。函数 `ConvDataA` 存储了阴历与阳历的日期数据,包括阴历年、阴历月、阴历日、阳历月、阳历日等字段。 4. 应用...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 在信息技术行业中,特别是在人工智能(AI)的子领域——计算机视觉方面,动作分析是一个至关重要的组成部分。这一议题与“Python-PyTorch动作分析模型库”有着紧密的联系,它涵盖了运用Python编程语言和PyTorch框架来构建和应用深度学习模型,旨在解析和判定视频中的行为。接下来,我们将详细研究这一领域的重要概念。 **PyTorch** 是由Facebook开发的一个开源且功能强大的深度学习平台,它具备动态计算图特性,从而让模型构建和调试过程更加便捷。PyTorch的关键在于Tensor类,该类是数值运算的基础,同时支持自动计算梯度,为神经网络的训练提供了便利。 **动作分析** 是计算机视觉中的一个核心任务,其目的是识别视频中的特定行为,例如奔跑、跳跃、招手等。这项任务通常包括从视频材料中提取图像帧,然后对单个帧或帧序列进行特征提取,最终借助已训练的模型进行分类。 在描述中提及的“流行动作分析模型”,或许涵盖了当前研究领域的主流模型,例如**双流卷积网络**,这种模型融合了空间和时间信息,通过分别处理RGB图像和光流图像来提高行为分析的精确度。还可能包括**时间分割网络(TSN)**,它通过跨长时间范围的样本选择来把握行为的整体特征。另外,更前沿的模型如**时间迁移模块(TSM)** 和 **非局部神经网络** 也可能被纳入其中,这些模型通过创新的网络构造来更有效地捕捉时间序列中的动态变化。 **某类数据集** 可能是指像UCF-101或Kinetics这样的标准动作分析数据集,它们包含了大量标注好的视频片段,用于模型的训练和性能评估。这些数据集在动作分析研究中被...
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 MATLAB深度学习工具箱是为在MATLAB平台中开展深度学习活动而研发的一套功能完备的软件库,其内置了大量的函数和类,使用户能够轻松地建立、训练并实施各类深度学习模型。该工具箱涵盖了神经网络、卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)等多种深度学习体系结构,适用于图像识别、语音识别、自然语言处理等多种应用场景。 1. **神经网络基础**:MATLAB深度学习工具箱能够支持构建和训练基础的前馈神经网络(Feedforward Networks)。这些网络可用于执行简单的分类和回归任务,通过设定层数、节点数、激活函数(如sigmoid、ReLU等)以及优化器(如梯度下降、Adam等)来调整网络构造和性能表现。 2. **卷积神经网络(CNN)**:CNN是图像处理中的核心架构,工具箱提供了构建、训练和应用CNN的功能。用户可以定义不同类型的卷积层、池化层、全连接层,以及借助数据增强技术来提升模型的泛化性能。 3. **循环神经网络(RNN)与LSTM**:RNN及其变体LSTM在序列数据处理中展现出优异的性能,例如文本分析和语音识别。MATLAB深度学习工具箱提供了构建和训练RNN及LSTM网络的接口,允许用户处理变长输入序列,并能捕捉长期的依赖关系。 4. **预训练模型**:工具箱内集成了预训练的深度学习模型,如VGG、ResNet等,可以直接应用于图像分类任务,或者作为迁移学习的基础,通过微调来适应特定任务需求。 5. **自动求梯度**:MATLAB深度学习工具箱支持自动求梯度,这是反向传播算法的关键环节,使得用户无需手动计算梯度,能更...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值