【问题标题】:Maximum SQL Queries per page [closed]每页的最大 SQL 查询数 [关闭]
【发布时间】:2010-07-29 01:41:14
【问题描述】:

这个问题可能没有明确的答案,所以如果它被认为是主观的,比如说不好,请随时关闭它。

基本上,我正在开发一个相当大的 Web 应用程序 (PHP),它使用 CakePHP。目前它正在开发中,数据库中的某些内容非常复杂,因此需要进行大量查询才能显示页面(大约 7-25 个查询)。

由于这可能是一个大规模的,我想知道最大是多少,也就是说,一个点表示“你可能正在做某事错误并且应该优化”,每页应该执行的 SQL 查询数。我现在设置了一个非常简单的缓存系统,它将单个用户运行的查询减少到大约 5 个持续 15 秒。

运行 25 个查询很多吗?我是否应该暂时停止开发(我有足够的时间)并重构代码,删除不使用的 SQL 查询,并花时间提高这部分的性能?

这可能听起来有点令人困惑,所以继续:对于每个页面运行的查询数量是否存在事实上最大值,而不会影响服务器(即共享托管环境)?

谢谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    最重要的不是数量,而是查询的费用……

    运行 100 SELECT name FROM foo WHERE id = 1 LIMIT 1 将比运行以下 1 个要好得多:

    SELECT *
        FROM foo AS a
        JOIN bar AS b
        JOIN car AS c
        WHERE a.col LIKE '%f%' OR b.col LIKE '%b%' OR c.col LIKE '%b%'
    

    所以不要担心这个数字,除非它是荒谬的(超过 100 很高。几千是荒谬的)......不要忘记你可以启用 MySQL 的查询缓存......所以即使你打了很多每秒的查询,只要没有大量的更新,大部分都会直接缓存结果..

    【讨论】:

      【解决方案2】:

      您的数据库的总点击次数也与页面浏览量成正比。因此,如果每页的页面浏览量 * 查询量超过了数据库的容量,那么您就有问题了。显然,不同站点的流量差异很大,数据库容量也有很大差异,因此确实无法确定一个数字。

      【讨论】:

      • 你所说的“你的数据库的容量”是什么意思,你如何定义或找出这些信息?
      • @Ashley:我的意思是您的数据库执行查询的能力。数据库能够每分钟执行一些平均数量的查询。如果你试图超过这个限制,很可能,事情会开始超时。我不知道是否有明确定义的方法来确定它,但您可以通过在数据库上释放大量流量来自己测试它,看看它可以处理多少。
      【解决方案3】:

      正如递归所提到的,没有幻数。变数太多了。例如您的数据库服务器规格。显然,服务器越好,您可以运行的查询就越多。

      【讨论】:

        【解决方案4】:

        一种可能更简单且几乎同样有效的优化方法是在可能的情况下批量查询。通过这种方式,您可以减少到数据库服务器的往返次数,同时保持现有逻辑(大部分)完好无损。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-31
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 1970-01-01
          • 2014-01-13
          • 2012-01-09
          • 1970-01-01
          相关资源
          最近更新 更多