【问题标题】:MySQL queries - how expensive are they really?MySQL 查询——它们到底有多贵?
【发布时间】:2011-01-29 00:00:20
【问题描述】:

我听说 mysql 查询非常昂贵,您应该不惜一切代价避免使用太多查询。

我正在开发一个可供很多人使用的网站,我想知道:

mysql 查询实际上有多昂贵?如果我的数据库中有 400,000 人,那么查询其中一个人的成本是多少?

我需要多注意不要针对每个客户请求进行太多查询?


编辑:TomTom 的回答再正确不过了。根据对 cme​​ts 中链接的站点的性能测试(以及我通过“每秒 mysql 查询”搜索找到的几个站点),我在很长一段时间内都不会遇到问题 - mysql 每秒可以进行数千次查询使用远程服务器。

【问题讨论】:

    标签: php mysql optimization


    【解决方案1】:

    只要您的查询准确且尽可能高效地编写,mySQL 就能够执行这些操作。

    如果您说有 400,000 个用户,并且您注意到性能问题,那么您应该从这些用户身上赚到足够的钱来升级您的服务器:)

    【讨论】:

      【解决方案2】:

      这取决于

      a) 您的流量水平 b) 你的服务器 c) 你的查询有多昂贵

      例如,根据经验,我不会在一个页面上进行超过 15 个查询。但是我允许至少 6-7 是昂贵的(1-2 连接)。

      我会缓存任何很少更改的内容(例如电影描述)。然后在管理中,当该电影更新时删除该缓存文件。

      但是,我的网站有 80 个查询(过去),并且有 200 多个访问者不断刷新没有问题,但它们都很轻。

      我认为人们不会给出任何真正可靠的规则,或者你应该遵守。

      【讨论】:

      • 谢谢,+1 的数字,这非常令人放心。我每页最多有 8-10 个查询,大多数页面只使用几个查询。我的查询也没有那么昂贵——它们大多是简单的选择和插入(尽管有一个 SUM,我想这有点贵,除了每个页面浏览量仅汇总约 250 行)。
      【解决方案3】:

      忽略它。严重地。如果你需要数据,你就需要数据。确保您的查询合理快速(即适当的索引)。获取适当的服务器来处理负载。使用输出缓存是有意义的,一旦你知道你真正有问题的地方就开始缓存数据。

      【讨论】:

      • 这让人放心,谢谢 :) - 不过有一件事,你能举一个正确索引的例子吗?不完全确定您指的是什么。
      • 如果您总是通过用户名选择用户,那么您应该在用户名列上设置索引。如果您按用户 ID 选择,则在用户 ID 列上设置索引(可能已经有一个主键)。简而言之:在 where 条件中最常出现的列上设置索引,如果使用索引,请始终使用“EXPLAIN SELECT ...”检查。
      • @dbmerlin 啊,是的,我想这就是这个意思。说得通;通用数据库良好做法。 EXPLAIN SELECT 对我来说是新的,看起来很有趣。
      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2016-01-26
      • 2012-02-02
      相关资源
      最近更新 更多