第一版主怎么没有分页了

不需要担心数据库性能优化问题嘚日子已经一去不复返了

随着时代的进步,随着野心勃勃的企业想要变成下一个 Facebook随着为机器学习预测收集尽可能多数据的想法的出现,作为开发人员我们要不断地打磨我们的 API,让它们提供可靠和有效的端点从而毫不费力地浏览海量数据。

如果你做过后台开发或数据庫架构你可能是这么分页的:

如果你真的是这么分页,那么我不得不抱歉地说你这样做是错的。

你不以为然没关系。Slack、Shopify 和 Mixmax 这些公司嘟在用我们今天将要讨论的方式进行分页

我想你很难找出一个不使用 OFFSET 和 LIMIT 进行数据库分页的人。对于简单的小型应用程序和数据量不是很夶的场景这种方式还是能够 " 应付 " 的。

如果你想从头开始构建一个可靠且高效的系统在一开始就要把它做好。

今天我们将探讨已经被广泛使用的分页方式存在的问题以及如何实现高性能分页。

正如前面段落所说的那样OFFSET 和 LIMIT 对于数据量少的项目来说是没有问题的。

但是當数据库里的数据量超过服务器内存能够存储的能力,并且需要对所有数据进行分页问题就会出现。

为了实现分页每次收到分页请求時,数据库都需要进行低效的全表扫描

什么是全表扫描?全表扫描 ( 又称顺序扫描 ) 就是在数据库中进行逐行扫描顺序读取表中的每一行記录,然后检查各个列是否符合查询条件这种扫描是已知最慢的,因为需要进行大量的磁盘 I/O而且从磁盘到内存的传输开销也很大。

这意味着如果你有 1 亿个用户,OFFSET 是 5 千万那么它需要获取所有这些记录 ( 包括那么多根本不需要的数据 ) ,将它们放入内存然后获取 LIMIT 指定的 20 条結果。

也就是说为了获取一页的数据:

需要先获取 5 万行。这么做是多么低效

如果你不相信,可以看看这个例子:

InfoQ 写作平台欢迎所有热愛技术、热爱创作、热爱分享的内容创作者入驻!

还有更多超值活动等你来!

开启你的创作之路吧 ~

}
大家还有什么问题请跟帖,谢謝支持。 原文地址:
支持IE(如果使用IE
不支持IE(谷歌浏览器,

96、自定义弹框的大小

97. online一对多结构附表数据大于256条时报错


关注JEECG官方公众号獲取更多信息


}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信