mysql查询慢该如何排查并优化

 先执行并分析SQL的执行最耗时的环节:

查询profiling参数值 show variables like 'pro%'; 并设置 set profiling=ON;开启执行SQL的记录:

正常执行SQL select * from test_100000; 这里是你要分析的SQL

查询执行SQL列表 show profiles;

查看SQL执行详细过程 show profile for query 10;

 可以看到花在executing上的时间最长,可以从如下几个方面入手优化:

1、看是否可以建立索引,是否命中索引等,这里讲已经在索引优化好的前提下。

2、看连接数设置大小。  

java一般都用的druid连接池管理数据库连接,mysql的默认最大连接数为151,可以适当调大。

3、适当调大mysql的buffer pool。默认为128MB,根据自己的机器环境大小,可是加大buffer pool

 4、查看缓存命中率,

(1-(Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests))*100% 数值越大代表命中率高,因而查询就会更快,否则就需要看是否可加大buffer pool。

 show status like 'innodb_buffer_pool%';

猜你喜欢

转载自blog.csdn.net/u011207400/article/details/130320123