【发布时间】: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 更好?