show innodb status 的实际拓展

本文详细介绍了SHOW INNODB STATUS的输出内容,包括信号量、事务处理、等待统计、死锁信息和事务状态等,帮助读者理解如何从这些信息中获取MySQL性能优化的线索。通过分析等待统计、自旋锁和系统等待,可以识别系统负载热点,优化资源使用。同时,讨论了死锁和外键约束引发的问题,以及缓冲池和内存的使用情况,为数据库性能监控和调整提供了指导。
摘要由CSDN通过智能技术生成

结合这上一篇官方文档的翻译,接下来,我们拿实际的case来讲解。

这个case 可能不是5.6.14的,有些内容可能在真机测试没有相关的关键字(keyword)

摘抄:


这个比较详细!不错

很多人让我来阐述一下 SHOW INNODB STATUS 的输出信息, 了解 SHOW INNODB STATUS 都输出了些什么信息,并且我们能从这些信息中获取什么资讯,得以提高 MySQL 性能。

首先,让我们来了解一下 SHOW INNODB STATUS 输出的基础,它打印了很多关于 InnoDB 内部性能相关的计数器、统计、事务处理信息等。在 MySQL 5 中,InnoDB 的性能统计结果也在 SHOW STATUS 结果中显示了。大部分和 SHOW INNODB STATUS 的其他信息相同,在旧版本中还没有这个功能。

SHOW INNODB STATUS 中的很多统计值都是每秒更新一次的,如果你打算利用这些统计值的话,那么最好统计一段时间内的结果。InnoDB 首先输出以下信息:

1.=====================================

2.060717  3:07:56 INNODB MONITOR OUTPUT

3.=====================================

4.Per second averages calculated from the last 44 seconds

首先要确认这是至少统计了 20-30秒( 这里有44秒)的样本数据。如果平均统计间隔是0或1秒,那么结果就没什么意义了。
说实在的我不喜欢InnoDB提供的平均值,因为很难取得合理的平均间隔统计值,如果你是写脚本来取得 SHOW INNODB STATUS 结果的话,那么最好取得全局的统计结果,然后取得平均值。当然了,直接查看输出的结果信息也是很有用的。


下一部分显示了信号(Semaphores)相关信息:

1.----------

2.SEMAPHORES

3.----------

4.OS WAIT ARRAY INFO: reservation count 13569, signal count 11421

5.--Thread 1152170336 has waited at ./../include/buf0buf.ic line 630 for 0.00 seconds the semaphore:

6.Mutex at 0x2a957858b8 created file buf0buf.c line 517, lock var 0

7.waiters flag 0

8.wait is ending

9.--Thread 1147709792 has waited at ./../include/buf0buf.ic line 630 for 0.00 seconds the semaphore:

10.Mutex at 0x2a957858b8 created file buf0buf.c line 517, lock var 0

11.waiters flag 0

12.wait is ending

13.Mutex spin waits 5672442, rounds 3899888, OS waits 4719

14.RW-shared spins 5920, OS waits 2918; RW-excl spins 3463, OS waits 3163

这段可以分成2个部分。一部分是当前的等待,这部分只是包含了在高并发环境下的全部记录,因此 InnoDB 会频繁回退到系统等待。如果等待是通过自旋锁来解决的话,那么这些信息就就不会显示了。

通过这部分信息,你就会知道系统负载的热点在哪了。不过这需要了解一下源码相关的知识 - 从上面的信息中就可以看出来是哪个源码文件中的哪行(不同的版本结果可能不同),只是从这里却看不出来任何信息。尽管如此,还是可以从文件名中猜到一些东 西 - 比如本例中,文件名 "buf0buf.ic" 预示着和一些缓冲池争夺有关系。如果想了解更多,就去看源码吧。

还有一些关于等待的更多细节。"lock var" 表示当前的 mutex 对象的值(被锁住 = 1 / 释放 = 0) 值,"waiters flag" 表示当前的等待个数。另外,本例中还可以看到等待状态信息 "wait is ending",这表示 mutex 已经释放,但是系统调度线程还正在处理。

第二块是事件统计 - "reservation count" 和 "signal count" 显示了innodb 使用内部同步阵列的活跃程度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值