Mysql应急调优心得——杀敌一千自损八百

本文分享了MySQL短连接问题及其解决办法,包括如何杀掉空闲线程以及避免连接数过多导致的损失。同时,讨论了慢查询的性能问题,指出索引设计、SQL编写和索引选择可能导致的性能瓶颈,并预告后续文章将深入讲解调优策略。
摘要由CSDN通过智能技术生成

短连接问题

顾名思义,短连接就是一个连接到数据库后,执行很少的 SQL 语句就断开,下次需要的时候再重连。如果使用的是短连接,在业务高峰期的时候,就可能出现连接数突然暴涨的情况。
MySQL 建立连接的过程,成本是很高的。除了正常的网络连接三次握手外,还需要做登录权限判断和获得这个连接的数据读写权限。在数据库压力比较小的时候,这些额外的成本并不明显。但是,一旦数据库处理得慢一些,连接数就会暴涨。而一旦MySQL同时连接的数量超过连接数的最大上限,也就是max_connections这个参数,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。

解决办法:

1.杀掉那些占着连接但不工作的线程

对于那些不需要保持的连接,我们可以通过 kill connection 主动踢掉。这个行为跟事先设置 wait_timeout 的效果是一样的。设置 wait_timeout 参数表示的是,一个线程空闲 wait_timeout 这么多秒之后,就会被 MySQL 直接断开连接。
那么如果主动选择那些,不工作的线程呢。可以通过命令: show processlist 来查看。不过要注意的是,可能会是有损失的。例如有两个线程正在执行,如图所示:

在这里插入图片描述
在上面这个例子里,如果断开 session A 的连接,因为这时候 session A 还没有提交,所以 MySQL 只能按照回滚事务来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值