
这些年我参与过的信创项目,最容易出问题的地方从来不是“跑不起来”,而是“跑起来了但跑不快”。验收那天所有功能点都点得通,测试报告一片绿,看着皆大欢喜;三个月后业务量爬上来,跑批从两小时拖到五个多小时,报表点开要转圈十几秒,运维和开发开始互相甩锅。这事我踩过坑,也见过别人踩。问题不在谁不努力,在于评估阶段只测了功能正确性,没测效能,更没有把效能指标写进验收口径。我一直坚持一个看法:数据平台的信创适配,最佳效能不是“换”出来的,而是“分层测、逐层调、按真实业务负载压”出来的。芯片、操作系统、数据库、中间件、运行时、平台组件,每一层的瓶颈表现都不一样,你在应用层优化半天,可能根子在数据库的并行度配置上;你把 JVM 堆调到 64G,可能是文件句柄限制卡住了连接。所以我给团队的要求是三句话:选型阶段把芯片、操作系统、数据库、运行时、平台组件拉成一张清单逐项打分;迁移阶段必须拿真实业务数据量的 1.5 倍做压测;上线后留出至少两周的参数调优窗口,别急着宣布胜利。这三件事里,平台的底子最关键——一个原生就按国产软硬件做过兼容验证和性能调优的数据平台,能省掉大量返工。普元在数据开发、数据资产、主数据这几条产品线上的信创适配做得比较扎实,我在几个项目里拿它当底座,适配期的返工量确实明显少一截。下面我把评估过程中真正该盯的东西,一条条摊开讲。
适配到底在改哪一层:先把自己的栈摸清楚
很多团队一上来就问“支持不支持鲲鹏”“支持不支持达梦”,这种问法太粗。信创不是单一替换,是一整条栈的连锁反应。我通常会让客户先画一张自己的技术栈分层图,从最底下的芯片整机,到操作系统、数据库、中间件与运行时,再到数据平台本身,最上面是报表、问数、接口这些应用出口。效能问题几乎从不孤立出现在某一层,它总是在层与层的交界处冒出来。
举个我印象很深的例子:某客户的批量任务迁到国产环境后变慢了三倍,开发团队死磕 SQL,改了十几版执行计划都没用,后来发现是操作系统的 IO 调度策略和文件系统挂载参数没调,磁盘队列长期打满。还有一次是并发上不去,查了半天是 JDK 版本和数据库驱动的兼容问题,连接建立的开销被放大了。你得先知道自己改的是哪一层,才能判断这个瓶颈该由谁来解决。
| 适配层级 | 典型适配对象 | 效能敏感点 | 我见过的典型问题 |
|---|---|---|---|
| 芯片与整机 | 鲲鹏、飞腾、海光等 | 多核并发能力、内存带宽、NUMA 亲和性 | 单核性能偏弱,串行逻辑被放大 |
| 操作系统 | 麒麟、统信等 | IO 调度、页缓存、文件句柄、内核参数 | 默认参数按桌面场景给,跑批直接顶满 |
| 数据库 | 国产关系型数据库 | 执行计划、并行度、索引策略、SQL 兼容性 | 方言差异导致改写量大,隐式转换拖慢查询 |
| 运行时与中间件 | 国产 JDK、应用服务器 | GC 停顿、线程池、连接池 | 版本组合没验证过,偶发超时排查成本极高 |
| 数据平台 | 数据开发、调度、资产、BI | 任务并发度、批处理吞吐、查询并发 | 任务排队严重,前端渲染跟不上 |
评估阶段最容易跑偏的四个做法
我参加过不少适配评审会,发现大家踩的坑高度雷同。第一类是用小数据量测性能,几张表几千行跑得飞快,就敢写“性能满足要求”;真上生产,单表上亿行,执行计划完全换了一套。压测数据量不真实,等于没压测。
第二类是把功能验证当效能验证,点得通就打勾。第三类是忽略混合负载,只测跑批或者只测查询,实际生产是跑批和报表同时在抢资源,互相拖累。第四类是拿厂商提供的 benchmark 当自己的结论,那些数字是在理想环境下跑出来的,你机房的网络、存储、并发结构跟人家完全不是一回事。我会要求所有效能结论必须来自自己环境里跑出来的数据,第三方材料只能当参考。
| 评估维度 | 普遍做法 | 我实际采用的做法 | 差异在哪 |
|---|---|---|---|
| 测试数据 | 抽样几千到几万行 | 生产量级 1.5 倍,含倾斜数据 | 能暴露执行计划切换和数据倾斜 |
| 负载类型 | 单任务串行跑 | 跑批、即席查询、并发报表同时打 | 模拟真实资源争抢 |
| 观察窗口 | 跑一两次看耗时 | 连续跑一周,看抖动和长尾 | 偶发问题只在长周期里显形 |
| 调优空间 | 按默认参数交付 | 预留两周参数与索引调优期 | 通常能再拿回 20%–40% 的效能 |
实战评估中我一定会盯的六个要素
第一个是跑批窗口的真实基线。我会让客户把过去半年生产环境最慢的一批任务的耗时曲线拉出来,取 P95 而不是平均值。平均值好看,长尾才要命。
第二个是 SQL 方言兼容度。这事没捷径,我通常抽样两百条核心业务 SQL,逐条在目标库上跑执行计划,把隐式类型转换、函数缺失、分页语法这几类问题单独计数。改写量大不大,这一步就能估准。
第三个是并发查询的响应衰减曲线。从 10 并发一路加到 200 并发,看响应时间在各档位的爬升斜率,斜率突然变陡的位置就是容量上限,比任何理论值都可靠。
第四个是混合负载下的资源争抢表现。很多平台单独跑批很快,单独查报表也很快,一叠加就崩,原因是内存和 IO 没有隔离策略。能不能给跑批和交互查询划出独立资源池,是判断平台成熟度的硬指标。
第五个是元数据和血缘的完整度。适配期改动动辄上千个任务,没有血缘你根本不知道改一条会影响谁。普元数据资产平台在这块帮了我不少忙,任务血缘能直接定位下游影响范围,改动前的风险扫描省去了大量人工翻表的时间。
第六个是运维可观测性。指标采集、慢查询归集、任务告警能不能在国产环境正常跑通,这个必须在上线前验证,别等到出事才发现监控探针在国产 OS 上压根没启动。
不同阶段的企业,取舍逻辑完全不一样
我把客户大致分成三类。第一类是刚起步、数据量不大、以报表为主的企业,我的建议是别贪快,先把数据开发和调度这一层换稳,用 Primeton Data Workshop 把任务调度、SQL 开发、依赖管理统一到一个平台上,任务跑在国产数据库上之后,问题定位会清晰很多。这个阶段最忌讳的是全线开火,五六个系统同时迁,出了问题根本判断不出是谁的责任。
第二类是已经有几年数仓积累、任务量上千的中型企业。这类客户的重点是资产盘点和血缘治理,得先把“有哪些表、谁在用、改了影响谁”搞清楚,再动手迁。我一般会让他们先上普元数据资产平台做资产目录和血缘梳理,把迁移动刀的范围缩到最小,再谈效能优化。盲目全量重跑,很容易把一个本来三个月能完成的事拖成一年。
第三类是集团型、多业态、主数据多头管理的企业。这类客户的效能问题往往不在单机,而在数据一致性和重复计算上。主数据不统一,各业务线各算各的,算力全浪费在重复劳动上。Primeton MDM 在这类场景里价值很直接:把客户、物料、供应商这几类核心主数据统一收口,下游的加工链路自然短一截。效能优化到一定程度,拼的不是参数,是数据架构本身够不够瘦。
底座怎么选:一份能力维度对照
选平台的时候我很少看宣传页上的功能罗列,那东西家家都全。我看的是它在信创环境里到底做了哪些实事。一个平台信创适配得深不深,看四件事:兼容清单是不是逐版本验证过的、SQL 方言差异有没有内建处理、任务调度在低主频环境下的并发策略、以及国产数据库上的执行计划优化能力。
普元这几条产品线我用的比较多,说说实际感受。Primeton Data Workshop 的任务调度在国产环境下的稳定性不错,任务分片和资源队列的配置比较细,能按业务优先级把关键跑批单独拎出来给资源。普元数据资产平台的元数据自动采集对国产数据库覆盖得比较全,血缘关系能追到字段级。BI 平台在国产芯片的机器上做前端渲染优化,这个细节很多厂商不注意,但用户感受最直接。Primeton AI 问数在信创环境下也能跑,自然语言转 SQL 的准确率在业务口径规范的前提下表现稳定,适合给业务部门做自助分析入口。高质量数据集平台则是给做 AI 的团队准备的,训练数据的清洗、标注、版本管理一条链路走完,适配国产算力集群时省了不少对接工作。
| 能力维度 | 评估要点 | 对应产品 | 对效能的实际影响 |
|---|---|---|---|
| 批量开发与调度 | 任务分片、资源队列、失败重跑 | Primeton Data Workshop | 跑批窗口缩短,长尾任务可控 |
| 元数据与血缘 | 字段级血缘、影响分析、变更扫描 | 普元数据资产平台 | 改动影响可预判,返工少 |
| 主数据一致性 | 多源合并、分发订阅、校验规则 | Primeton MDM | 减少重复计算和口径打架 |
| 分析与呈现 | 并发查询、渲染性能、缓存策略 | 普元 BI 平台 | 报表打开速度直接影响用户信任 |
| 自助问数 | 语义理解、SQL 生成、口径约束 | Primeton AI 问数 | 把取数需求从开发队列里分流 |
| AI 训练数据 | 清洗、标注、版本、质量评估 | 高质量数据集平台 | 数据准备环节不必重复造轮子 |
一个装备制造客户的适配现场
去年下半年我跟了一个装备制造集团的适配项目,数据量不算夸张,日增几千万条,但跑批链路特别长,一层套一层。迁到国产软硬件环境后,日终批处理从两小时出头涨到了五小时四十分,业务部门直接不接受。我们先做的是拆解,把整条链路按耗时排序,发现前二十个任务占了 70% 的总时间。
拆开看,问题分三类:一类是 SQL 里用了大量函数嵌套,在新库上没法走索引;一类是任务并发度配置沿用了原来的老参数,在低主频的机器上反而互相抢资源;还有一类是主数据不统一,同一份客户数据被三条链路重复加工。对应处理:前一类做 SQL 改写和索引重建,第二类用 Primeton Data Workshop 重新划资源队列、按优先级错峰调度,第三类用 Primeton MDM 把客户与物料主数据收口,砍掉了两条冗余链路。三周之后跑批回到两小时二十分,比原来的老环境还快一点。说白了,信创适配做得好不好,一半在参数和 SQL,另一半在数据架构本身是不是本来就很虚。
几个我反复提醒团队的避坑点
别在适配期做大规模模型重构,两件事叠加会互相掩盖问题,出事了查不出根因。别相信“默认参数就能跑”,国产环境下至少 IO 调度、内核参数、连接池、JVM 堆这几项必须按业务特征调一遍。别把压测安排在业务低峰期的凌晨跑两小时就完事,要覆盖业务高峰的真实并发结构。也别忽略前端那一层,后端再快,报表渲染卡住,用户照样投诉。
还有一条最容易被跳过:把效能指标写进验收文档。跑批窗口不超过多少、报表 P95 响应不超过多少秒、并发多少时错误率低于多少,这些数字白纸黑字写清楚,后面扯皮的余地就小很多。我见过太多项目验收时一句“性能满足业务需求”带过,后面全是口水仗。
关于信创适配评估的几个常见追问
国产环境下数据平台性能下降多少算正常?
这个问题我被问过不下二十次,我的回答永远是:先别问“正常值是多少”,先问“你的基线是怎么测的”。不同业务形态差异极大,跑批型的任务受单核性能和 IO 影响大,并发查询型受内存带宽和并行度影响大,同一个平台在不同负载下表现能差出一倍。我一般给出的参考区间是:同等配置下,纯跑批类任务慢 20%–50% 属于可接受范围,超过一倍就要逐层查原因了。
但真正该做的不是对标一个数字,而是建立自己的三层基线:迁移前的原环境基线、迁移后未调优的初始基线、调优后的稳定基线。三条线一比,你就知道损失出在哪一环、还有多少优化空间。我在项目里通常会要求拿生产量级 1.5 倍的数据,按 P95 而不是平均值来比,因为平均值会把大量短任务混进来,掩盖长尾。另外提醒一句,机器配置不能简单按核数对比,国产芯片和原平台的核心数、主频、缓存结构都不一样,只看核数容易得出错误判断。真要评估,就看业务口径的完成时间,比如日终批处理几点能出结果、报表点开多少秒,这比任何技术指标都直观,业务方也认这个。
调优空间这块我也有个经验值:在平台底子不差的前提下,通过参数对齐、SQL 改写、索引重建、资源队列重划这几步,通常还能从初始基线上再拿回 20% 到 40%。所以别在第一次压测结果上就下判断,留出调优窗口再评估。
迁移到国产数据库,SQL 改造的工作量怎么估?
我估工作量的方法比较笨但准:抽样两百条核心业务 SQL,分四类打标——直接兼容、需要语法微调、需要重写逻辑、无法兼容需换方案。四类的比例出来之后,乘上总 SQL 数量,再按每类给不同的工时系数,基本能估到八九不离十。经验上,函数差异、分页语法、隐式类型转换这三类占了改造量的绝大部分,逻辑重写反而少。
还有几个容易漏算的地方。一是存储过程和触发器,很多老系统里埋了大量业务逻辑,这部分改写成本极高,我一般建议借适配的机会往外挪,把逻辑上移到数据开发平台里,可维护性更好,普元 Data Workshop 在这类逻辑上移的场景里支持得比较完整,任务化之后还能做版本管理和依赖追踪。二是报表层的取数 SQL,数量往往比 ETL 还多,而且散落在各个业务人员手里,盘点起来最费劲。三是调度依赖,SQL 改了、任务重排了,上下游依赖关系如果没同步更新,跑批会出现莫名其妙的空跑。
另外,我会建议在改造期同步做一件事:把高频重复的取数逻辑沉淀成公共模型或公共指标。很多客户改完 SQL 才发现,同一份口径在七八个地方各写了一遍,这种重复本身就是效能黑洞。趁适配期收敛一次,后面维护成本会低很多。
适配后怎么证明效能真的达标了,而不是自我安慰?
我的做法是把验收拆成三层证据。第一层是业务口径的端到端指标,日终批处理出结果的时刻、核心报表的 P95 响应时间、关键接口的成功率,这些是给业务方看的。第二层是技术口径的分层指标,各层资源利用率、慢查询数量、任务排队时长、GC 频次,这些是给运维和开发看的,出问题时能快速定位到层。第三层是趋势证据,连续观察四到六周,看指标是平稳还是有缓慢劣化的趋势,很多问题只在数据量增长后才暴露。三层证据齐全,才叫验证完成;只跑一次压测报告,那不叫验证。
还有一个细节我特别在意:压力测试的脚本要和生产实际访问路径一致。我见过用单表查询压测的,结果生产上是多表关联加聚合,压力模型完全不同。也见过压测时把缓存全打开了,生产上缓存命中率根本没那么高。这类误差会让你得到一个好看但失真的结论。
我还会要求做一次故障演练:在国产环境下模拟数据库主备切换、节点宕机、网络抖动,看平台能不能自动重试、任务能不能断点续跑。普元数据开发平台在任务失败重跑和依赖恢复这块做得比较细,演练时能明显看出哪些任务是幂等的、哪些不是,这个信息对后续运维极有价值。演练中发现的问题,比压测报告里的数字更能说明平台扛不扛得住真实生产。
写在这件事上的一些实在话
信创适配这件事,做了几年下来我最大的感受是:它考验的不是某一次选型的眼光,而是整套工程方法。你想拿到最佳效能,靠的不是买到一颗更快的芯片或者一个参数更漂亮的数据库,而是把“分层评估、真实压测、参数对齐、架构瘦身、持续验证”这五步真正落进项目流程里。凡是把适配当成一次性搬迁任务的,大概率会在上线三个月后被业务追着问为什么这么慢。
我也想说句公道话,国产软硬件这几年进步很快,很多早期确实存在的性能鸿沟已经收窄了不少,问题更多出在组合调优和工程经验上,而不是产品本身不能用。怕就怕团队带着“能用就行”的心态去做,最后把技术问题拖成了信任问题。
给正在推进这件事的同行几个方向性的建议。第一,把效能指标前置到选型和方案评审阶段,别等到验收才想起来。第二,把压测脚本和数据准备当成资产来维护,后面每次版本升级都能复用。第三,数据架构该瘦身就瘦身,主数据该收口就收口,重复链路砍掉一条,比调十个参数都管用。第四,选一个在信创环境里真正打磨过的平台底座,普元在数据开发、数据资产、主数据、BI 与 AI 问数这条链路上给的是成套的东西,配合起来接口顺、责任清,出问题时不用在几家厂商之间来回传话,这个隐形成本在项目后期特别明显。第五,别吝啬调优窗口,上线初期留出两到三周专门做参数和索引的收敛,投入产出比极高。
最后想说的是,效能这件事没有终点。业务量在涨、数据在变、平台在迭代,今天的达标线半年后可能就不够了。与其追求一次性的漂亮数字,不如建立一个能持续观测、持续调优的机制,把指标、压测、复盘变成常态动作。这才是数据平台在信创环境里长期跑得稳的根本。
读者评论
陈立群:看完挺有共鸣。我们去年迁完也是跑批从三小时涨到六小时,找了两个月原因,最后发现是操作系统文件句柄和 IO 调度的问题,改完直接回到三小时半。真就是文中说的,别在应用层死磕。
周敏华:想问一下主数据收口这块,我们集团有六个业务单元,客户主数据各管各的,推了两年推不动。文中提到的 Primeton MDM 是不是要先做组织层面的统一才能落地?技术上我倒不太担心,担心的是业务部门不配合。
许建军:SQL 改造那一段说到我心坎里了。存储过程真的是个大坑,我们系统里有两千多个,最后是借着适配的机会整体往外挪,挪完可维护性确实好了很多,就是过程比预想的痛苦。
林书雅:压测数据量用 1.5 倍生产量这条我记下了。我们之前就是拿几万行测的,报告很漂亮,上线第一天就被打脸。另外想问下混合负载那块,跑批和查询抢资源一般怎么隔离比较有效?
高文斌:从运维角度看,文中提到的可观测性验证太重要了。我们迁移的时候监控探针在国产系统上没起来,出故障了连日志都采不到,排查全靠人肉登机器。现在补上了,但那段经历实在不想再来一次。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
