1、修改my.cnf文件,后重启mysql
在其中添加如下配置。第一行配置为开启慢查询、第二行为设置慢查询时间为1S。超过1S的都将被记录。第三行指定慢查询日志目录(目录根据自己项目进行修改)
slow_query_log=ON
long_query_time=1
slow_query_log_file=/common/mysql/log/db.slow
2、进行压力测试。
3、查看db.slow 查找慢查询语句
4、可以看到只是进行了查询时间为1S(语句大致如下).(一般慢查询的原因是没有对对应字段添加索引,或者失效,此处为没有对name设置索引)
# Query_time: 1.033440 Lock_time: 0.000059 Rows_sent: 13 Rows_examined: 936623
SET timestamp=1636574499;
select
id, name, rule,
from data
WHERE name = 'imap';
5、连接数据库。(部分数据库只能进行本地访问,请咨询对应开发)新建查询,输入如下explain+mysql 语句。可以看到查询行共计95万行。类型为type。(说明当查询name=imap时进行了全表查询。imap是否有索引???)
explain select
id, name, rule,
from data
WHERE name = 'imap';
6、通过查看表,发现只有一个id主键
使用create index创建name的索引,
create index index_name on 表名(字段名);
7、再次执行explain +sql语句,可以看到查询行数大大减少