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%';

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值