业界难题-“跨库分页”的四种方案
2017-03-20 11:29
1346 查看
业界难题-“跨库分页”的四种方案
—— 转自微信公众号”架构师之路”,58沈剑
分库可分为“垂直拆分”和“水平拆分”,这篇文章讲的是水平分库后的分页解决方法。
问题的关键在于分页所需的offset和limit是需要全局视野的,水平分库后记录被分散在不同的库中,在单一库下就失去了全局视野。
最显而易见的方法就是就是在单一库下获取全部数据,再在server端整合,这样在server端就拥有了全局视野。该方式也满足业务需求,但不满足性能要求。
“任何脱离业务的架构设计都是耍流氓”,通过业务折衷简化技术方案:
1.可禁止跳页查询,只允许查询下一页。因为下一页的数据依赖于上一页,所以在单一库中就不必在获取全部数据,极大提升性能。
2.利用概率统计特性,进行非精准查询
另一个不错的方法:
3.在某个单库中建立一个全局视野表,该表拥有所有记录的id和排序所需字段,分页查询先查此表,获得需要的id,再分散至各库查询。
—— 转自微信公众号”架构师之路”,58沈剑
分库可分为“垂直拆分”和“水平拆分”,这篇文章讲的是水平分库后的分页解决方法。
问题的关键在于分页所需的offset和limit是需要全局视野的,水平分库后记录被分散在不同的库中,在单一库下就失去了全局视野。
最显而易见的方法就是就是在单一库下获取全部数据,再在server端整合,这样在server端就拥有了全局视野。该方式也满足业务需求,但不满足性能要求。
“任何脱离业务的架构设计都是耍流氓”,通过业务折衷简化技术方案:
1.可禁止跳页查询,只允许查询下一页。因为下一页的数据依赖于上一页,所以在单一库中就不必在获取全部数据,极大提升性能。
2.利用概率统计特性,进行非精准查询
另一个不错的方法:
3.在某个单库中建立一个全局视野表,该表拥有所有记录的id和排序所需字段,分页查询先查此表,获得需要的id,再分散至各库查询。
相关文章推荐
- 业界难题-“跨库分页”的四种方案
- (转)业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- 业界难题-“跨库分页”的四种方案
- “跨库分页”的四种方案
- 微服务架构跨库分页解决的四种方案
- “跨库分页”的四种方案
- “跨库分页”的四种方案
- 跨库分页 的四种方案
- GridView自定义分页的四种存储过程
- 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案
- Android—四种方案解决ScrollView嵌套ListView问题
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案