




















2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!
Snowflake Openflow Connector for Oracle 是 Snowflake 全新的原生解决方案,可将运营数据直接流式传输到 Snowflake,无需复杂的第三方中间件。然而,数据库管理员(DBA)有时会担心,启用这类变更数据捕获(CDC)管道会破坏其生产环境的稳定性。
为了验证大规模场景下的性能和稳定性,我们使用真实的 TPC-C 工作负载对该连接器进行了压力测试(以 XStream 模式运行),该负载可持续保持约 37,000 笔复杂事务/秒。
Redo 影响:线性增长,而非指数级增长(日志量约增加 47%);
CPU 开销:几乎可以忽略,约为 3%(主要由日志 I/O 驱动,而不是 XStream 进程本身);
吞吐量:除非你的数据库已经在磁盘写入方面受到 I/O 限制,否则对事务延迟没有影响。
对于 Oracle DBA 来说,使用 CDC 有时听起来像是一种威胁。
你的职责非常明确:保护生产 OLTP 系统。你最不愿看到的情况,是某个外部进程激进地争抢 CPU、导致缓冲区缓存抖动,或阻塞日志写入器(LGWR)。当数据工程师请求启用 XStream Out,以便将数据实时摄取到 Snowflake 时,“不行”可能会成为你的默认回答。
我们理解这种怀疑。在 Snowflake,我们将关键任务型 OLTP 源数据库视为至关重要。我们知道,如果作为记录系统的运营系统宕机,下游分析也就无关紧要了。
然而,AI 对近实时数据的需求不会消失。为了弥合数据工程对数据新鲜度的需求与 DBA 对稳定性的需求之间的差距,我们不再猜测,而是开始测量。
我们针对 Oracle XStream Out 运行了高强度工作负载,以确定它在 AWS 中运行的高吞吐量、中等规模系统上的确切“成本”。以下是数据、我们发现的摩擦点,以及能够确保生产环境安全的架构模式。
我们不想测试一个基础的 “Hello World” 场景。我们希望在一个配置适中的数据库上模拟一个真实、嘈杂的企业工作负载,以了解压力点在哪里。
数据库:AWS RDS Oracle 19c Enterprise Edition(db.m6in.16xlarge);
计算:64 个 vCPU,256 GB RAM;
存储:io2 Block Express(200,000 预置 IOPS),用于处理写入密集型工作负载。
工具:HammerDB TPC-C(用于 OLTP 压力测试的行业标准,包含插入、更新和删除操作的混合负载);
规模:100 个仓库,100 个并发虚拟用户;
吞吐量:持续约 37,000 TPS(每秒事务数);
时长:每个场景持续运行 60 分钟。
我们将基线场景(无 CDC)与三种配置进行了比较:
补充日志(仅主键);
补充日志(ALL 列);
启用完整 XStream Capture。
我们用于本次测试的环境是有意设置成“中端”和中等规模的配置。运行在 AWS RDS 服务上为我们的 Openflow Connector 测试提供了一些便利;不过众所周知,在高度虚拟化的基础设施(例如 AWS RDS)中运行数据库,对于高性能工作负载而言并不是最优选择。这也是为什么 AWS 目前正在其数据中心内广泛推出对 Oracle Exadata 和 Autonomous Database 服务的直接支持。
使用 Oracle Exadata,客户通常可以实现超过 100 万 TPS,而 Exadata X11M 能够以惊人的 31 TB/秒扫描数据,并以超过 100 万 IOPS 的速度写入数据。在这些更企业级的系统上运行 XStream 的 DBA,可以预期获得比我们下面展示的结果更好的性能和更优的结果。
Oracle AI Database 和 XStream 并不强制要求启用完整补充日志(LOG DATA (ALL)),但对于 Snowflake Openflow Connector 而言,这会极大简化以完全一致性管理数据的过程,因此我们要求开启该功能。DBA 最常见的担忧是,为 ALL 列启用补充日志会产生 5 倍或 10 倍的日志量。
数据:Redo 使用量并没有出现指数级爆炸;它是线性增长的。该数据来自 HammerDB TPC-C 测试中典型的插入、更新和删除操作混合负载。
基线 Redo:每笔事务约 6.79 KB;
启用 ‘ALL’ 列日志后:每笔事务约 10.96 KB。
这代表日志生成量约增加 47%(约 1.5 倍)。虽然这一增长显著,但它是可确定的。它并不是 FUD(恐惧、不确定性和怀疑)讨论中经常提到的那种难以管理的 500% 激增。此外,在当今监管日益严格的世界中,对于任何受 GDPR、HIPAA 或 SOX 合规政策约束的行业来说,拥有完整、可审计、详细的数据“前镜像”历史记录,都是一个非常好的做法。
容量估算公式:
预计 Redo 量 = 当前量 * 1.5
XStream 本身极其轻量。观察到的总 CPU 开销仅约为 3%(使用率从约 33% 上升到约 36%)。

