ClaudeCode-快速对大表进行分表重构

背景说明:

  1. 出入库历史mysql单表数据量超5亿,涉及约10张表,急需进行分库分表重构

  2. 基于新核云脚手架代码(core-common)进行重构,内含通用分表代码

  3. 重构策略:

  4. 仅针对仓储层

  5. 设计好每个表的分表策略

  6. 使用claudeCode生成代码

1. 准备

1. 需要重构的PO代码

2. 分表说明和策略的md文件

分表说明:

  • 所有表老id都为数据库自增id
  • 所有表新id都为雪花id
  • 新id的位数远大于老id
  • 新id的起始日期为:配置文件中配置的起始日期

分表策略

  1. InventoryBatchPO.java
    根据id分表,老id每5000000分一张表,新id每10天分一张表
  2. InventoryRecordPO.java
    根据inventory_batch_id分表,每5000000的inventory_batch_id老id分一张表,每10天的inventory_batch_id新id分一张表
  3. InventoryRecordNormalCheckAccountPO.java
    根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表
  4. InventoryRecordSnCheckAccountPO.java
    根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表
  5. InventoryRecordRelationPO.java
    根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表
  6. InventoryRecordOperateLogPO.java
    不分表
  7. InventoryRecordUnitQuantityPO.java
    根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表
  8. InventoryRecordSnPO.java
    根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表
  9. InventoryBatchDeAuditRelationPO.java
    不分表
  10. InventoryBatchInOutRelationPO.java
    根据in_inventory_batch_id分表,老id单独分一张表,每一年的in_inventory_batch_id新id分一张表

放置项目中任意位置

2. 在ClaudeCode中输入提示词

3. ClaudeCode思考并生成代码

0PtHYcFVWz

4. 人工检查生成的代码

1. dao层代码生成完成

2. mapper层代码生成完成

3. repository层代码生成完成

4. 分表规则代码文件生成完成,但存在问题

  1. oldIdThreshold的值是ai自己定义的,并不符合实际情况,且未按要求定义在配置文件中

  2. startTime未按要求定义在配置文件中

5. 自动新建分表table代码文件生成完成,但存在问题

  1. 部分表的获取最大分表id的代码生成错误,下图所示应该是从inventory_batch表中获取最大id值

5. 分析问题

  1. oldIdThreshold值的问题,是因为我未在md中定义

  2. startTime我在md中写的是“配置文件中配置的起始日期”,但实际未在配置文件中定义,可能是需要我讲yaml中的key给明确掉才能准确生成

  3. 自动建表代码中未按我的想法去获取分表id的最大值,这块确实也没在md中说明,但比较细节的点了,这类问题可能还是需要进行二次代码生成优化才行

6. 总结

本篇主要想分享一下ClaudeCode对开发效率的提升

  1. ClaudeCode具备上下文理解能力,可以在项目范围内进行智能编程。

  2. 大量减少研发理解上下文的思考时间

  3. 减少手动编写重复性代码的时间

  4. Claude 可以理解复杂的编程需求并自主完成任务(修改本地文件),

  5. 自主执行批处理命令和脚本(安装本地编译运行环境)

  6. 自主修改本地代码文件

  7. 最理想情况,提示的够全面,那开发仅需要git commit

1 个赞

利用AI工具对业务开发高效赋能,很赞!!!:+1: