linux

MySQL-InnoDB内存数据对象

2018-10-26  本文已影响1人  agile4j

作者:刘仁鹏
参考资料:《MySQL技术内幕:InnoDB存储引擎》


1.序言

SHOW ENGINE INNODB STATUS\G

SELECT POOL_ID, POOL_SIZE, FREE_BUFFERS, DATABASE_PAGES FROM INNODB_BUFFER_POOL_STATUS\G

<center>图:InnoDB内存数据对象</center>


nnnn.png-94.8kBnnnn.png-94.8kB

2.具体实现

1.LRU List、Free List、Flush List

LRU列表

Free列表

SHOW ENGINE INNODB STATUS\G

SELECT POOL_ID, HIT_RATE, PAGES_MADE_YOUNG, PAGES_NOT_MADE_YOUNG FROM information_schema.INNODB_BUFFER_POOL_STATUS\G

SELECT TABLE_NAME, SPACE, PAGE_NUMBER, PAGE_TYPE FROM INNODB_BUFFER_PAGE_LRU WHERE SPACE = 1;

Flush列表

2.重做日志缓冲

  1. Master每秒刷一次
  2. 每个事务提交时刷一次
  3. 重做日志缓冲剩余空间小于1/2时刷一次

3.额外的内存池

  1. 每个缓冲池中的帧缓冲
  2. 对应的缓冲控制对象(这些对象记录了一些诸如LRU、锁、等待等信息)
上一篇 下一篇

猜你喜欢

热点阅读