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.高并发时段导致等待

在程序和数据库之间加入缓存

上一篇:Git常用命令


下一篇:babel