在執行一個簡單的sql查詢,表中數據量爲14萬
sql語句爲:SELECT id,titile,published_at from spider_36kr_record where is_analyze=0 ORDER BY create_time DESC LIMIT 10;
開始的時候很快,但後面sql語句查詢愈來愈慢 。開始查找問題緣由;
1. 執行explainhtml
發現沒毛病,正常走了索引mysql
2. 執行SHOW PROFILES 查出Query_ID後在執行 show profile for query Query_ID ,或者是show processlist,查看查詢所耗時資源sql
得知查詢到語句耗時主要集中在 sending data上緩存
解決步驟:
1. 查詢資料須要開啓查詢緩存,執行命令查看開啓狀況 show variables like '%query_cache%'ide
改配置文件設置 query_cache_type=YES,後發現查詢速度依然很慢,因此這個方案失效htm
2. 查看buffer 執行 show variables like 'innodb_buffer_pool%';blog
能夠看出innodb_buffer_pool_size只有8M大小,理論上應該爲主機內存的75%-80%,因此我這裏先設置成2G索引
重啓mysql,執行sql後發現查詢毫秒級,問題解決內存
關於innodb_buffer_pool_size 能夠參考博友文章 http://www.javashuo.com/article/p-ptvyxueu-k.htmlssl