MySQL中数据库表的监控

本文详细介绍了如何在MySQL中监控数据库表的状态,包括打开表、表锁、锁争抢以及扫描情况,通过分析Handler_read指标来评估索引使用,以帮助优化并发性能和查询效率。
摘要由CSDN通过智能技术生成

 MySQL中数据库表的监控

(1)查看数据库中当前打开了哪些表:show OPEN TABLES ,如图6-1-5所示。另外,还可以通过show OPEN TABLES where In_use > 0过滤出当前已经被锁定的表。

  1. 查看数据库中表的状态:SHOW STATUS LIKE  '%table%',如图6-1-6所示。需要特别注意的是,Table_locks_waited  指的是不能立即获取表级锁而需要等待的次数。如果等待的次数非常大,则说明可能存在锁争抢的情况;如果是频繁的出现锁争抢,则对应用程序的并发性能影响很大。

  1. 查看数据库中锁的信息:SHOW STATUS LIKE '%lock%',如图6-1-7所示。

(4)查看数据库中的表被扫描的情况:show global status like 'handler_read%',如图6-1-8所示。

查询的结果数据也可以用来评估数据库中索引的使用情况。查询的结果数据说明如下所示。

  1. Handler_read_first:从索引中读取第一项的次数。如果该值非常高,表明服务器正在执行大量的全索引扫描。该值一般不宜太高。
  2. Handler_read_key:基于键读取数据行的请求数。该值如果越高,则表明大量的查询都使用了索引;如果越低,表示索引的利用很低。该值一般越高越好。
  3. Handler_read_last:读取索引中最后一个键的请求数。
  4. Handler_read_next:按键顺序读取下一行的请求数。如果查询都走了索引,那么该值将不断递增。
  5. Handler_read_prev:按键顺序读取前一行的请求数(倒序读取数据)。一般用于评估执行ORDER BY … DESC的次数。
  6. Handler_read_rnd:基于固定位置读取数据行的请求数。如果正在执行大量的、需要对查询结果进行排序的查询,则此值很高。如果该值很高,则可能存在很多查询需要进行整表扫描,或者查询时一些表的关联连接没有正确使用主键或者索引。
  7. Handler_read_rnd_deleted:从数据库数据文件中读取被删除记录行的请求数。
  8. Handler_read_rnd_next:从数据库数据文件中读取下一行的请求数。如果SQL语句执行大量表扫描,则此值很高。如果该值很高,一般说明表没有正确添加索引或者SQL语句没有通过索引来查询。

本文节选自《软件性能测试、分析与调优实践之路(第2版)》,获作者和出版社授权发布。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值