mysql性能问题的临时解决方案

mysql遇到性能问题,当然是优先恢复业务,这里分析几个场景。

短连接风暴

max_connections参数表示数据库支持的最大的链接数,超过这个数量会抛异常“too many connections”.

当mysql负载比较大的时候,每个链接的处理时间也比较长,极有可能出现“too many connections”,通过增加max_connections来解决这个场景不是好主意,因为mysql负载已经很大了

解决办法是

  • kill掉空闲链接
  • 跳过权限验证,减少链接时候的消耗。方式时通过-skip-grant-tables参数重启数据库。

show processlist查看所有链接。
max_connections表示的是所有的链接,但是有些链接并没有处于running状态,可以kill掉

优先kill不在事务里的链接,损失小

慢查询

慢查询的原因有三种

  • 索引没有设计好。直接alter table加索引。
  • sql语句没写好。mysql5.7提供query_rewrite,可以在线替换sql。
  • mysql没有选对索引。用query_rewrite给sql加上force index

QPS暴增

由于业务暴增或者业务bug导致qps暴增
DBA可以做这样几件事

  • 如果有应用白名单,直接去掉这个应用
  • 如果有业务账号分离,把这个应用所使用的账号删掉
  • 用query_rewrite功能止血

你可能感兴趣的:(mysql)