innodb 的最小管理单位是页

innodb的最小申请单位是区,一个区 1M,内含64个页,每个页16K ,即 64*16K=1M, 考虑到硬盘局部性,每次读取4个区,即读4M的数据加载至内存

线性预读:

  innodb的读线程从disk读取4M数据后,如果这4个区中被连接访问的页的数据大于或等于innodb_read_ahead_threshold (默认为56)时,就会提前把后面4个区的数据 load 至内存

注意:

  InnoDb存储引擎这本书中说至少向硬盘申请4个区的数据,

  但大多数文章说只申请1个区的数据,先这样

参考

http://www.oschina.net/translate/making-full-table-scan-10x-faster-in-innodb

MySQL下InnoDB的预热方法

猪圈 | 温故知新 | 0

对于MyISAM表,表的统计信息都是现成的,无需人工预热。但InnoDB的存储格式和MyISAM不一样, innodb会在mysql启动后的第一次访问表的时候,统计表的索引基数等相关信息,如果表很多的话,这是一个巨大的开销。所以在正式提供服务之前,就把表打开,放入到innodb buffer pool中。

MySQL 5.0

1
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES;

MySQL 5.1

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

MySQL 5.6

在my.cnf里,加入如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
innodb_buffer_pool_dump_at_shutdown = 1
 
#解释:在关闭时把热数据dump到本地磁盘。
 
innodb_buffer_pool_dump_now = 1
 
#解释:采用手工方式把热数据dump到本地磁盘。
 
innodb_buffer_pool_load_at_startup = 1
 
#解释:在启动时把热数据加载到内存。
 
innodb_buffer_pool_load_now = 1
 
#解释:采用手工方式把热数据加载到内存。

在关闭MySQL时,会把内存中的热数据保存在磁盘里ib_buffer_pool文件中,位于数据目录下。在启动后,会自动加载热数据到Buffer_Pool缓冲池里。注:只有在正常关闭MySQL服务,或者pkill mysql时,会把热数据dump到内存。机器宕机或者pkill -9 mysql,是不会dump。

附注

查看状态:show innodb status\G

我们可以在my.cnf 加入init-file=/mysql/init.sql ,每次mysql重启的时候就自动执行这个预热的sql

http://www.linuxidc.com/Linux/2012-07/66262.htm

mysql 读取硬盘数据的更多相关文章

  1. Ubuntu系统下MySQL读取文件数据ERROR解决

    博文链接:http://haoyuanliu.github.io/2016/04/29/mysql/ 对,我是来骗访问量的!O(∩_∩)O~~ 在使用MySQL进行文件数据读取的时候,在终端敲入命令行 ...

  2. 从mysql读取大量数据时的实践

    背景 程序启动时,从mysql读取所有的数据,在内存中建立数据结构.mysql表中至少有100w条记录.以后根据时间定期从mysql增量读取数据,刷新内存结构. 表结构为{uid, product, ...

  3. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  4. PHP MySQL 读取数据

    PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: SELECT column_name(s) FROM table_name 如需学习更多关于 ...

  5. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

  6. MySQL中游标使用以及读取文本数据

    原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...

  7. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  8. 读取mysql数据库的数据,转为json格式

    # coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...

  9. 关于mapreducer 读取hbase数据 存入mysql的实现过程

    mapreducer编程模型是一种八股文的代码逻辑,就以用户行为分析求流存率的作为例子 1.map端来说:必须继承hadoop规定好的mapper类:在读取hbase数据时,已经有现成的接口 Tabl ...

随机推荐

  1. html5 全屏滚动活动页学习

    先看几个具体的实例: 1.腾讯娱乐:http://ent.qq.com/zt2014/qqent/h5.htm?from=groupmessage&isappinstalled=0 2.苏宁互 ...

  2. Editplus 中将文本换行替换为<p>标签的正则表达式

    在Editplus.Notepad++编辑器里文本直接复制到在线编辑器里是不带<p>标签的,只是简单的将换行"\n"替换为"<br />" ...

  3. Catalyst揭秘 Day3 sqlParser解析

    Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块. 树形结构 从昨天的介绍我们可以看到sqlPa ...

  4. 字符串做异或使用union

    #include <stdio.h> #include <sys/time.h> #include <string.h> union data { unsigned ...

  5. Hibernate从入门到精通(七)多对一单向关联映射

    上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本次博文我们讲解一下多对一关联映射 多对一单向关联映射 多对一关联映射与一对一关联映射类似,只是在多 ...

  6. GDataXMLNode创建和解析XML

    GDataXMLNode创建xml: #import <Foundation/Foundation.h> 2 #import "GDataXMLNode.h" 3 4 ...

  7. AOP和IOC个人理解

    14:18 2014/5/5 IOC inversion of control 控制反转  将new对象的权力由调用者转移到spring容器(即xml文件),Struts2与Spring整合(scop ...

  8. Android Studio 单刷《第一行代码》系列目录

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  9. (转)关于ARM9协处理器CP15及MCR和MRC指令

    网址:http://blog.csdn.net/zhou1232006/article/details/6150198 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的 ...

  10. poj 3207 Ikki's Story IV - Panda's Trick (2-SAT)

    http://poj.org/problem?id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 13 ...