MySQL数据库的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 并作标准配置
如果还有时间。。。
作压测时你会碰到的问题和解决思路
当设备多起来,我们就有更多的选择
您可能也喜欢: | |||
MySQL数据库备份及恢复命令及常用应用举例 |
MySQL优化篇-查询优化 |
MYSQL数据库系统的设计架构 |
mysql数据库大小的限制 |
无觅 |