【问题标题】:MySQL query to reduce server loadMySQL查询以减少服务器负载
【发布时间】:2011-03-18 11:21:03
【问题描述】:

我有一个 MySQL 服务器正在运行,它将通过 php 前端定期查询。我有点担心服务器负载,因为会有相当多的人访问该网页,每个会话都会定期查询数据库。查询的结果,本质上网页对于所有用户来说都是一样的。

有没有办法查询一次数据库,并将数据/结果输出到网页,所有用户都可以从该网页连接和查看?基本上是为所有连接到网页的用户运行查询,而不是每个用户查询数据库。

任何建议表示赞赏。

谢谢

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您不必担心。
    用于此的数据库。

    世界上大多数站点的运行方式完全相同:MySQL 服务器运行,将通过 php 前端定期查询。没什么不好的。

    经过良好调整的 SQL 服务器和设计合理的查询将提供比您想象的更多的服务。 您将需要非常高的流量才能开始担心这些事情。
    不要忘记 MySQL 有它自己的查询缓存

    另外请注意,没有用户“连接”到该网页。他们连接,获取页面内容并断开连接。

    【讨论】:

    • 不是在这种情况下,当页面在用户屏幕上打开时,数据会定期刷新。与 ajax 类似,但目前它有点像 javascript。
    • @steve 他们仍然没有连接。您目前是否遇到服务器负载问题?
    • 每分钟可能处理大约 200 个查询。你怎么看?
    • @steve 优化了查询,从每分钟 600 个查询开始,您可能会开始担心。但是,对于您的任务,似乎可以实施 COMET。 en.wikipedia.org/wiki/Comet_%28programming%29
    【解决方案2】:

    您应该尝试一下服务器。如果服务器超载, 您可以随时尝试 Memcached 工具。它可以通过 PHP 或 MySQL 直接使用。它将使您免于使用类似查询查询数据库服务器,即服务器上的负载将大大减少。

    【讨论】:

      【解决方案3】:

      如果网页对所有用户都一样,为什么还需要 MySQL 后端?

      我认为最好的解决方案是让一个独立的脚本定期运行(例如,作为一个 cron),它会为您的网页生成静态 HTML。这样一来,用户就无需查询数据库,因为他们最终会得到完全相同的页面。

      【讨论】:

      • 因为结果有效地基于时间并且从定期变化的数据库中提取数据。我喜欢cron的想法,我会研究一下。干杯。
      【解决方案4】:

      如果它是一个带有连接的大型查询,您可以在 mysql 中使用查询的数据创建一个视图并查询该视图,并在数据更改时更新该视图。

      【讨论】:

      • MySQL中的views不包含查询的结果,只包含查询的定义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多