14.10 InnoDB Disk IO and File Space Management  InnoDB 磁盘IO和文件空间管理:

14.10.1 InnoDB Disk I/O
14.10.2 File Space Management
14.10.3 InnoDB Checkpoints
14.10.4 Defragmenting a Table
14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 作为一个DBA,你必须管理disk I/O 来保持 I/O 子系统防止变的饱和, 管理磁盘空间来避免存储满存储设备。 ACID 设计模型需要一定数量的I/O,那个看起来是多余的, 但是有助于确保数据的可靠性。 在这些约束下, InnoDB 尝试优化数据库负载和磁盘文件组织来 最小化磁盘I/O总量。 有时候,I/O 是延迟的直到数据库不是那么繁忙,或者直到everything 需要被带到一致性状态, 比如在一个数据库重启在一个快速关闭。 这个章节描述主要因素对于I/O和磁盘空间 1. 控制 background I/O 的数量用于改善查询性能 2. 启用或者关闭提供额外的持久性 在代价为额外I/O的功能 3.组织表到很多的小表, 更少的大文件, 或者是两者的结合 4.平衡redo log 文件的大小 对I/O活动发生当log files 变满 5.如何重新组织一个表用于优化查询 14.10.1 InnoDB Disk I/O InnoDB 磁盘I/O InnoDB 使用异步 disk I/O 在可能的情况下, 通过创建多个threads 来处理I/O操作, 同时允许其他数据库操作来处理 当I/O是仍旧在进行中。 在Linux和Windows 平台,InnoDB 使用可用的OS和library 函数来执行 异步I/O, 在其他平台,InnoDB 仍旧使用I/O threads,但是the threads 可能实际等待I/O的请求来完成, 这种技术被认为是 模拟异步I/O。 Read-Ahead: 如果InnoDB 可以决定有一个高概率,数据可能马上需要,它执行read-ahead 操作 把数据加载到Buffer pool,这样就可以在内存里可用的。 几个大的大请求对于连续的数据是更加有效的相比做一些小的请求,分散的请求, 这里有两种预读算法在InnoDB: 1. 顺序预读, 如果InnoDB 选项发现访问模式到segment 在tablespace 是顺序的, 它提前post 一个批处理器读数据库页到I/O系统 2. 在一个随机预读,如果InnoDB 注意一些区域在一个tablespace 看起来被全部读入到buffer pool, 它post 剩下的读到I/O系统 Doublewrite Buffer InnoDB 使用一个新的文件刷新技术涉及一个结构称为doublewrite buffer, 默认启用 (innodb_doublewrite=ON).
mysql> show variables like '%innodb_doublewrite%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| innodb_doublewrite | ON |
+--------------------+-------+
1 row in set (0.00 sec) 它增加安全的恢复在一个crash或者断电, 通过降低 fsync() operations.来提高性能 在写page 到一个数据文件,InnoDB 首先写他们到一个连续的tablespace area 称为 doublewrite buffer. 只有在write和flush 到 doublewrite buffer 已经完成 InnoDB 写pages到它们的合适的位置在数据文件里 。
如果没有一个操作系统,
存储子系统,或者mysqld 处理一个crash 在page中间

14.10.1 InnoDB Disk I/O的更多相关文章

  1. 14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE

    14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE 回收操作系统磁盘空间当truncate 一个InnoDB ...

  2. 14.10.3 InnoDB Checkpoints InnoDB 检查点:

    14.10.3 InnoDB Checkpoints InnoDB 检查点: 你的log files 变的很大可能会降低磁盘性能在checkpointing的时候, 它通常设置设置log files总 ...

  3. 14.6.1 InnoDB Startup Configuration 启动配置

    14.6.1 InnoDB Startup Configuration 启动配置 首先描述关于InnoDB 配置设计数据库文件,日志文件,page size 和内存buffer 的配置. 推荐你定义数 ...

  4. 14.1.1 InnoDB as the Default MySQL Storage Engine

    14.1 Introduction to InnoDB 14.1.1 InnoDB as the Default MySQL Storage Engine 14.1.2 Checking InnoDB ...

  5. 14.4.1 InnoDB Startup Configuration

    14.4 InnoDB Configuration :InnoDB 配置: 14.4 InnoDB Configuration 14.4.1 InnoDB Startup Configuration ...

  6. [VirtualBox] Install Ubuntu 14.10 error 5 Input/output error

    After you download the VirtualBox install package and install it (just defualt setting). Then you sh ...

  7. 14.2.3 InnoDB Redo Log

    14.2.3 InnoDB Redo Log 14.2.3.1 Group Commit for Redo Log Flushing redo log 是一个基于磁盘数据结构的用于在crash 恢复正 ...

  8. 14.10.4 Defragmenting a Table 整理表

    14.10.4 Defragmenting a Table 整理表: 随机插入或者删除从一个secondary index 可以导致index变的fragmented Fragmentation意味着 ...

  9. 14.10.2 File Space Management 文件空间管理:

    14.10.2 File Space Management 文件空间管理: 数据文件 你定义在配置文件形成了InnoDB的系统表空间, 文件是逻辑连接形成表空间,没有条带化使用. 你不能定义你的表在表 ...

随机推荐

  1. ThinkPHP - 独立分组项目搭建

    配置文件: <?php return array( //独立分组 'APP_GROUP_LIST' => 'Home,Admin', //分组列表 'APP_GROUP_MODE' =&g ...

  2. iOS UILabel 使用姿势大全(标红关键字)

    一.初始化 ? 1 2 3 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];       ...

  3. C# lazy<T>的用法

    .NET 4.0中加入了lazy<T>(懒对象),其实叫懒对象感觉不对,更应该叫延迟对象加载. 正如我们所知,对象的加载是需要消耗时间的,特别是对于大对象来说消耗的时间更多.lazy可以实 ...

  4. light oj 1047-neighbor house

    ime Limit:500MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Description The people ...

  5. ViewPager,使用Fragment实现

    效果如图: 使用Fragment实现tab的缺点就是不能够滑动.不过应该也算优点,具体场景可以自由选择. 完整代码:imooc-tab022fragment,在我的百度云网盘上. MainAcgtiv ...

  6. jQuery特效手风琴特效 手写手风琴网页特效

    今天写一个简单的手风琴效果,不用插件,利用强大的jQuery,写一个手风琴效果. 页面预览,请点击这里预览:  手风琴预览 案例分析: html结构 就是一个大盒子里面放着5个li,每个li的小小是2 ...

  7. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)

    一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...

  8. struct 和 class 不同点

    在 C++ 里面 struct 和 class 没有本质的差别 仅仅是成员和继承方式的默认不同 struct 是 public class 是 private 我的个人建议是仅仅要须要实现成员函数的就 ...

  9. jQuery推断复选框是否勾选

    今天要实现一功能就是:复选框勾选时给input表单赋值,复选框取消时将表单值清除. 效果如图: 实现源代码:cyfID为复选框的id $("#cyfID").click(funct ...

  10. TCP三次握手和四次挥手具体解释

    三次握手:建立TCP须要三次握手才干建立, 先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK ...