①【项目背景】
稀土大厦一家国企的业务系统做信创迁移,原来是 Oracle 11g,主表 1,200 万行,迁到 openGauss 5.0 之后,一张月度报表从 40 秒变成 6 分 20 秒。厂商说「国产库性能就这样」,业务部门不接受。
我看了执行计划,主表走了全表扫描,谓词上的索引没生效。不是库慢,是统计信息没收集,优化器估出来 12 行,实际 80 万行,选了嵌套循环。
②【咨询设计】
先做兼容性评估:存储过程 380 个,用 CONNECT BY 的 42 个、MERGE INTO 的 67 个、ROWNUM 的 200 多个。openGauss 支持 START WITH CONNECT BY,但层级查询的执行计划差很多,深层次要加物化提示。
改造原则:ROWNUM 改 LIMIT/OFFSET;(+) 外连接改 ANSI JOIN;DBLINK 拆成应用层调用或外部表;序列的 CACHE 从默认 1 调到 100,否则高并发下序列争用能把 CPU 打满。很多人觉得国产库慢是性能问题,实际上是统计信息和执行计划的问题,这两样调好,差距在 10% 以内。
③【施工规划】
数据迁移用 gs_dump/gs_restore 做全量,DataX 做增量。字符集统一 UTF-8,原来 ZHS16GBK 的生僻字要逐个校验,我们抽了 5,000 条含生僻字的记录,发现有 37 条转成了问号,改用手工映射表修。CLOB 字段迁 TEXT,注意 openGauss 的 TEXT 单行上限。
大表按月份做范围分区,分区键用业务日期,每个月一个分区,历史数据冷热分离。ANALYZE 采样率对大表手工指定 30%,默认采样太少,直方图不准。
停机窗口只有 6 小时,迁移分三段:前一晚做全量,当天停业务后做增量追平,最后 40 分钟做校验和切换。增量用时间戳加触发器双保险,触发器只记主键和操作类型,避免大字段拖慢。切换前把应用连接池全部断开,等 30 秒让事务回滚干净,这一步不做,切换后必然出现锁等待。
④【安全补丁】
开行级安全(RLS),按机构代码隔离数据;开审计日志,记录 DDL 和敏感表 DML;三权分立,系统管理员、安全管理员、审计管理员分开,互相制约。传输启 SSL,密码策略 12 位加 90 天更换。
迁移窗口内关掉外网访问,迁移完成后立刻改所有数据库账号密码,包括应用连接串里的。这一条很多人忘,测试库的连接串带着生产密码上线,等于门没锁。
⑤【验收交付】
100 个核心 SQL 做执行计划比对,80 个走索引,剩下 20 个是报表全表聚合,本来就该全扫。报表优化到 52 秒,比 Oracle 慢 30%,在可接受范围。1,200 万行做哈希比对,差异 0 条。
交付改造清单、执行计划对比报告、分区维护脚本,培训 6 名开发和 2 名 DBA。
⑥【售后承诺】
迁移后跑不动、数据对不上、连接池爆,2 小时到场,大年三十 17704868686 也接。SQL 怎么改、统计信息怎么收,终身免费咨询。
【不舍昼夜技术 · 包头IT全生命周期服务】
业务全闭环:咨询规划、方案设计、工程实施、竣工验收、维保售后。
咱能干的:包头修电脑/装监控/拉网线/做系统/救数据/办软件/卖耗材。
技术范畴:5G通信、大数据服务、信息系统集成、网络安全、商用密码、平面设计。
服务区域:昆区、青山区、九原区、东河区、高新区等包头全境,随叫随到。
技术热线:17704868686(本地专业团队,不舍昼夜为您守候!)