面试问题(水平分库后查询如何排序)
来源:互联网 发布:淘宝客服月总结报告 编辑:程序博客网 时间:2024/06/05 19:59
跨分片的排序分页
一般来讲,分页时需要按照指定字段进行排序。当排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而当排序字段非分片字段的时候,情况就会变得比较复杂了。为了最终结果的准确性,我们需要在不同的分片节点中将数据进行排序并返回,并将不同分片返回的结果集进行汇总和再次排序,最后再返回给用户。如下图所示:
上面图中所描述的只是最简单的一种情况(取第一页数据),看起来对性能的影响并不大。但是,如果想取出第10页数据,情况又将变得复杂很多,如下图所示:
有些读者可能并不太理解,为什么不能像获取第一页数据那样简单处理(排序取出前10条再合并、排序)。其实并不难理解,因为各分片节点中的数据可能是随机的,为了排序的准确性,必须把所有分片节点的前N页数据都排序好后做合并,最后再进行整体的排序。很显然,这样的操作是比较消耗资源的,用户越往后翻页,系统性能将会越差。
阅读全文
0 0
- 面试问题(水平分库后查询如何排序)
- 衡量android开发者水平的面试问题-android学习之旅(91)
- 关于面试问题---模糊查询
- 面试问题如何回答?
- 2015-03-07,海盗问题----google面试第八关水平
- 【面试问题】关于水平居中和垂直居中
- 面试笔试中的排序问题
- 面试中排序算法问题
- 面试中排序算法问题
- 面试常见的排序问题
- 数据库查询问题(2012/8/20 金山面试)
- mysql数据库查询如何排序
- 提高面试水平!
- 分页查询的排序问题
- mysql查询ID排序问题,
- SQL模糊查询排序问题
- SQLlite(WebSQL)如何排序并分页查询(SQLlite语法)
- Java面试(排序)
- 自定义圆环倒计时
- String类型转换的三种方法分析
- 7.9 缓存和广告
- 51nod 1385 凑数字【贪心】
- 相机缩略图
- 面试问题(水平分库后查询如何排序)
- 拦截器与Filter的区别
- Angular4学习笔记(三)- 路由
- HDU 1233 还是畅通工程
- mysql外键的作用
- Flume 三大组件 & 逻辑结构
- 堆之C++实现
- DrawerLayout侧滑的实现
- POJ