当前位置:  开发笔记 > 数据库 > 正文

每页加载20个SQL查询真的被认为很多吗?

如何解决《每页加载20个SQL查询真的被认为很多吗?》经验,为你挑选了4个好方法。

我正在阅读Jeff Atwood关于Behold WordPress,CPU驱逐舰的博客,并看到那里有很多人认为每页加载20个SQL查询很多.现在,对于具有自动建议,自动刷新数据,自定义页面和厨房水槽的高动态页面,每页的平均查询量是多少?

举一个简单的例子,A​​mazon.com几乎可以根据他们认为我会购买的东西来定制我的主页.对我来说,这看起来并不只是对首页使用5个或更少的查询.

我仍然是数据库的新手,所以请告诉我,我是否遗漏了一些明显的东西.



1> Vinko Vrsalo..:

您通常可以将所有数据放在两个或三个大查询中,而不是二十个小查询中.最小化查询量与编写最佳查询以最大化性能一样重要,如果不是最重要的话.

当然,您应该始终分析查询计划,并针对最佳查询,无论是小型还是大型.

问题是,设计糟糕的网页会执行许多查询,每个小任务一个查询,可以轻松地将其分组到一个查询中.

例如,设计糟糕的stackoverflow可以执行查询以获取它将在主页面上显示的所有问题ID,然后对每个问题执行一个查询以获取摘要和投票.然后你有20个无用的查询.设计良好的将执行单个查询,获取有关它将显示的所有问题的所有信息.

当然,这一切的影响都会通过良好的缓存来降低,这是所有大型网站所做的,这样你实际上可以做很多查询并且仍然可以获得不错的性能.


结合大量查询的问题是你需要小心如何组合代码.不要结合不相关的东西,否则你可能会得到难以分开的耦合代码.

2> madlep..:

它更多的是缓存.

如果您获得大量并发页面视图,并且每个页面视图都会执行大量查询,那么每次查看数据库没有多大意义.单.时间.特别是当很多数据返回时,将通过半动态参考数据,这些参数数据时不时地改变(而不是总是在变化的会话或实时数据).

您也可以使用memcached或类似的东西来缓存这些数据库结果.您不一定需要缓存整个页面(尽管这是大多数Wordpress缓存插件所做的),因为这会杀死交互性,但您可以逐个数据地缓存.

还有优化查询的问题.特别是避免了对父记录进行一次查询的可怕N + 1情况,然后为每个子记录进行额外查询.单独来回往返数据库的延迟将会破坏您的页面呈现性能,更不用说引起数据库本身的悲伤了.



3> 小智..:

我在派对上总是迟到,这有点迟了5年......

但对于这个问题的最重要的答案是,查询的数量至少比查询时间要长.

如果具有多个连接和子查询的大型查询需要20秒才能执行,那么(我认为)20个小查询总共需要0.2秒才能更好.

我发现管理较小的查询更容易,主要是因为我缓存每个查询,我可以一次又一次地重复使用来自该查询的数据.....



4> Darian Mille..:

答案实际上取决于以下几个关键因素: - 您网站的流量 - 支持的IT预算 - 网站的复杂性和优化所需的资源

如果你的网站每天都有一些点击,那么谁会关心20个查询.另一方面,如果您是亚马逊,那么您将以较大的基础设施成本提供所需的内容.

几乎世界上其他所有人都介于这两个极端之间,并且必须根据自己的资源进行平衡.

我要说的另一件事就是缓存是你的朋友.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有