EF CORE 操作大表的方案

hanyu0528 2019-08-08 11:33:33
1.数据库里一张表A,可能一月就会产生几千万条数据
2.A表的编号字段(code)规则不统一,有些编号有带日期,有些没有,业务操作上经常会通过A.code查询数据
3.还有其他几张大表和表A有外键关联,存储表A的ID
我用的数据库方案是用ef core来做的,数据库类型为PostgreSql,基于ef core有没什么好的设计方案?
---------------------------------
我的想法
1:对开发调整最小的应该是进行表分区,表分区根据编号(code)范围分区,但是因为编号(code)规则不统一,作为分区字段是否不合适?如果这种表分区就能解决,应该是最优的解决方案
2:如果code无法作为范围分区字段,对于A表按照不同规则分表,这样每张表的格则统一,然后再按照code进行表分区?这样做的话ef core如何设计能更好支持(开发不用过多关注数据到底存在在哪张表,由工厂类或者其他方式处理),而作为其他关联表又如何处理?
3:分库:分库作为后续数据归档时使用,是否暂时先不考虑?
...全文
1538 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
九两白菜粥 2022-04-21
  • 打赏
  • 举报
回复

老哥你的表分区搞定了吗?有demo案例吗?数据库层面需要做什么吗?

大然然 2021-08-24
  • 打赏
  • 举报
回复

code.hashcode() % 3 取模, 或者分10个表 hashcode()最后一位 0-9

刀枪blue 2020-09-10
  • 打赏
  • 举报
回复
你的code没有规则的话很难想象。。。当初设计表的人就是个混子。。。
叫我 Teacher 周 2019-08-16
  • 打赏
  • 举报
回复
这是一个解决方案的问题,和具体使用什么框架技术没有直接的关系了
hanyu0528 2019-08-09
  • 打赏
  • 举报
回复
引用 2 楼 正怒月神 的回复:
你可以按照code的 hashcode来进行索引和分区。 我只能说试试看吧。
嗯,可以考虑下
hanyu0528 2019-08-09
  • 打赏
  • 举报
回复
引用 1 楼 娃都会打酱油了 的回复:
每个月都有千万数据的话,你这个肯定要分表分库了,这个直接靠EF已经不靠谱了,这种我觉得还是改成Dapper进行交互吧,另外索引记得要测试是否一定生效了,如果Code可以确认的话,那可以考虑将Code的Hash结果,然后首字母作为分区标准,当然也可以考虑转成int后取模作为分区标准
改不动了,改动太大了,项目已经上线了,要尽量小的改动
  • 打赏
  • 举报
回复
每个月都有千万数据的话,你这个肯定要分表分库了,这个直接靠EF已经不靠谱了,这种我觉得还是改成Dapper进行交互吧,另外索引记得要测试是否一定生效了,如果Code可以确认的话,那可以考虑将Code的Hash结果,然后首字母作为分区标准,当然也可以考虑转成int后取模作为分区标准
XBodhi. 2019-08-08
  • 打赏
  • 举报
回复
如果可能你对业务进行分区,把读写做分离后在分实例。
XBodhi. 2019-08-08
  • 打赏
  • 举报
回复
hash 分区是个办法。
正怒月神 2019-08-08
  • 打赏
  • 举报
回复
你可以按照code的 hashcode来进行索引和分区。 我只能说试试看吧。

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