innodb标准监视器输出各项含义

877 阅读5分钟

一:BACKGROUND THREAD

INNODB存储引擎的后台工作主要是在Master Thread中完成的,其内部由多个循环(loop)组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspend loop)

第一行表示:这里可以看到Master Thread进入active的次数为19次,关闭次数为0,进入idle次数为852525。
第二行表示:在主线程中innodb重做日志被写入和被同步到磁盘的次数
在innodb1.2.x版本中,active代表在主循环中执行每一秒就要进行的操作,idle代表在主循环中每10秒就要进行的操作

二:SEMAPHORES

三:TRANSACTIONS

四:FILE I/O

五:INSERT BUFFER AND ADAPTIVE HASH INDEX

Insert Buffer是Innodb存储引擎的一大特性,为了解决非聚集索引的插入或更新操作,对于聚集索引,插入是有序的,索引的插入与更新不会产生随机插入,但是对于非聚集索引例如UUID之类的,插入或更新时会产生随机查找与更新,如果每一个非聚集索引的变更都去离散的访问非聚集索引页,会有很大的开销,所以innodb引入了Insert buffer这一特性。 使用Insert Buffer前提条件

  • 索引是辅助索引(Secondary Index)
  • 索引不是唯一(Unique)的

Insert Buffer机制原理:对于非聚集索引的插入或更新操作,不是每一次都直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入;若不在,则先放入到一个Insert Buffer对象中,然后再以一定的频率和情况进行Insert Buffer和辅助索引页子节点的merge操作,这样通常能将多个插入合并到一个操作中,大大提高了对于非聚集索引插入的性能

segSize:代表当前Insert Buffer的大小 2 * 16kb
free list len:代表空闲列表的长度
size:代表已经合并的记录页的数量
inserts:代表插入的记录数
merged recs:代表了合并的插入记录数量
merges:代表合并的次数,也就是实际读取页的次数

Adaptive Hash Index是Innodb存储引擎的另一特性,Innodb存储引擎会自动根据访问的频率和模式来自动地为某些热点页建立哈希索引。默认为启用

hash searches/s:代表每秒有多少个哈希查找
non-hash searches/s:代表每秒没有多少哈希查找

六:LOG

七:BUFFER POOL AND MEMORY

Total memory allocated(kb)            //缓冲池分配的总内存字节数
Dictionary memory allocated           //InnoDB数据字典分配的总内存字节数
Buffer pool size                      //缓冲池分配的总页数
Free buffers                          //缓冲池free list上的总页数
Database pages                        //缓冲池LRU list上的总页数
Old database pages                    //缓冲池旧页子列上的总页数
Modified db pages                     //缓冲池中的当前脏页数
Pending reads                         //等待被读取进入缓冲池中的页数
Pending writes LRU                    //LRU列表底部等待被写入的旧的脏块数量
Pending writes flush list             //执行检查点时缓冲池中将要被刷新的脏页
Pending writes single page            //缓冲池中每个页上的写等待总次数的总和(有些页上可能同时出现多个写等待)
Pages made young                      //从旧页子列表上移动到新页子列表的总页数(旧页子列表上的页被访问后则会移动到新页子列表,即made young)
Pages made not young                  //旧子列表中未移动到新页子列表的总页数
youngs/s                              //旧子页列表中每秒被访问从而被加入新页子列表(make young)的页数,在没有大全表扫描的情况下,若这个值很低,应该考虑innodb_old_blocks_time是否设置过大,或者是旧页子列表的比例是否设置过小。
non-youngs/s                          //旧子页列表中每秒被访问但并未加入新页子列表的页数(innodb_old_blocks_time系统变量)
Pages read                            //缓冲池中被访问的总页数
Pages created                         //缓冲池中被创建的总页数(页被创建,说明页从磁盘中读取进来)
Pages written                         //缓冲池中被写的总页数(页被写,说明页被修改)
reads/s                               //缓冲池中每秒平均读页次数
creates/s                             //缓冲池中每秒平均创建页次数(体现物理IO压力)
writes/s                              //缓冲池中每秒平均写页次数(体现事务量)
Buffer pool hit rate                  //缓冲池命中率(判断缓冲池大小设置是否充足)
young-making rate                     //旧页子列表中的页访问导致make young的命中率
not (young-making rate)               //旧页子列表中的页访问未导致make young的命中率
Pages read ahead                      //平均每秒预读的页数
Pages evicted without access          //平均每秒被踢出的页数
Random read ahead                     //平均每秒随机预读页数
LRU len                               //LRU列表长度,即LRU上的页数
unzip_LRU len                         //压缩页LRU列表上的页数(压缩页为16k页被压缩后的页,可以是1k,2k,4k,8k,他是包含于LRU列表之中的)
I/O sum                               //过去50s内,LRU列表上的每个页被访问的次数总和
I/O cur                               //过去50s内,LRU列表被访问的总次数(每次可访问多个页)
I/O unzip sum                         //过去50s内,压缩页LRU列表上的每个页被访问的次数总和
I/O unzip cur                         //过去50s内,压缩页LRU列表被访问的总次数

八:ROW OPERATIONS

九:未完待续