使用MySQL命令“show variables like 'innodb_old%';可以查看InnoDB缓冲池结构的参数信息。

  • innodb_old_blocks_pct:控制old page子链表在LRU链表中的长度。

  • innodb_old_blocks_time:控制old page子链表的数据页移动到new page 子链表中的时机。

    InnoDB缓存池预热

   MySQL服务启动一段时间后,InnoDB会将经常访问的数据(包括业务数据,管理数据)置入InnoDB缓冲池中,即InnoDB缓冲池保存的是频繁访问的数据(简称热数据)。当InnoDB缓冲池的大小是几十GB甚至是几百GB时,由于某些原因(例如数据库定期维护)重启MySQL服务,如何将之前InnoDB缓冲池中的热数据重新加载到InnoDB缓冲池中?简单地说:如何对InnoDB缓冲池进行预热,以便于MySQL服务器快速地恢复到重启MySQL服务之前的性能状态?
  如果单靠InnoDB自身预热InnoDB缓冲池,将会是一个不短的时间周期,业务高峰时,MySQL服务器将面临着巨大考验。在MySQL5.5以及之前的版本中,当停止MySQL服务时,所有存储在InnoDB缓冲池中的热数据将被全部清空。从5.6版本开始,MySQL支持关闭MySQL服务时将内存中的热数据保存到硬盘,MySQL重启后首先将硬盘中的如数据加载到InnoDB缓冲池中,以便缩短warmup进程的时间,提高业务繁忙高并发时的效率。使用MySQL命令”show variables like ‘%innodb%pool%';''可以查看有关InnoDB缓冲池预热功能参数设置。


  • innodb_buffer_dump_at_shutdown:默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。

  • innodb_buffer_pool_load_at_startup:默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。

  • innodb_buffer_pool_load_now:默认为关闭OFF。如果开启该参数,停止MySQL服务时,以手动方式将InnoDB缓存池中的热数据保存到本地硬盘。

  • innodb_buffer_pool_filename:如果开启InnoDB预热功能,停止MySQL服务时,MySQL将InnoDB缓冲池中的热数据保存到数据库根目录中,默认文件名为ib_buffer_pool.

  • innodb_buffer_pool_load_aborr:默认为关闭OFF。如果开启该参数,即便开启InnoDB预热功能,启动MySQL服务室,MySQL也不会将本地硬盘的热数据加载到InnoDB缓冲池中。

    开启InnoDB缓冲池预热后,使用MySQL命令''show variables like 'Innodb_buffer%’;''可以查看InnoDB缓冲池预热的状态信息。