【问题标题】:MySQL Queries taking too long to loadMySQL 查询加载时间过长
【发布时间】:2013-12-21 00:13:52
【问题描述】:

我有一个数据库表,有 300,000 行和 113.7 MB 大小。我的数据库在具有 8 个内核和 8GB RAM 的 Ubuntu 13.10 上运行。按照现在的情况,MySQL 服务器平均占用了 750% 的 CPU。和 6.5 %MEM(通过在 CLI 中运行 top 获得的结果)。另外需要注意的是,它与 Apache2 Web Server 在同一台服务器上运行。

这是我在 Mem 线上得到的信息: Mem: 8141292k total, 6938244k used, 1203048k free, 211396k buffers

当我跑步时:show processlist; 我得到这样的回报:

2098812 | admin | localhost       | phpb | Query   |   12 | Sending data | SELECT * FROM items WHERE thumb = 'Halloween 2013 Horns/thumbs/Halloween 2013 Horns (Original).png'
2098813 | admin | localhost       | phpb | Query   |   12 | Sending data | SELECT * FROM items WHERE thumb = 'Halloween 2013 Witch Hat/thumbs/Halloween 2013 Witch Hat (Origina
2098814 | admin | localhost       | phpb | Query   |   12 | Sending data | SELECT * FROM items WHERE thumb = 'Halloween 2013 Blouse/thumbs/Halloween 2013 Blouse (Original).png
2098818 | admin | localhost       | phpb | Query   |   11 | Sending data | SELECT * FROM items WHERE parent = 210162 OR auto = 210162    

一些查询的执行时间超过了 10 秒,这不是列表的顶部,而是在中间的某个位置,只是为了让您了解有多少查询在此列表中堆积。我觉得这可能与我的 Query Cash 配置有关。以下是运行 SHOW STATUS LIKE 'Qc%'; 时显示的配置

+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 434      |
| Qcache_free_memory      | 2037880  |
| Qcache_hits             | 62580686 |
| Qcache_inserts          | 10865474 |
| Qcache_lowmem_prunes    | 4157011  |
| Qcache_not_cached       | 3140518  |
| Qcache_queries_in_cache | 1260     |
| Qcache_total_blocks     | 4440     |
+-------------------------+----------+

我发现Qcache_lowmem_prunes好像有点高,这正常吗?

我一直在搜索 StackOverflow,但找不到任何可以解决我的问题的方法。对此的任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 也许,serverfault.com 回答这类问题会更​​幸运
  • 你的表有索引吗?
  • 我也会把它贴在那里,谢谢你,路易斯。是的,我确实有索引。
  • 您是否在表上放置了索引?也许您应该选择其中一些查询并通过 EXPLAIN 检查执行计划。
  • dba.stackexchange.com 会不会比 serverfault 更好?

标签: mysql apache ubuntu


【解决方案1】:

这可能是http://dba.stackexchange.com 的一个。那就是……

  • 为什么您的查询运行缓慢?它们返回的结果集很大,还是真的很复杂?
  • 您是否尝试过使用EXPLAIN SELECT column FROM ... 运行这些查询之一?
  • 您是否正确使用了索引?
  • 您是如何在 my.cnf 文件中配置 MySQL 的?
  • 您使用的是什么表类型?
  • 您是否遇到任何错误?

编辑:好的,看看您的查询示例。 items.thumb 是什么数据类型? Varchar,文本?使用文字文本匹配之外的其他方法查询此表是否根本不可能? (例如身份证号码)。此列是否有索引?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2017-07-12
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多