mysql分库分表的疑问

发布于 2022-09-07 04:17:32 字数 210 浏览 21 评论 0

最近在研究分库分的方案,没什么经验,有疑问向大家请教一下。
比如一个订单表,有字段:下单人id,商品id,店铺id,下单时间等

在做分表时,首先考虑按下单人id做分割,这样买家查询数据会更快,但是卖家一般按店铺或者商品查询订单会不理想,还有客服、管理员等其他场景下的使用更会有这样的问题。

但如果按商品id做分割,买家查询会不理想。所以想向大家请教一下,应该怎么处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清旖 2022-09-14 04:17:32

分库分表是解决查询效率的问题。一点小想法,可不可以这么来理解
1.对查询速度最敏感是用户,优先考虑以用户ID来分割,优化前端用户的查询速度
2.店铺ID和订单ID另建一张冗余表来建立关联
3.订单和商品是多对多关系,可以以商品ID来分表,并建冗余表关联
4.可不可以引入其他技术来实现,比如mongodb、E Search

雪化雨蝶 2022-09-14 04:17:32

我的想法:
1.下单人id就是user_id咯,user表肯定放到主库里面的,而商品表似乎没有想到对应的shard_nodes那我也放到主库中去。
2.我理解的店铺应该是和用户关联的,那就可以用user_id做shard_nodes将其存到分库中区,然后用es做分词.
3.下单既然是和用户有关的行为,那同样用user_id做shard_nodes将其存到放分库中去

那么效果就来了,既然是分库,那肯定不会存在单个shard库中对应表的数据量过于膨胀(比如下单表,如果全存到主库中,假设下单积累量有100w那一次查询就是100w的过滤操作,而如果根据user_id垂直分割,shard_routing到20个分库中,那平均均摊的分库也就5w下单数据量,这查询肯定快很多)

综上,去分库获取对应user_id的用户的下单数据,然后拿着其余字段去商品/店铺等等取数据。
like 图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文