关于mysql的分库分表
假设有这样的系统:
两种用户类型,一级用户和二级用户,二级用户归属于一级用户,并且是多对多关系,一级用户和二级用户都能购买商品、产生订单。
用户表 users:包含了所有一级用户和二级用户;
一级用户和二级用户关联关系表 user_relation:通过user_id关联;
订单表 orders:一条订单包含 二级用户id(可能没有)、一级用户id。
假设有以下业务:
二级用户分页查看所有订单;
一级用户分页查看所有订单,能看到他自己的订单和归属于他的所有二级用户的订单,并且可能有多种排序规则,比如按订单生成时间排序;
一级用户分页查看所有归属于他的二级用户;
在这种业务场景下,使用什么样的分片规则来水平分表合适。感觉不论采用哪种方法,都无法避免跨库join问题。特别是在分页数越来越大的场景下,性能会急剧下降。