mysql预热方式_MySQL数据库数据预热方法

本文介绍了MySQL数据库重启后如何进行数据预热,特别是针对InnoDB存储引擎的表。预热过程可以加速数据加载到innodb_buffer_pool,避免影响服务。文章提供了适用于不同MySQL版本的预热SQL语句,包括针对主键、非主键索引和BLOB/TEXT列的预加载策略。
摘要由CSDN通过智能技术生成

MySQL5.5后默认存储引擎都是innodb。一般生产数据库重启之后,都需要进行预热,加载数据到innodb_buffer_pool业务正常的对数据读取会加热数据,但这个过程很漫长且影响服务,那重启mysql之后我们该怎么人工预热呢?

对于MyISAM表,表的统计信息都是现成的,无需人工预热。

但InnoDB的存储格式和MyISAM不一样, innodb会在mysql启动后的第一次访问表的时候,统计表的索引基数等相关信息,如果表很多的话,这是一个巨大的开销。所以在正式提供服务之前,就把表打开,放入到innodb buffer pool中。 默认情况,只有某条数据被读取一次,才会缓存在innodb_buffer_pool。所以,数据库刚刚启动,需要进行数据预热,将磁盘上所有数据缓存到内存中,数据预热可以提高读取神速。

对于mysql5.0版本,方法比较简单,执行下面sql:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES;

对于mysql5.1版本,执行下面sql,并执行该sql的结果来进行预热:

SELECT concat('select * from ',table_schema,'.',table_name,' limit 1;') FROM information_schema.tables where engine='innodb';

对于Innodb 数据库,可以通过系统表信息,进行数据预热:

SELECT DISTINCT CONCAT('SELECT ',AB.ndxcollist,' FROM ',AB

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值