MySQL慢查詢優化問題-解決辦法

目的

根據發現的問題,找到原因,然後對症下藥

借鑑資料:
沒用過慢查詢日誌,別說自己做過數據庫優化
慢查詢日誌概念
記住七個字搞定索引失效問題

發現問題(主動/被動)

問題點:數據庫查詢過程中速度過慢的SQL語句

主動:數據庫默認情況下slow_query_log的值爲OFF,表示慢查詢日誌是禁用的

mysql> show variables  like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | OFF                                           |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)
 
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.09 sec)
 
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | ON                                            |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)

被動:用戶在使用程序時候告知頁面反應慢

找到原因-對症下藥

原因點:沒有加索引、索引失效、SQL極度複雜、高併發

1.表結構設計時沒有索引導致

2.SQL語句導致索引失效

索引失效7字口訣:
模:模糊查詢LIKE以%開頭
型:數據類型錯誤
數:對索引字段使用內部函數
空:索引列是NULL
運:索引列進行四則運算
最:複合索引不按索引列最左開始查找
快:全表查找預計比索引更快

3.SQL極度複雜10張以上表聯合查詢

優化表結構和程序

4.高併發時段導致等待

在程序和數據庫之間加入緩存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章