InnoDB监视器提供有关InnoDB内部状态的信息。 这些信息对于性能调优非常有用。其实所谓的监视器,就是 show engine innodb status 命令。

InnoDB监视器类型

有两种类型的InnoDB监视器:

1. 标准InnoDB监视器(The standard InnoDB Monitor)显示以下类型的信息:

  • 每个活动事务持有的表和记录锁
  • 事务的锁等待
  • 线程的信号量等待
  • 待处理文件的I/O请求 (Pending file I/O requests)
  • 缓冲池统计信息 (Buffer pool statistics)
  • InnoDB 主线程的 purge buffer 和 insert buffer 归并活动(merge activity)

2. InnoDB锁定监视器(The InnoDB Lock Monitor)将额外的锁信息作为标准InnoDB监视器输出的一部分进行打印。

开启 InnoDB Monitor

开启  standard InnoDB Monitor (需要PROCESS权限)

> set GLOBAL innodb_status_output=ON;

上面的语句可定期写入到标准错误输出(stderr,即error log,大概每15s写一次),你也可以使用 SHOW ENGINE INNODB STATUS 语句直接在客户端获取innodb信息。

而开启 InnoDB Lock Monitor 需要同时打开以下2个参数,它的信息也是随 InnoDB Standard Monitor 的信息一起打印出来:

> set GLOBAL innodb_status_output=ON;
> set GLOBAL innodb_status_output_locks=ON;

InnoDB 标准监视器和锁监视器的输出信息

锁监视器与标准监视器基本相同,只是它包含了附加的锁信息(lock information)。

CREATE TABLE 句法只不过是为了通过 MySQL SQL 语法分析而提供给 InnoDB 引擎命令的一种方式:那个被创建的表根本与 InnoDB Monitor 无任何关系。如果你在监视器运行着的状态下关闭数据库,并且你需要再次启动监视器, 那么你不得不在发出一个新的 CREATE TABLE 来启动监视器之前先移除(drop)这个表。
 
与之相类似的,你可以启动 innodb_lock_monitor ,它在某些方面与 innodb_monitor 一致,但是它会显示更多的锁定信息。一个单独的 innodb_tablespace_monitor 将显示在现有表空间内所建立的文件段列表以及可以分配数据结构的有效表空间。从 3.23.44 开始,提供了 innodb_table_monitor ,通过它可以获得 InnoDB 内部数据字典的信息。

输出信息的某些注意点:
如果 TRANSACTIONS 部分报告锁定等待(lock waits),那么你的应用程序可能有锁争用(lock contention)。输出信息可以帮助跟踪事务死锁的原因。
SEMAPHORES 部分报告线程等待信号量以及统计出线程需要旋转(spin)或等待(wait)一个互斥(mutex)或 rw-lock 信号量的次数。一个较大的线程等待信号量的次数可能是由于磁盘 I/O 引起,或 InnoDB 内部的争用问题(contention problems)。争用(Contention)可能是由于比较繁重的并发性查询,或操作系统的线程调度的问题。 在这种情形下,可将 innodb_thread_concurrency 设置地小于默认的 8 。
FILE I/O 部分列出了文件 I/O 的等待请求。过大的值就意味着磁盘 I/O 瓶颈。
BUFFER POOL AND MEMORY 部分给出了页面读写的统计。通过这些值可以计算出你的查询通常所需的数据文件 I/O 量。

转载于:https://www.cnblogs.com/wsxnihao/p/11613643.html

InnoDB Monitors相关推荐

  1. MySQL InnoDB锁

    2019独角兽企业重金招聘Python工程师标准>>> InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许 ...

  2. mysql 存储过程 百万数据 innodb_详解mysql数据库一键查看锁信息(开启InnoDB监控)...

    概述 很多时候在mysql处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信息,包括:锁个数.锁类型等. ...

  3. mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)

    1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过in ...

  4. mysql l查看历史等锁信息_查看锁信息(开启InnoDB监控)

    一.背景 在mysql处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信息,包括:锁个数.锁类型等. 于是 ...

  5. 15.2. InnoDB存储引擎

    原贴:http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/storage-engines.html#innodb-overview 15.2.  ...

  6. 第15章:存储引擎和表类型#innodb的性能调整

    原贴:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-tuning 第15章:存储引擎和表类型 目录 15.1. ...

  7. Mysql InnoDB引擎的行锁和表锁

    InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...

  8. (DBA之路【五】)关于锁的故事

    首先很抱歉:这篇文章我其实整合了很多别人的文章,但是因为太多,一开始被没留意出处所以很难声明来源,很抱歉,但是这篇文章只用来作为学习笔记,作为新手,我以后会注意的. (一):什么是锁: 我觉得锁这个东 ...

  9. MySQL中的锁(表锁、行锁)

    锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...

最新文章

  1. signature=a8a3e788013f73439051c7287d7f5f0b,来用百度密语吧!!!
  2. spring中Validation设计与实现
  3. 学了这些技术就能轻松找到一份待遇不错的岗位
  4. html编辑器linux,HTML 编辑器
  5. usb升级linux固件,Linux USB驱动(4)---CY68013固件加载驱动
  6. 垃圾回收算法_Java 垃圾回收算法与几种垃圾回收器
  7. Cocos2d-x游戏实例-《跑跑跑》制作教程(第二篇)——加入主角
  8. GeoTools操作Shape格式文件
  9. 接口测试用例设计(详细干货)
  10. php分享网ecshop二次开发视频教程,ecshop二次开发--视频上传
  11. oracle查询所有去掉重复的数据库,ORACLE数据库查询删除重复记录的三种方法
  12. 数字图像处理基础笔记
  13. 梦工厂将在红帽峰会畅谈云计算心得
  14. WPF中Tooltip使用技巧总结
  15. 数字货币或将消灭银行 未来3至5年,银行业可能将崩溃?
  16. Linux、Windows都适用的跨国传输、大文件传输软件:飞驰传输
  17. 实现动态表单功能设计思路
  18. Flutter 学习
  19. 脚手架vue-cli系列一:安装与规范
  20. 用计算机打山有木兮,山有木兮 - 在线打字测试(dazi.kukuw.com)

热门文章

  1. 解析C/C++的预处理指令
  2. 管道、通道、管程的区别
  3. XAMPP的安装与使用
  4. BugkuCTF-Misc:隐写2
  5. JAVA的三种常量池
  6. C语言再学习 -- 运算符与表达式
  7. c语言如何发现错误在哪里,二个C语言例子,编译没通过.不知道错在哪里[求助]
  8. 【译】Easily Build Android APKs on Device in Termux
  9. 迁移学习简介(tranfer learning)
  10. 【译】On Path Independence