mysql 5.6 后热数据的加载

转自:http://blog.itpub.net/20892230/viewspace-2127469/

故障现象:在数据库重启后,碰巧遇到业务高峰期,连接数满,导致用户登录一直等待,此时数据库处于无响应状态.

故障分析:当数据库重启后,在数据库buffer中的热数据需要innodb本身去预热.如果buffer太大,依靠innodb自己去预热,将会有很长一个周期才能实现.此时热数据就需要到磁盘去寻找,就给磁盘的I/O带来很大的压力.遇到瓶颈,就会一直等待,导致数据无响应.

解决方法:5.6版本之前,重启mysql后,手工把热数据加载到buffer里面去.如:select count(*) from table_name(热数据表);

5.6版本之后,提供了一个新特性来快速预热buffer_pool缓冲池.在my.cnf里面加入几个参数:#innodb_buffer_pool_load_at_startup = on    默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。
#innodb_buffer_pool_load_now =off   默认为关闭OFF。以手动方式加载到InnoDB缓存池中。
#innodb_buffer_pool_filename =ib_buffer_pool  如果开启InnoDB预热功能,停止MySQL服务时,MySQL将InnoDB缓冲池中的热数据保存到数据库根目录中,默认文件名ib_buffer_pool.
#innodb_buffer_pool_load_aborr =off  默认为关闭OFF。如果开启该参数,即便开启InnoDB预热功能, MySQL也不会将本地硬盘的热数据加载到InnoDB缓冲池中。 
innodb_buffer_pool_dump_at_shutdown=on #5.7.7以后默认就是on,在数据库关闭的时候,将热数据刷新到磁盘
#innodb_buffer_pool_dump_now = off 默认为off,手动将innodb缓冲池中的热数据导出到磁盘;
#innodb_buffer_pool_dump_pct = 40   默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据的百分比保存到本地硬盘,5.7.6以前是100,5.7.7开始是25,也就是保存缓存中的25%热数据。

特别说明的是innodb_buffer_pool_load_now和innodb_buffer_pool_dump_now这两个参数是可以在命令行直接执行的,直接手工导入导出热数据,可以根据业务环境,自定义执行.如在执行的过程中可以直接执行 innodb_buffer_pool_load_aborr中止;
如: set global innodb_buffer_pool_load_now=1;--直接加载热数据;
     set global innodb_buffer_pool_load_aborr=1;---中止加载;

在关闭mysql时,会把内存中的热数据保存在磁盘的ib_buffer_pool文件中,该文件位于数据目录下.
ps:只有正常关闭mysql服务,或者pkill mysql时,才会把热数据导出到磁盘.机器宕机或者pkill -9 mysql,是不会导出的

mysql 5.6 后热数据的加载的更多相关文章

  1. JS实现-页面数据无限加载

    在手机端浏览网页时,经常使用一个功能,当我们浏览京东或者淘宝时,页面滑动到底部,我们看到数据自动加载到列表.之前并不知道这些功能是怎么实现的,于是自己在PC浏览器上模拟实现这样的功能.先看看浏览效果: ...

  2. 防止ViewPager和Fragment结合使用时候的数据预加载

    不知道你们使用ViewPager和Fragment结合的时候发现一个问题没,如果你的每个Fragment都需要请求网络数据,并且你在请求网络数据的时候会加入进度对话框的加载显示效果,当你显示第一个Fr ...

  3. JPA数据懒加载LAZY配合事务@Transactional使用(三)

    上篇博文<JPA数据懒加载LAZY和实时加载EAGER(二)>讲到,如果使用懒加载来调用关联数据,必须要保证主查询session(数据库连接会话)的生命周期没有结束,否则,你是无法抽取到数 ...

  4. Echarts使用及动态加载图表数据 折线图X轴数据动态加载

    Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯JavaScript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...

  5. Unity3d通用工具类之数据配置加载类

    今天,我们来讲讲游戏中的数据配置加载. 什么是游戏数据加载呢?一般来说游戏中会有场景地图. 按照国际惯例,先贴一张游戏场景的地图: 在这张地图上,我们可以看到有很多正六边形,正六边形上有树木.岩石等. ...

  6. Android学习笔记_36_ListView数据异步加载与AsyncTask

    一.界面布局文件: 1.加入sdcard写入和网络权限: <!-- 访问internet权限 --> <uses-permission android:name="andr ...

  7. Java 爬虫遇上数据异步加载,试试这两种办法!

    这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...

  8. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  9. 省市数据递归加载到TreeView

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

随机推荐

  1. 『HGOI 20190917』Cruise 题解 (计算几何+DP)

    题目概述 在平面直角坐标系的第$1$象限和第$4$象限有$n$个点,其中第$i$个点的坐标为$(x_i,y_i)$,有一个权值$p_i$ 从原点$O(0,0)$出发,不重复的经过一些点,最终走到原点, ...

  2. matplotlib(二):折线图

    import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates # 解决中文显示问题 plt. ...

  3. 使用wait/notify实现生产消费模型

    public class A { private Deque<Integer> list = new LinkedList<>(); private int max = 10; ...

  4. 创建docker静态化IP

    配置桥接网络 桥接本地物理网络的目的,是为了局域网内用户方便访问 docker 实例中服务,不需要各种端口映射即可访问服务. 但是这样做,又违背了 docker 容器的安全隔离的原则,工作中辩证的选择 ...

  5. python如何实现一个类似重载的功能

    def post(): print("this is post") print("想不到吧") class Http(): @classmethod def g ...

  6. C++ 编程风格指南

    C++ Programming Style Guidelines 他人翻译中文版:click 让程序具有好的可读性 “避免日后 有人(或者自己)指着你的代码骂娘:这特么谁写的破烂 玩意”(来自:知乎- ...

  7. 如何评价深度学习框架Keras?

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  8. Vue常见的框架

    1. Element:一套为开发者,设计师和产品经理准备的基于Vue 2.0的桌面端组件库 地址:https://element.eleme.cn/#/zh-CN 2.iview:主要服务于PC界面的 ...

  9. linux常用关机和重启命令

    Linux有如下的关机和重启命令:shutdown, reboot, halt, poweroff,那么它们有什么区别呢? shutdown - 建议使用的命令 shutdown是最常用也是最安全的关 ...

  10. linux性能分析之平均负载

    平均负载 1,执行 top 或者 uptime 命令 来了解系统负载 uptime 分析显示 当前时间,系统运行时间,正在登录用户数 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程 ...