待办已办如何分表?

文章探讨了在待办中心数据量剧增导致查询效率下降的问题,通过分析用户角色、系统差异和分表方案(按用户ID、系统、月/年等),最终选择按用户ID分表以提高查询效率,同时提出利用ES等工具解决审批历史查询的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、背景介绍

待办中心是通用模块,随着待办已办数据,越来越多,查询待办已办的效率急剧下降。

当数据量达到千万级别的时,查询已办耗时达到10s以上,并发情况下,数据库链接得不到释放,造成新请求无法获取链接。

为了解决该问题,需要进行分表,本文比较分表的思路。

2、方案分析

2.1 已办场景分析

  • 个人只关注自己的任务
  • 处理任务的是人
  • 每个流程有多个环节,每个环境的操作人不同
  • 存在多个系统,每个系统的待办数量差异较大

2.2 方案对比

2.2.1 待办分表

方案方案描述优点  缺点  
按照用户角色进行分表

1、分布不均匀

2、用户多个角色的情况下需要跨表

按照系统进行分表可以方便查看一个用户的所有待办

1、分布不均匀

按照月进行分表可以方便查看一个用户1个月的所有待办查看所有待办需要跨月
按照年进行分表可以方便查看一个用户1年的所有待办

1、查看所有待办需要跨年

2、数据量没有得到缩减

综上所述,选择方案3:按照月进行分表。可以默认查看当月、上月的待办,这样固定跨2个表就能拿到大多数待办数据。

2.2.2 已办分表

方案方案描述优点  缺点  
按照用户id进行分表

1、分布比较均匀

2、可以跨任意时间段查询

同一个流程的任务不连续
按照系统进行分表

1、方便按照系统统计数据

2、支持按照流程查看任务

分布不均匀
按照月进行分表1、方便按照年度、月度统计数据

1、不能跨月查询

2、同一个流程的任务不连续

按照年进行分表1、方便按照年度统计数据

1、不能跨年查询

2、数据量没有得到缩减

通过对比,选择方案1:按照用户id分表,可以方便获取用户的所有已办。带来的问题是如果要看审批历史、上一处理人,是需要跨表的。

为了方便,可以使用es等全角搜素能力,或者按照流程id搞个表备份,专门用来查询审批历史。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值