Files
kra-new/docs/sw6-to-kra/validation.md
T

7.5 KiB
Raw Blame History

商务迁移验收与性能记录

核验日期:2026-11-04。Java → sw8,Go → sw9。原始响应与备份位于仓库外 D:/Users/Yvan/backups/sw9/20261104_rehearsal/。

迁移与接口

  • SQL v5 在独立 MySQL 5.7 完成 52 项备份检查、24 项迁移检查;首次执行、重复执行、异常账本拒绝、旧表归档后执行均通过。45 个原用户密码哈希逐字节保留。
  • 全量旧契约 63 项:51 项商务接口已实测(33 读取、18 写入/导出);12 项旧框架别名由原生功能承接,不能视为旧协议兼容。
  • 最近完整演练共 230 项检查:104 组读取、两个 Excel 逐单元格、账号创建/编辑/状态、规则增删改/启停、预警状态流转/备注、SDK 绑定/重提/解绑、创建渠道和任务配置。
  • 日报与区服报表真实重建后,68,857 行逻辑数据一致,随后恢复原分区;预警实际任务两边生成 480 条后恢复原 478 条。
  • 恢复后的两库均为用户 48、平台绑定 58、规则 5、预警 478、预警日志 313。增加的 3 个层级账号为获授权保留的测试账号。
  • SDK 写入使用本机独立平台夹具,OA 审批使用受控夹具;没有宣称真实第三方审核或线上支付已验收。

详细旧契约清单保留在 综合索引。本轮新增审查及运行结果见 接口审查。

明确保留的差异

  1. 付费率榜单按用户要求统一 %,变化率为 (本期-上期)/上期×100%,上期为零返回无可比值;不是百分点差。
  2. 仅三个分别创建的测试账号允许创建时刻不同,原迁移用户时间严格比较。
  3. 超出末页时新接口返回空页;旧 MyBatis 会回到第一页。有效页码和总数保持相同。
  4. 新服务立即拒绝停用、待审、驳回用户的已有会话;旧服务未做这项检查。
  5. 本轮修正渠道激活的跨平台同名账号访问:本人已通过绑定的“平台+账号”才有权限。列表及流水明细使用同一规则。
  6. 日期范围只传一端、倒置或非法时返回参数错误;不再静默忽略筛选。

定时任务

7 条实际商务计划及 7 个方法均迁移,cron、秒字段、上海时区、回跑参数与超时/重试配置已经逐条核对。

方法 周期 测试库状态
swReportDayYesterdayTask 每日 01:00 启用
swReportServerDayYesterdayTask 每日 01:05 启用
swReportDayTodayTask 每 5 分钟,第 40 秒 启用
swReportServerDayTodayTask 每 5 分钟 启用
swReportDayBackfillTask 每 60 秒,原配置停用 停用
swReportServerDayBackfillTask 每 60 秒,原配置停用 停用
alertTriggerTask 每 30 分钟 启用

2026-11-04 按用户确认与旧库启停状态同步,五条常规任务开启自动执行,两个历史回填保持停用;框架自带 ClearDB、CleanStaleUploads 继续停用。七条计划的周期、启停、上海时区、下次执行时间及超时/重试参数逐条核对通过,常规任务仍为 60 秒超时。旧工程的演示、分片、MapReduce 示例没有实际商务计划,不属于漏迁。方法超时后仍未退出时禁止重复执行,同分区报表和预警写入有事务锁及去重测试。

启用后的实际复测

中断续接时,昨日两类汇总均有 60 秒超时记录。用户查询改为按平台分组、ID 排序分批,避开 MySQL 5.7 多列 IN 部分批次的全表扫描;新增用户身份和区服活跃覆盖索引,减少大行回表。原始业务字段、统计规则和任务执行参数不变。

版本 202611040014_business_report_build_indexes 已在 sw9 应用,迁移版本总数为 28。两条索引分别为 tab_user.idx_sw_user_report_identity(id,source_db,puid,promote_id,idcard)、tab_user_play_info.idx_sw_play_report_active(play_time,user_id,source_db,promote_id,game_id,server_id)。

复测项 结果
昨日商务汇总,统计日 2026-11-03 最终版本实际执行成功,21.032 秒
昨日区服汇总,统计日 2026-11-03 最终版本实际执行成功,20.243 秒
今日两个汇总 已观察到多轮自动成功执行
预警任务 15:30 自动成功,28.864 秒;两库 480 条业务记录相等,用户 ID 按迁移表映射,排除生成 ID 和创建/更新时间
区服用户资料读取 同批 18,177 用户,71.619 秒降至 0.443 秒,38 批全部使用覆盖索引
区服活跃输入读取 同批 20,564 行,28.545 秒降至 0.074 秒,使用覆盖范围索引

以上为该测试库的单轮实测,包含当时缓存和数据库负载影响,不是固定延迟承诺。Go 全量测试、构建及独立 MySQL 5.7 的六组回归通过;新增回归验证覆盖索引、批量身份读取、索引幂等和同名异列冲突拒绝,既有事务回滚测试通过。

四张表的 2026-11-03 重建结果分别为 3,440、15,064、19,682、30,671 行,合计 68,857 行,逐行及 SHA-256 均与此前保存的旧程序同日重建结果一致。该比较明确复用旧重算基线,本轮没有重跑或覆盖 sw8 的昨日分区。

直接比较两库当前昨日分区仍有差异:sw8 保留此前恢复的旧汇总,日报 8 行指标变化、日报身份键少 10 行,区服汇总 15 行旧结果对应 29 行重建结果、区服身份键少 31 行。不能把重算基线一致表述为两库当前分区一致。2026-11-04 两库四表均为空,sw9 当日注册、登录、成功充值、创角及活跃原始记录均为 0;今日验证覆盖自动触发和空日处理,非空数据核对使用昨日。

原始对比、任务日志和查询计划位于仓库外 D:/Users/Yvan/backups/sw9/20261104_rehearsal/tasks-enabled-20261104_145308/,最终证据为 resumed-verification.json、final-manual-task-logs.json、task-index-installation.json。辅助脚本同样留在仓库外,未恢复项目内已删除的 scripts 目录。最终版本运行于日常 8000 服务,保持五条自动计划启用。

已完成的性能优化

同一 sw9 副本的多轮中位耗时,单位 ms;首次冷读与负载变化会有波动。数据统计近 30 天,排行榜近 7 天。

接口 优化前 优化后
渠道列表 175 108
渠道数据统计 3839 1110
充值明细 216 113
注册明细 139 88
游戏数据 859 453
区服分析 3012 42
渠道排行榜 863 483
商务排行榜 5048 325
游戏排行榜 631 229
工作台汇总 75 42
工作台最低充值榜 1509 171
工作台未登录榜 224 158
工作台近 7 天注册榜 92 74
工作台近 7 天充值榜 147 53

优化包括分页主键后回表、按原渠道预聚合、取消相关子查询、合并汇总查询、限制并发为 2、只加载 TOP10 名称,以及关闭 SQL 日志时避免参数展开。61 组业务列表/排行榜和 52 组工作台数据逐字段相等,另有日常 8080 接口调用检查。

新增版本 202611040013_business_query_indexes 已在 sw9 应用 7 个查询索引,累计 27 个迁移版本;注册转换列索引和区服创角时间索引亦已存在。查询优化不改变用户权限和统计口径。

页面

渠道激活页不再在发起分页请求时清零 total;排行榜与仪表盘四榜并排、付费率用百分比、头部两项偏好直接勾选;三级商务保留商务列表/绑定列表切换。页面检查脚本、运行截图和带业务数据的响应均已保存在仓库外。