按照上线当日时间先后顺序复盘项目出现的问题:
1. 新建表SQL语句中主键id varchar(256)导致索引超长,出现4例这样的情况。受限于一些公司安全条例,主键id统一使用长度为32的varchar,将256改成32继续执行。
2. 再次执行SQL还有一处索引超长的错误,重新查看发现有一个5个字段组成的联合索引,其中一个机构编码字段长度varchar(256),实际长度不超过20,顺便合理调整了其它几个字段长度,继续执行没有问题。
小结:上述两个问题由于测试环境配置innodb_large_prefix启用而生产环境禁用,出现了不一致的情况,本质是建表不规范导致,应该按需建表,按需查询。
3. 数据统计跑批任务执行完没有结果,查询日志发现程序报错,数据违反上述2中的唯一约束,数据统计包含多个维度,唯一约束没有实际业务及优化用途且唯一约束并不唯一,于是drop掉唯一索引,跑批任务正常。
4. 数据变更同步问题失效,原业务方数据变更采用先删除后插入方式,项目使用id主键索引进行关联未关联到数据,导致变更数据处理失效。调整为使用原业务数据索引进行关联,数据变更同步正常。
小结:上述两个问题由于索引脱离实际业务,导致索引多余或索引未能正确关联业务数据,本质是索引创建与使用未考虑周全。