前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >被复盘了,mysql索引漫步引发的生产问题

被复盘了,mysql索引漫步引发的生产问题

作者头像
码农小麦
发布2024-06-13 19:26:50
550
发布2024-06-13 19:26:50
先写总结:成事不说,遂事不谏,既往不咎。

按照上线当日时间先后顺序复盘项目出现的问题:

  1. SQL脚本执行失败一次,索引超长问题
  2. SQL脚本执行失败二次,索引超长问题
  3. 违反唯一约束程序报错,唯一索引问题
  4. 使用主键进行数据修复失败,索引业务问题

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主键索引进行关联未关联到数据,导致变更数据处理失效。调整为使用原业务数据索引进行关联,数据变更同步正常。

小结:上述两个问题由于索引脱离实际业务,导致索引多余或索引未能正确关联业务数据,本质是索引创建与使用未考虑周全

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农小麦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档