导读:
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
file in the database directory where the table belongs. To enable multiple tablespaces, start the server with the tbl_name
.ibd--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 并作标准配置
如果还有时间。。。
作压测时你会碰到的问题和解决思路
当设备多起来,我们就有更多的选择