mysql优化学习笔记

查processlist、innodb_trx、innodb_locks、innodb_lock_waits。在没有监控工具时,这几个是我经常在 MySQL 数据库检查的表,因为数据库如果慢的话,基本上会在这几个表中留些蛛丝马迹。

processlist 是看当前数据库中的 session 的,并且也会把正在执行的 SQL 列出来,快速刷新几次,就可以看到是不是有 SQL 一直卡在那里。innodb_trx是正在执行的 SQL 事务表,这个表很重要。innodb_locks和innodb_lock_waits是为了看有没有锁等待。

要想查锁,就得先知道当前正在运行的是什么样的事务,所以我们就去查一下 innodb_trx 表,因为 MySQL 在这个表中会记录所有正在执行的事务。

innodb_trx表提供了当前innodb引擎内每个事务的信息(只读事务除外),包括当一个事务启动,事务是否在等待一个锁,以及交易正在执行的语句

通常,我们会通过批量插入数据来优化 insert,所以,就需要调整 bulk_insert_buffer_size 参数(默认是 8M)来实现这一点。因为 bulk_insert_buffer_size 就是在批量插入数据时提高效率的。

bulk_insert_buffer_size是作用于myisam存储引擎的。在insert的时候,会用到临时表,而临时表是在myisam引擎中的,所以这个参数会对insert起到优化作用。

既然有锁等待,那自然要查一下锁关系,看看是什么在等待锁。

MySQL8.0中是支持对select/delete/inster/replace/update语句来分析执行计划

mysql执行计划结果的每个值的含义?

要想看 SQL 慢,就得看 SQL 对应的执行计划(在 MySQL 中,如果执行计划看得不清楚,还可以看 Profile 信息)

栈信息中有很多 getConnection,这明显是 Order 服务在等数据库连接池。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值