日期:2014-05-16  浏览次数:20698 次

MySQL5.6:快速预热Buffer_Pool缓冲池
数据库的buffer pool中的数据重启后,会丢失。因此,再次启动后,需要重新通过应用对数据库的访问,逐渐加载到buffer pool中。这个过程称为数据库预热。如果库较大,该过程花费时间较长,期间应用的性能也受到影响。

MySQL 5.6中,可以将buffer pool的内容(文件页的索引)dump到文件中,然后快速load到buffer pool中。避免了数据库的预热过程,提高了应用访问的性能。

mysql> show variables like 'innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF            |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_load_at_startup  | OFF            |
| innodb_buffer_pool_load_now         | OFF            |
+-------------------------------------+----------------+


运行时dump缓冲池:
set global innodb_buffer_pool_dump_now = ON;


运行时load缓冲池:
set global innodb_buffer_pool_load_now = ON;


关闭时dump缓冲池:
innodb_buffer_pool_dump_at_shutdown = ON;


启动时load缓冲池:
innodb_buffer_pool_load_at_startup = ON;


设置记录缓冲池页块的文件:
innodb_buffer_pool_filename = <path\to\file>