7.5 KiB
商务迁移验收与性能记录
核验日期: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 审批使用受控夹具;没有宣称真实第三方审核或线上支付已验收。
详细旧契约清单保留在 综合索引。本轮新增审查及运行结果见 接口审查。
明确保留的差异
- 付费率榜单按用户要求统一
%,变化率为(本期-上期)/上期×100%,上期为零返回无可比值;不是百分点差。 - 仅三个分别创建的测试账号允许创建时刻不同,原迁移用户时间严格比较。
- 超出末页时新接口返回空页;旧 MyBatis 会回到第一页。有效页码和总数保持相同。
- 新服务立即拒绝停用、待审、驳回用户的已有会话;旧服务未做这项检查。
- 本轮修正渠道激活的跨平台同名账号访问:本人已通过绑定的“平台+账号”才有权限。列表及流水明细使用同一规则。
- 日期范围只传一端、倒置或非法时返回参数错误;不再静默忽略筛选。
定时任务
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;排行榜与仪表盘四榜并排、付费率用百分比、头部两项偏好直接勾选;三级商务保留商务列表/绑定列表切换。页面检查脚本、运行截图和带业务数据的响应均已保存在仓库外。