14.10.1 InnoDB Disk I/O
- 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的更多相关文章
- 14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE
14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE 回收操作系统磁盘空间当truncate 一个InnoDB ...
- 14.10.3 InnoDB Checkpoints InnoDB 检查点:
14.10.3 InnoDB Checkpoints InnoDB 检查点: 你的log files 变的很大可能会降低磁盘性能在checkpointing的时候, 它通常设置设置log files总 ...
- 14.6.1 InnoDB Startup Configuration 启动配置
14.6.1 InnoDB Startup Configuration 启动配置 首先描述关于InnoDB 配置设计数据库文件,日志文件,page size 和内存buffer 的配置. 推荐你定义数 ...
- 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 ...
- 14.4.1 InnoDB Startup Configuration
14.4 InnoDB Configuration :InnoDB 配置: 14.4 InnoDB Configuration 14.4.1 InnoDB Startup Configuration ...
- [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 ...
- 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 恢复正 ...
- 14.10.4 Defragmenting a Table 整理表
14.10.4 Defragmenting a Table 整理表: 随机插入或者删除从一个secondary index 可以导致index变的fragmented Fragmentation意味着 ...
- 14.10.2 File Space Management 文件空间管理:
14.10.2 File Space Management 文件空间管理: 数据文件 你定义在配置文件形成了InnoDB的系统表空间, 文件是逻辑连接形成表空间,没有条带化使用. 你不能定义你的表在表 ...
随机推荐
- windows 下一个mysql password忘记改变
到场mysql简介 my.ini 于[mysqld]以下被加入 skip-grant-tables win+R 热键 进cmd 然后输入命令net stop mysql 最后一点,使文件夹mysql ...
- android Graphics(三):区域(Range)
前言:最近几天对画图的研究有些缓慢,项目开始写代码了,只能在晚上空闲的时候捯饬一下自己的东西,今天给大家讲讲区域的相关知识,已经想好后面两篇的内容了,这几天有时间赶紧写出来给大家.有关界面开发的东东内 ...
- 【Eclipse】WebServiceExplorer
1.点击以下按钮启动Eclipse Web Service Explorer 2.点击页面右上角的WSDL PAGE按钮 3.点击页面左上角WSDL MAIN-->输入WSDL地址-->选 ...
- 【Nginx】启动报错-端口被占用
将下载的windows版nginx的压缩包nginx-1.4.2.zip解压到F:\server\nginx-1.4.2里面. dos命令键入: F: cd F:\server\nginx-1.4.2 ...
- Objective-C开发编码规范:4大方面解决开发中的规范性问题
Objective-C 编码规范,内容来自苹果.谷歌的文档翻译,自己的编码经验和对其它资料的总结. 概要 Objective-C 是一门面向对象的动态编程语言,主要用于编写 iOS 和 Mac 应用程 ...
- linux内核代码container_of
它的作用显而易见,那就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针. typedef unsigned int __kernel_size_t; typedef __ke ...
- AppStore安装APP发生错误解决方法
打开网络偏好设置 高级 -> DNS -> + -> 114.114.114.114
- PHP 重载 __call() _callStatic方法
在C++和java中,可以函数参数的个数或类型来进行重载.但php是弱类型的语言,无法采用传统的方法.若下面这样: class Person{ function fun1($a) { echo 'fu ...
- 发送邮件给某人:mailto标签
mailto标签 1.标签最简式 <a href="mailto:xxx@xx.com">联系站长</a> 2.标签帮你填抄送地址 <a href=& ...
- Cannot drop the database ‘XXX’ because it is being used for replication.
删除订阅数据库的时候出现下面的错误: Cannot drop the database ‘XXX’ because it is being used for replication. 数据库的状态为 ...