线上服务器在重启过后,由于innodb buffer pool被清空,往往在最开始一段时间的性能会很差,当用户量特别大的高峰时期更是如此。MySQL 5.6 将 InnoDB版本升级到1.2.X后,提供了一共5个新的参数用于配置预热功能,将innodb buffer pool中的热块缓存到磁盘文件ib_buffer_pool中,待重启时再加载到内存中。
本文是对生产环境下,部分使用5.5及更早版本的数据库服务器没有该参数可供选择的情况下,提供了一个手动预热的方法。
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
【编辑中】
。。。
【编辑中】
可以将该sql写在配置文件中(加入init-file=~/init.sql),方便每次重启mysql后自动执行预热sql
注,mysql5.6异常关闭时,预热功能正常?
参考:
https://dev.mysql.com/doc/refman/5.6/en/innodb-preload-buffer-pool.html
https://blog.marceloaltmann.com/en-warm-up-innodb-buffer-pool-pt-esquentando-o-innodb-buffer-pool/
https://stackoverflow.com/questions/3430865/how-to-preload-tables-into-innodb-buffer-pool-with-mysql
http://mysqlserverteam.com/mysql-dumping-and-reloading-the-innodb-buffer-pool/
http://imysqldba.blog.51cto.com/1222376/1119804
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。