MySQL 5.0 5.1 下InnoDB的预热方法
http://dbahacker.com/mysql/mysql-5-0-5-1-%e4%b8%8binnodb%e7%9a%84%e9%a2%84%e7%83%ad%e6%96%b9%e6%b3%95
之前在做一个项目的MySQL数据库极限压测, 有部分场景是涉及到MySQL重启的,而这个项目使用的是InnoDB存储引擎。
重启完毕后,一开始十几分钟的性能是非常差的,原因是因为InnoDB有innodb buffer pool(简称ibf)的概念
和innodb buffer pool相关的参数innodb_buffer_pool_size,size越大,可以放到内存的数据越多,而大多数的项目都会有热点数据的存在,当热点数据经过LRU算法进入到buffer pool之后,读磁盘的次数减少,读的都是内存,速度是最快的
问题来了,数据库一重启,热点数据都被清空,bf里面都是空的.等待app的sql请求过来让bf填满数据是一个方法,但30分钟内很难把热点数据都装载进来.
这个时候,我们可以采取人工预热的办法来让bf满足我们的需求
MySQL 5.0的预热是最简单的
方法1 : 在MySQL重启后 执行 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES,经过我在一台5.0MySQL的实验 在重启后查看show innodb status\G 和执行完这条语句后 Free buffers的页数会减少.
这个count语句有何作用呢?InnoDB的存储格式和MyISAM不一样, innodb会在mysql启动后的第一次访问表的时候,统计表的索引基数等相关信息,如果表很多的话,这也是一个巨大的开销.所以在正式提供服务之前,就把表打开,放入到bp里面
MySQL 5.1的数据预热
我在一台5.1.48的MySQL进行了重启,测试了同样的SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES 但发现free buffers的页数没有变少,情况和mysqlperformanceblog.com作者所说的一样–这个方法在5.1之后就无法达到我们的需求了
可以采用另外一种方法:获得数据库里面的库和对应的表,来进行预热,核心代码是这一句
SELECT table_schema, table_name FROM information_schema.tables
可以用perl或者python来获取库和表 然后执行 select * from db.table limit 1 来实现我们的方法
最后提一下,我们可以再my.cnf 加入init-file=/mysql/init.sql ,在每次mysql重启的时候就自动执行这个预热的sql 当然了 sql是要我们自己生成的哦
分享到:
相关推荐
国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.pdf国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.pdf国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表...
国家开放大学 MySQL数据库应用 实验训练1 在MySQL中创建数据库和表
(完整)MySQL数据库原理与应用期末考试复习资料.pdf(完整)MySQL数据库原理与应用期末考试复习资料.pdf(完整)MySQL数据库原理与应用期末考试复习资料.pdf(完整)MySQL数据库原理与应用期末考试复习资料.pdf(完整)MySQL...
MYSQL数据库大进级,是非常全面的MYSQL数据库进阶学习资料!
国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.docx国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.docx国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和...
1、在MyEclipse中连接MySQL数据库:依次点击window–>show view–>other–>MyEclipse Database–>DB Browser 图一:找到数据库连接选项 2、选中DB Browser,右键单击,并选择New一个数据连接的菜单,新建一个MySQL...
MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库MySql数据库
MySQL数据库MySQL数据库
MySQL数据库巡检手册 MySQL DBA必备,建议下载参考学习
MySQL数据库修复程序,表查看,读取,表设计。SQL数据库内容读取。
图解WINDOWS下如何安装MYSQL数据库
mysql数据库全文查找,查询所有数据库中包含指定字符的数据。 一、支持功能: 1、支持所有数据库查询字符串,或者指定一个或者多个数据库查询字符串; 2、支持本地使用或者指定远程数据库地址; 3、支持命令行指定...
把mysql数据库中的数据导入到oracle数据库中,希望对大家有所帮助
实现显示Mysql数据库中的内容,可以在eclipse中实现mysql数据库中的具体内容,还可以显示其他信息,另外加了背景显示。
MySQL 数据库备份 和 恢复
mysql数据库基础视频178讲,包括视频、sql脚本、ppt、以及复习资料
教程名称:疯狂Java肖文吉老师MYSQL数据库视频教程课程目录:【】1_MYSQL数据库_数据库概念【】2_MYSQL数据库_MYSQL的安装【】3_MYSQL数据库_MYSQL基础入门【】4_MYSQL数据库_DDL_建表【】5_MYSQL数据库_DDL_约束...
MySQL数据库命令大全 初学者的好东西!!
将MySQL数据库中的导出为Word格式,自动生成数据库说明文档。 里面有操作说明,通过系统的ODBC连接数据库,需要现在ODBC中添加连接信息,word中需要启动宏,运行程序,按照模板导出
完整版 MySQL8.0从入门到精通 MySQL数据库教程 第01章 初始MySQL(共19页).ppt 完整版 MySQL8.0从入门到精通 MySQL数据库教程 第02章 MySQL的安装与配置(共14页).ppt 完整版 MySQL8.0从入门到精通 MySQL数据库...