业务场景
有一张一亿数据量的订单表按照ID哈希分片存储在N台mysql节点中,按照某一字段排序后将分页结果返回给前端
分库分表所带来的查询问题
性能问题
精度问题
跨库跨表的join操作
order...答案是精度缺失问题,例如我分表,表一中的time为1, 3, 4, 5,表二中的time为2,2,3,4,6,7,如果取limt 1, 3的话那么表一和表二中的数据取完之后再汇总结果为3,4,5,2,3,4...select * from order order by time limit x + y;
可以看到将limit的查询条件进行修改后,查询到数据更过,我们从表一表二查询到的结果汇总结果为,1,3,4,5,2,2,3,4...找到需要补全的数据之后我们需要将原来分片查找的数据最小值去掉,加上我们补全中的值,不然会数据重复,将补全的数据和去掉原最小值之后的数据汇总排序后为1,1,2,2,2,2,3,4,5,6, 再取1-4则为...,后面再在每个库或表中查找id是否在这个结果集中,在就添加,再将查询到的数据同一汇总再在服务端统计整合所有结果,再返回分页数据
PS:其他问题的解决方案待做...插个眼,凑齐10个赞立马出如何优雅的分库分表