洞察:这一 CPU 增长的大部分来自数据库引擎写入额外的 Redo 内容(补充日志)。实际的 XStream Capture 后台进程几乎没有增加任何计算负载。
我们的测试将数据库推至约 37,000 TPS。在这一速度下,当 XStream 完全启用时,我们观察到总事务吞吐量下降了 8–9%。
为什么?这一下降与增加的日志量触及存储限制直接相关,而不是因为 XStream 锁定了数据库资源。
基线约束:即使在启用 CDC 之前,我们的测试也已经受 I/O 限制。(这并不罕见,因为与更优的裸金属主机相比,RDS 基础设施的 IOPS 性能通常较差。)我们的 AWR 报告显示,数据库将约 74% 的 DB 时间花在提交和回滚上(具体为 log_file_sync);
好消息:尽管负载很重,每次同步的实际延迟仍然非常优秀,低于 2ms(平均 1.75ms)。磁盘子系统速度很快,只是被数据量压垮了;
CDC 影响:启用 XStream 要求向这条已经饱和的通道写入 47% 更多的数据(补充日志);
结果:写入频率本身使日志写入器达到饱和,导致吞吐量下降约 9%。
战略要点:CDC 的成本主要体现在 I/O,而不是 CPU。如果你的生产数据库已经让 Log Writer(磁盘 I/O)达到饱和,启用补充日志会加剧这一瓶颈。然而,如果你有 I/O 余量,对事务吞吐量的影响将会很小。
基于这些数据,以下是安全启用 Snowflake Oracle Connector 的检查清单:
在启用 CDC 之前,检查当前的 log_file_sync 等待情况。
如果你已经经常看到超过 5–10ms 的等待,请先解决存储 I/O 瓶颈;
CDC 增加的是数据量,而不是延迟——但如果通道已满,数据量就会变成延迟。
传统的 500MB Redo Log 文件将不再够用。
建议:将 Online Redo Log 大小增加到 4GB–8GB;
原因:随着 Redo 量增加 47%,小日志会导致频繁的日志切换(检查点),从而暂停数据库。
不要让 Oracle AI 源数据库通过 Shared Pool 自动管理这一部分。你必须隔离 XStream 内存。
建议:分配一个专用的 STREAMS_POOL_SIZE(我们建议从 2.5 GB 开始);
原因:这相当于一个断路器。如果复制管道变慢,或事务量激增,该池会被填满。当它填满时,XStream 会暂停。它不会占用你的缓冲区缓存。它不会导致实例崩溃。它只会产生延迟。这会优先保障 OLTP 稳定性,而不是复制延迟。
在我们的场景中,我们记录了所有内容,以证明这一点。在生产环境中,你绝不应该运行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS。
建议:仅对正在复制的特定表启用补充日志。Snowflake Openflow Connector for Oracle 要求记录 ALL 列,以完整重构负载内容,但这应当精确应用于范围内的表,而不是整个数据库;
命令:ALTER TABLE schema.table ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS。
请注意,这也可能是你重新审视业务需求和义务的好时机,因为对于关键任务数据表而言,可能还存在其他与合规相关的原因,需要启用额外的补充日志。
你无法管理无法测量的东西。使用以下特定视图,确保 XStream 保持健康,并遵守其资源边界:
V$XSTREAM_CAPTURE:检查 STATE(应为 CAPTURING CHANGES)和 LATENCY_SECONDS。这是你的主要延迟指标;
V$STREAMS_POOL_STATISTICS:监控 TOTAL_MEMORY_ALLOCATED。如果它达到你的 STREAMS_POOL_SIZE 上限,你就知道安全阀正在发挥作用(也能知道复制为何可能暂停);
V$XSTREAM_OUTBOUND_SERVER:确认连接器已连接,且状态为 SENDING CHANGES。
如果你的生产数据库 CPU 长期运行在 80% 以上,或生成很高的 Redo 量(例如每天 1TB 到 20TB+),在主库上运行任何额外进程可能并不适合你。
建议:使用 Downstream Capture 模式;
方式:将你的 Redo Logs 发送到一个辅助的、被动的 Oracle 实例(下游挖掘数据库)。XStream 在那里运行;
结果:生产源库上没有任何 CPU 或内存占用。对生产环境的唯一影响,是传输日志所需的网络带宽;
附带收益:你的下游挖掘数据库只需根据 redo logs 进行规模配置,通常比主数据库小得多;并且该挖掘数据库可以运行最新的 Oracle AI Database 26ai 版本,从而为你的 CDC 客户端提供额外的性能和功能优势;
请注意,在下游捕获模式下,仍然需要按照原始/生产源数据库(应用用户所连接的数据库)的核心数来计算/覆盖许可和定价。
许多数据工程团队希望借助 Snowflake 获得洞察速度。许多运营团队希望借助 Oracle 获得稳定性和原始性能。这些目标并不互相排斥。
本文讨论的场景表明,XStream 是一项成熟、高效的技术。在一个中等规模的 AWS RDS 实例上,XStream 能够处理 37k TPS,且 CPU 开销仅为可以忽略的 3%。相关风险——尤其是 I/O 和日志量方面——是可确定且可管理的。对于使用更优基础设施来运行 Oracle AI 数据库的客户,例如 Exadata,使用基于 XStream 的 CDC 客户端(如 Snowflake Openflow)可以预期获得更好的整体结果。
我们构建 Snowflake Openflow Connector for Oracle,是为了利用这些原生内部机制,并优先考虑架构透明性和运营稳定性。

点击链接立即报名注册:Ascent - Snowflake Platform Training - China,更多 Snowflake 精彩活动请关注专区。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。