MySQL 查询执行时间过长

MySQL 查询执行时间过长

我有一个数据库表,有 300,000 行,大小为 113.7 MB。我的数据库在 Ubuntu 13.10 上运行,具有 8 个核心和 8GB RAM。目前,MySQL 服务器平均占用 750% 的 CPU 和 6.5% 的 MEM(在topCLI 中运行获得的结果)。另外要注意的是,它与 Apache2 Web 服务器在同一台服务器上运行。

以下是我在 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 上搜索过了,但找不到任何可以解决我的问题的方法。如能得到任何帮助我将不胜感激,谢谢!

答案1

您的拇指列、父列或自动列上有索引吗?作为规则啊哼经验法则是,您应该对 where 子句中的每一列或每一组列都建立一个索引。

相关内容