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>