2013年11月27日 星期三 09:27
之前,当MySQL服务重启之后,InnoDB的Buffer Pool是空荡荡的,没有任何数据被缓存,此时任何增删改查的操作都会比较慢,如果有一大波请求过来,可能会造成MySQL数据库积累大量连接,甚至无法响应。所以,当年有一个概念叫做数据库“预热”,操作相当麻烦。
后来社区提出了新的想法,基本概念就是当MySQL在Shutdown时,会将Buffer Pool里面的缓存信息保存到本地磁盘一个文件中(保存的内容是缓存对应的磁盘block偏移量,而不是缓存的内容,所以这个文件很小),当MySQL服务启动时,会根据这个文件重新加载缓存内容,然后才开始接受请求,这样就不会有上述的问题出现了。
Percona发行的5.5版本的XtraDB数据库就包含了上述特性。
后来MySQL官方发行5.6.3版本,吸收了这个新的想法,增加了几个与此相关的参数:
1,innodb_buffer_pool_dump_at_shutdown
2,innodb_buffer_pool_load_at_startup
3,innodb_buffer_pool_load_now
4,innodb_buffer_pool_filename
5,innodb_buffer_pool_dump_now
6,innodb_buffer_pool_load_abort
以上几个参数的意义顾名思义即可,另外还有两个status参数可以用查看dump或者load的进展情况:
1,Innodb_buffer_pool_dump_status
2,Innodb_buffer_pool_load_status
根据我的实践,这个特性确实很有意义,数据库重启之后,可以迅速恢复活力。
更多有关讲解请参考官方文档:
Zeuux © 2024
京ICP备05028076号