0
点赞
收藏
分享

微信扫一扫

mybatis自定义插件之分表插件(一)设计

影子喵喵喵 2022-04-14 阅读 34

需求

想要做一个自动分表插件,支持分表查询、删除、更新和新增,并且新增时可以动态创建新表

关注点:

1. 插件内部做多线程安全保障。比如,由100个线程要插入数据,此时,数据表已经达到指定数量,那么就需要使得其中一个线程去完成创建新表任务,其它线程阻塞,然后创建完成后,通知其它线程切换为新表表名,这些线程开始运行,将操作定位到新表。

2. 第1点保证了单台机器内的表安全,在集群分布式情况下,还需要保证多态机器之间的同步,需要用到分布式锁。

执行流程设计:

插入逻辑

1. 插入时,需要比对表是否已经达到最大量,比对的方式:
A. 每一次插入之前都select maxid一下,如果count值大于最大值,就建立新表再插入。
缺点:1. 每一次都要select maxid


B. 将每一次的最新maxID放在info表,每次查询info表的maxId进行比对,并且在插入成功后再进行info表最新maxID的更新。
缺点:查之前以及插入之后都会并发查询和更新该表的字段值,效率极具地下,肯定不可取

查询逻辑

 详细路由逻辑

 启动加载元数据逻辑

以上会在后期修改,谨在此记录

举报

相关推荐

0 条评论