300,000 行、113.7 MB のデータベース テーブルがあります。データベースは、8 コア、8 GB RAM の Ubuntu 13.10 で実行しています。現状、MySQL サーバーは平均 750% の CPU と 6.5 % の MEM を使用しています ( top
CLI で実行した結果)。また、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 句の各列または列のグループにインデックスを設定する必要があります。