加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

炸!业界困难,跨库分页的几种常见方案

发布时间:2019-05-15 01:35:50 所属栏目:建站 来源:58沈剑
导读:为什么必要研究跨库分页? 互联网许多营业都有分页拉取数据的需求,譬喻: 微信动静过多时,拉取第N页动静; 京东下单过多时,拉取第N页订单; 赏识58同城,查察第N页帖子; 这些营业场景对应的动静表,订单表,帖子表分页拉取需求,都有这样一些配合的特点:

步调五:既然获得了time_min在全局的offset,就相等于有了全局视野,按照第二次的功效集,就可以或许获得全局offset 1000 limit 5的记录

炸!业界困难,跨库分页的几种常见方案

第二次查询在各个分库返回的功效集是有序的,又知道了time_min在全局的offset是994,一起排下来,轻易知道全局offset 1000 limit 5的一页记录(上图中黄色记录)。

这种要领的利益是:可以准确的返回营业所需数据,每次返回的数据量都很是小,不会跟着翻页增进数据的返回量。

帅气不帅气!!!

总结

本日先容了办理“跨N库分页”这一困难的四种要领:

要领一:全局视野法

(1)SQL改写,将

  1. order by time offset X limit Y; 

改写成

  1. order by time offset 0 limit X+Y; 

(2)处事层对获得的N*(X+Y)条数据举办内存排序,内存排序后再取偏移量X后的Y笔记录;

这种要领跟着翻页的举办,机能越来越低。

要领二:榨取跳页查询法

(1)用正常的要领取得第一页数据,并获得第一页记录的time_max;

(2)每次翻页,将

  1. order by time offset X limit Y; 

改写成

  1. order by time where time>$time_max limit Y; 

以担保每次只返回一页数据,机能为常量。

要领三:应承恍惚数据法

(1)SQL查询改写,将

  1. order by time offset X limit Y; 

改写成

  1. order by time offset X/N limit Y/N; 

机能很高,但拼接的功效集不精准。

要领四:二次查询法

(1)SQL改写,将

  1. order by time offset X limit Y; 

改写成

  1. order by time offset X/N limit Y; 

(2)多页返回,找到最小值time_min;

(3)between二次查询

  1. order by time between $time_min and $time_i_max; 

(4)配置假造time_min,找到time_min在各个分库的offset,从而获得time_min在全局的offset;

(5)获得了time_min在全局的offset,天然获得了全局的offset X limit Y;

文章较量长,但愿各人有收成。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读