先执行并分析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%';