MySQL数据库的IO操作

五月 24, 2012 by · 1 Comment 

导读:
         淘宝丁奇分享的PPT:MySQL数据库的IO操作,详细分享了四块的内容,并且告诉大家如何调整MySQL数据库IO操作相关的参数,给出了详细的选择策略,现替其整理成文章分享与此。
PPT内容提纲:
1.MySQL的文件及简介
2.数据访问流程
3.文件访问模式
4.影响io行为的一些参数和选择策略

1.MySQL的文件及简介

2.数据访问流程

一个简单的查询 select * from t where id>=(  select id from t where k1=100 limit 100000,1) limit 2;

表结构:

CREATE TABLE `t` (

`id` int(11) NOT NULL,

`k1` int(11) DEFAULT NULL,

`data` char(100) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `k1` (`k1`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk;

 

3.数据访问流程

 

4.数据访问流程

一个简单的更新   insert into t values(1, 100, ‘abcd’);

 

5.文件访问模式

1) *.frm

表定义文件。访问特点:极少改动、整体访问–什么模式最适合?

 

2) *ibd

表数据文件。访问特点:大量随机读写–什么模式最适合?

内部什么样?

在传统SAS盘时代,怎么最大化利用磁盘性能?

换了SSD/FUSIONIO 以后呢?

对应的策略带来的数据安全问题—-

3) ib_logfile*

Redolog。 访问方式:顺序读写。

512字节对齐写可以联想到什么?

 

4)MySQL-bin

Binlog。 访问方式:顺序读写。

为什么策略与redolog不同?

 

5)ibdata

数据字典和回滚日志。访问方式:随机读写/顺序写。策略与数据文件类似。

 

6.影响io行为的一些参数和参数对io的影响

以下参数的描述流程:

1>、参数含义

2>、影响哪些流程

3>、对IO的影响和选择策略

 

innodb_file_per_table

innodb_flush_log_at_trx_commit

sync_binlog

innodb_flush_method

binlog_cache_size

innodb_buffer_pool_size

innodb_max_dirty_pages_pct

innodb_read_io_threads/innodb_write_io_threads

………………

 

innodb_file_per_table

1、控制是否每个表数据一个文件

2、推荐配置1的原因?

 

innodb_flush_log_at_trx_commit

1、控制redo log的写盘、刷盘策略

2、安全递增是0 ->2-> 1

3、不同配置的风险和代价

 

sync_binlog

1、控制binlog刷盘策略

2、安全递增是0 ->N -> 1

3、不同配置的风险和代价

4、与上个配置的差别,为什么没有控制写盘策略?

5、 Binlog_cache_use 和 Binlog_cache_disk_use

 

innodb_flush_method

1、控制data或log的刷盘策略

2、可选值

FSYNC O_DSYNC

O_DIRECT

LITTLESYNC NOSYNC

3、一般设置O_DIRECT ,也不够理想 ALL_O_DIRECT

 

binlog_cache_size

1、还没有提交的事务放cache

2、大事务?

3、Binlog_cache_use /Binlog_cache_disk_use

 

innodb_buffer_pool_size

1、InnoDB中最重要的那块内存

2、越大越好,可用内存的80%

3、Insert Buffer最多占一半

 

innodb_max_dirty_pages_pct

1、最大脏页比例

2、什么是脏页

3、脏页更新策略及对性能的影响

 

innodb_read_io_threads/innodb_write_io_threads

1、异步IO线程数

2、不用太大 4/4就够

3、第一次性能测试,请在DBA指导下使用InnoDB_plugin 并作标准配置

 

如果还有时间。。。

作压测时你会碰到的问题和解决思路

1.查询也写盘,原因和方法
2.压测insert的时候那瞬间的抖动,原因和方法

当设备多起来,我们就有更多的选择

1.文件放哪—一个主要思路
2.Ibdata上面的主要更新,矛盾?

 

关联的文章:MySQL数据库服务器端核心参数详解和推荐配置

原创文章,转载请注明: 文章地址MySQL数据库的IO操作

本文标题:MySQL数据库的IO操作
本文链接:http://www.mysqlops.com/2012/05/24/mysql-io.html
订阅本站:http://feed.mysqlops.com   转载请注明来源,如果喜欢本站可以Feed 订阅本站。

About 丁奇
围脖 @淘宝丁奇

Comments

One Response to “MySQL数据库的IO操作”
  1. netwrom 说道:

    图片中的数据文件有问题吧!数据文件(datefile) frm ibd应该是.MYD.IBD

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

知识共享许可协议
作品采用知识共享署名 2.5 中国大陆许可协议进行许可。