目的
现有系统经过几年的建设,已经有大约200多张表的数据,需要进行检查优化工作
问题统计如下
- 虽然代码使用了微服务,但是数据库没有进行分库
- 项目发展过来经历过几次人员变动,部分功能做了一半就没有人管了,导致预计10%-20%的无用库表
- 由于历史原因,建表中的排序规则、字符集都不统一
- 数据库字段问题,如同名的列名使用了不一样的数据格式,如部分表没有主键等
- 线下业务数据跟线上数据不匹配
- 索引检索并修正,现在有的表的索引已经高达7-10个
- 数据库的变更没有相关记录
- 数据库无实时备份
- 数据库单一,只有mysql
改造分类
| 类型 | 改造方式 | 难度 | 预计时间(含测试) |
|---|---|---|---|
| 分库 | 将现有库表分离 | 高 | 3人月 |
| 去除无用库表 | 将无用库表和代码从系统拆离 | 低 | 5人天 |
| 统一字段格式 | 统一排序、数据格式长度 | 低 | 3人天 |
| 索引排查清理 | 规范索引使用,去除无效索引 | 低 | 5人天 |
| 线下数据跟线上同步 | 将各个表的数据线下线上排查比对 | 高 | 需要线下业务支持 |
| 数据库实时备份 | 使用bin_log完成数据准实时同步 | 低 | 需要停机操作,1人天 |
| 数据库进行版本管理 | 引入版本管理工具 | 低 | 3人天 |
| 慢sql检索优化 | 引入第三方工具进行准实时检查,并进行优化 | 中 | 10人天 |
| 引入其他数据库 | 分析库表少并且业务关联少的数据采用redis存储,大量的单一表数据考虑是用mongodb存储 | 中 | 10人天 |