MySQL数据库的IO操作

导读:

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

1.MySQL的文件及简介


// by one year later 后来我查证了一下,上面写的不完全准确
.frm   是描述表结构的文件 , 无论表示innodb 还是 myisam类型的
.MYD   是myisam类型的表的数据文件  
.MYI   是myisam类型的表数据文件中任何索引的数据树。


.idb -- With multiple tablespaces enabled, InnoDB stores each newly created table into its own tbl_name.ibd file in the database directory where the table belongs. To enable multiple tablespaces, start the server with the --innodb_file_per_table option. http://dev.mysql.com/doc/refman/5.0/en/innodb-multiple-tablespaces.html

开启  multiple tablespaces (innodb_file_per_table)之后,一个表就是一个文件,如果没有开启的话默认会把数据放入到ibdata1/ ibdata2 这样文件当中,这个文件因为mvcc的缘故,所以还存放着undo log , 所以上面的讲解不太对



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上面的主要更新,矛盾?


五月 24, 2012 by   ·  Leave a Comment 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值