化實戰(zhàn)(寶塔環(huán)境))
# MySQL慢查詢日志開啟與SQL優(yōu)化實戰(zhàn)寶塔環(huán)境網站訪問卡頓、接口響應超時很多時候根源在數據庫慢SQL。寶塔環(huán)境下MySQL慢查詢是日常運維高頻排查項下面整理一套實操流程。## 一、開啟慢查詢日志進入寶塔數據庫配置找到my.cnf在[mysqld]段添加配置 ini slow_query_log1slow_query_log_file/www/server/mysql/log/slow.log long_query_time2log_queries_not_using_indexes0參數說明slow_query_log1開啟慢查詢long_query_time2執(zhí)行超過 2 秒的 SQL 記錄日志log_queries_not_using_indexes關閉則不記錄沒有走索引的 SQL避免日志爆炸修改完成后重啟 MySQL 服務生效。二、查看實時慢 SQL查看當前正在執(zhí)行的 SQLshow processlist;如果看到大量 Sleep 或者 Query 狀態(tài)長時間停留就是數據庫阻塞了。分析慢日志自帶工具mysqldumpslow-st /www/server/mysql/log/slow.log-s t 代表按照執(zhí)行時間排序優(yōu)先看耗時最高的語句。三、用 EXPLAIN 分析 SQL 執(zhí)行計劃拿到慢 SQL 之后前面加上 EXPLAIN 查看執(zhí)行計劃EXPLAIN SELECT * FROMtestWHEREid1;重點看 type 字段ref、range 屬于正常ALL 代表全表掃描是最需要優(yōu)化的一般是缺少索引。key 字段顯示當前 SQL 實際命中的索引。四、索引失效常見坑where 條件字段做函數運算隱式類型轉換字符串和數字對比使用 or 連接沒有同時加索引模糊查詢 % 放在前面無法走索引。五、簡單優(yōu)化思路給查詢條件字段建立合適索引不要 select *只查詢需要的字段大表分頁避免 limit 超大偏移頻繁查詢的數據放入 Redis 緩存減少數據庫壓力。小結數據庫慢排查順序show processlist 看實時阻塞開啟慢查詢日志捕獲慢 SQLexplain 分析執(zhí)行計劃補索引、改寫 SQL、增加緩存參考資料文檔記錄lxmrj.com