2013-12-21 190 views
0

我有一個數據庫表,有300,000行和113.7 MB的大小。我的數據庫在Ubuntu 13.10上運行,擁有8個內核和8GB內存。就目前而言,MySQL服務器平均佔用750%的CPU。和6.5%的MEM(通過在CLI中運行top獲得的結果)。另外需要注意的是,它運行在與Apache2 Web服務器相同的服務器上。MySQL查詢花費太長的時間來加載

這就是我得到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秒的執行,這不是列表中的頂部,而是在中間的某個位置,以便提供有關在此列表中堆疊多少個查詢的視角。我覺得這可能與我的查詢現金配置有關。下面是配置從運行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,但找不到任何能解決我的問題的東西。任何幫助,將不勝感激,謝謝!

+0

也許,你會幸運與這種問題在http://serverfault.com/ –

+1

你有你的表上的索引? –

+0

我也會在那裏發表,謝謝Louis。 是的,我確實有索引。 – Devontrae

回答

0

這可能是http://dba.stackexchange.com之一。這就是說...

  • 爲什麼你的查詢運行緩慢?他們是否會返回一個大的結果集,還是他們真的很複雜?
  • 您是否嘗試過使用EXPLAIN SELECT column FROM ...運行以下查詢之一?
  • 你正確使用索引嗎?
  • 你是如何在my.cnf文件中配置MySQL的?
  • 你使用了哪些表格類型?
  • 您是否收到任何錯誤?

編輯:好的,看看你的查詢例子。 items.thumb的數據類型是什麼? Varchar,Text?使用文字文本匹配以外的其他方法查詢此表是否完全不可能? (例如ID號碼)。此欄是否有索引?

相關問題