MySQL面试指南(三)

管理和监控

  • 监控指标的定义和具体的监控方法

监控指标

  • 性能类指标
    1
  • 功能类指标
    2

监控方法

  • 一般可以通过使用方法计算变量得到指标值,达到监控的目的

QPS

  • 查看Com变量
    3
    4

  • MySQL提供了Sum(Com_xxx)方法用于计算,进一步封装得到了Queries变量
    5

  • 再用select计算即可得到QPS
    6

TPS

  • 同样的,事务,即增删改
    7

并发数

  • 还是可以查询变量
    8

连接数

  • 查询:show global status like 'Threads_connected';
    9
  • 如果Threads_connected / max_connections > 0.8,就要报警!

InnoDB缓存命中率

  • 从全局状态计数器查看
    10
    11
  • 以上是性能类指标

可用性

  • 周期性连接数据库并执行select @@version
  • 执行mysqladmin
    12

阻塞

  • 一般是由于前面的线程对资源加了排它锁造成的,后续的线程得不到资源
  • 8.0版本可以使用sys库的视图,查阅相关表得到阻塞信息
  • 制造阻塞:
    13
    14
  • 查询:线程1的update执行完毕,事务还没有结束
    15
  • 它也给出了建议,执行
    mysql> kill 12;	-- 线程2就可以执行了!
    

死锁

  • 两个线程互相锁住了对方的资源,一般是事务引起
  • 一般系统会自动对占用资源较少的线程进行回滚,解除死锁
  • 可以使用show engine innodb status查看
  • 更好的方法是,将死锁信息存入死锁表中,我们在dba数据库:
    19
    20
  • 还有一种方式是记录到错误日志
    21
  • 制造死锁:
    22
    23
    24
  • 如图,一开始各自拿着1和2的id资源,然后,线程1要操作id=2,线程2要操作id=1,死锁,但线程2被强了!
  • 然后我们看两种死锁信息的查看方式:
    • 死锁表中,pt工具:select * from deadlock\G;
      25
    • 错误日志:less mysql-error.log;
      26
  • 还是存表方便!

慢查询

  • 慢查询是很多问题的根源
  • 可以查询information_schema库的processlist表,过滤即可得到信息
    16

主从延迟

  • 如果有异步复制的集群,还需要监控主从延迟
  • 一般可以使用show slave status命令,看这个值:
    17
    • 但这个值计算的是二进制日志中和当前从节点系统时间的差值,有时候不准确!
  • 怎么准确的查看延迟呢?
    17
    • 在主库上建一张表(只含有时间字段),启动两个并发线程(pt工具集),一个周期性的向主库表里写数据,一个在从表中查询(时间比较)
    • 系统时间一致的前提下,写的时间和查到的时间计算差值!如果有大量数据写入形成阻塞等问题,就会出现延迟,也能观测到,正常状态下延迟为0

主从状态

  • 同样还是使用show slave status;
    18
  • 也可以查看Last_Error
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roy_Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值