在執行一個簡單的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. 執行explain
發現沒毛病,正常走了索引
2. 執行SHOW PROFILES 查出Query_ID后在執行 show profile for query Query_ID ,或者是show processlist,查看查詢所耗時資源
得知查詢到語句耗時主要集中在 sending data上
解決步驟:
1. 查詢資料需要開啟查詢緩存,執行命令查看開啟情況 show variables like '%query_cache%'
改配置文件設置 query_cache_type=YES,后發現查詢速度依然很慢,所以這個方案失效
2. 查看buffer 執行 show variables like 'innodb_buffer_pool%';
可以看出innodb_buffer_pool_size只有8M大小,理論上應該為主機內存的75%-80%,所以我這里先設置成2G
重啟mysql,執行sql后發現查詢毫秒級,問題解決
關於innodb_buffer_pool_size 可以參考博友文章 https://www.cnblogs.com/wanbin/p/9530833.html