MySQL与IO @淘宝丁奇
MySQL的文件及简介 数据访问流程 文件访问模式 影响io行为的一些参数和选择策略
MySQL的文件及简介 类型名称 文件名 数据文件(datafile) *.frm *.ibd 数据字典 Ibdata1、ibdata2 事务日志(redolog) Ib_logfile0、ib_logfile1 回滚日志(undolog) Ibdata 归档日志(binlog) mysql-bin.000001~mysql-bin.xxxx 中继日志(relaylog) mysqld-relay-bin.xxxxxx 其他日志 slowlolg, errorlog,querylog
数据访问流程 一个简单的查询 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;
数据访问流程
数据访问流程 一个简单的更新 insert into t values(1, 100, ‘abcd’); 神马是insert buffer?跟io有关吗
文件访问模式 1) *.frm 表定义文件。访问特点:极少改动、整体访问--什么模式最适合? 2) *ibd 表数据文件。访问特点:大量随机读写--什么模式最适合? 内部什么样? 在传统SAS盘时代,怎么最大化利用磁盘性能? 换了SSD/FUSIONIO 以后呢? 对应的策略带来的数据安全问题----
文件访问模式 3) ib_logfile* Redolog。 访问方式:顺序读写。 512字节对齐写可以联想到什么? 4)MySQL-bin Binlog。 访问方式:顺序读写。 为什么策略与redolog不同? 5)ibdata 数据字典和回滚日志。访问方式:随机读写/顺序写。策略与数据文件类似。
innodb_file_per_table innodb_flush_log_at_trx_commit sync_binlog 影响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 。。。。。。
影响io行为的一些参数和参数对io的影响 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
影响io行为的一些参数和参数对io的影响 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
影响io行为的一些参数和参数对io的影响 innodb_buffer_pool_size 1、InnoDB中最重要的那块内存 2、越大越好,可用内存的80% 3、Insert Buffer最多占一半 innodb_max_dirty_pages_pct 1、最大脏页比例 2、什么是脏页 3、脏页更新策略及对性能的影响
影响io行为的一些参数和参数对io的影响 innodb_read_io_threads/innodb_write_io_threads 1、异步IO线程数 2、不用太大 4/4就够 3、第一次性能测试,请在DBA指导下使用InnoDB_plugin 并作标准配置
性能抖动? 作压测时你会碰到的问题和解决思路 查询也写盘,原因和方法 压测insert的时候那瞬间的抖动,原因和方法
文件分离 当设备多起来,我们就有更多的选择 文件放哪—一个主要思路 Ibdata上面的主要更新,矛盾?
问题反馈:MySQL聚合函数执行流程 MySQL执行流程上,先经过优化器确定执行路径 1、order by 2、group by 3、distinct
谢谢