innodb_flush_log_at_trx_commit:
主要控制了innodb
将
log buffer
中的数据写入日志文件并
flush
磁盘的时间点,取值分别为
0
、
1
、
2
三个。
0
,表示当事务提交时,不做日志写入操作,而是每秒钟将
log buffer
中的数据写入日志文件并
flush
磁盘一次;
1
,则在每秒钟或是每次事物的提交都会引起日志文件写入、
flush
磁盘的操作,确保了事务的
ACID
;设置为
2
,每次事务提交引起写入日志文件的动作,但每秒钟完成一次
flush
磁盘操作。显然,设置为
0
或
2
可以减小系统的
io
压力,特别是
0
时,速度最快,提高
mysql
写操作的吞吐量,但
mysql
或操作系统的崩溃、断电都可能会引起数据的丢失,设置为
2
时
os
的崩溃和断电可能会引起数据的丢失。
innodb_flush_method:
影响了服务器
flush
数据或日志文件的方法。具体有三个选值:默认的
default
,
innodb
使用
fsync()
函数
flush
数据和日志文件;
O_DIRECT
,
innodb
使用
O_DIRECT
的方式打开数据文件,并使用
fsync()
函数
flush
数据和日志文件;
O_DSYNC
,
innodb
使用
O_SYNC
打开并
flush
日志文件,使用
fsync()
函数
flush
数据文件。
注:
在类unix
操作系统中,文件的打开方式为
O_DIRECT
会最小化缓冲对
io
的影响
,该文件的io
是直接在用户空间的
buffer
上操作的,并且
io
操作是同步的,因此不管是
read()
系统调用还是
write()
系统调用,数据都保证是从磁盘上读取的
;O_SYNC
方式表示以同步
io
的方式打开文件,任何写操作都将阻塞到数据写入物理磁盘后才返回。
f
sync(
int filedes)
函数只对由文件描述符
filedes
指定的单一文件起作用,并且等待写磁盘操作结束,然后返回。
fdatasync(int filedes)
函数类似于
fsync
,但它只影响文件的数据部分。而除数据外,
fsync
还会同步更新文件的元信息到磁盘
。
sync_binlog:
影响了
binary log
的
fllush
,当为
1
时,每个事物提交后,
mysql
将用
fdatasync()
函数将二进制日志同步到磁盘上;当为
0
时,
mysql
不会做额外的
flush
,而是依靠
os
的
flush
。
做过一些相应的测试,获得一些以上三参数搭配使用的结论:
1)
O_DIRECT的
flush_method
更适合于操作系统内存有限的情况下(可以避免不必要的对交换空间的读写操作),否则,它会由于禁用了
os
的缓冲降低对数据的读写操作的效能。
2)
Sync_binlog为
1
时,
每个含有修改操作的事物提交后,mysql
将
把
二进制日志同步到磁盘上
,增大了io
压力,引起相应瓶颈,会降低对数据写操作的效率。而
select
操作不写入
binary log
,所以不受任何影响。
3)
对于innodb_flush_log_at_trx_commit
与
innodb_flush_method
的不同组合(
0|1|2
,
default|O_DSYNC
)(对于
O_DIRECT
的情况特殊,已经在
1
)中单独做了总结在此不累述)分析得:
①
(0
,
default
)
每秒钟调用fsync()
同步一次
innodb logfile
,
io
压力小,性能高,但可能损失数据;
②
(1
,
default
)每秒钟和每次
commit
调用
fsync()
同步一次
innodb logfile
,保证数据完整的同时,加大了
io
压力,吞吐量相对低;
③
(2
,
default
)速度介于前两者之间,也不能完全保证数据的安全;
④
(0
,
O_DSYNC)每秒同步日志及数据文件,吞吐量等情况应与(
0
,
default
)基本一致;
⑤
(1
,
O_DSYNC)
每秒钟和每次commit
同步数据及日志文件,相应于(
1
,
default
)情况一致;
⑥
(2
,
O_DSYNC)虽然
innodb_flush_log_at_trx_commit
设置为2
,
innodb被告知
每次事务提交引起写入日志文件的动作,每秒钟完成一次flush
磁盘操作
,但由于O_DSYNC
的设置使得
os
对日志自动做了同步工作,所以吞吐量等情况与
(1
,
default
)和(
1
,
O_DSYNC)相一致。
分享到:
相关推荐
默认情况下,innodb的参数设置的非常小,在生产环境中远远不够用
InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小: mysql> show variables like 'innodb_page_size'; 而系统一个磁盘块的...
而由于InnoDB是一个健壮的事务型存储引擎,已经有10多年的历史,一些重量级的...推荐此参数至少设置为2MB,实际上,是需要根据项目的InnoDB表的数目相应地增加 2.innodb_data_pool_size 此参数类似于MySQL的key_bu
在测试环境下没有设置过多的详细参数就初始化并启动了服务,后期优化的过程中发现innodb_data_file_path设置过小: root@node1 14:59: [(none)]> show variables like '%innodb_data_file_path%'; +
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每...如果没有设置这个参数,
Physical Structure of an InnoDB Index 所有的innodb索引都是btree索引,索引记录保存在叶子上,默认的索引页大小是16K。...Mysql5.6以后,可以通过innodb_page_size参数设置当前实例下每个索引页的大小,
query_cache_size、query_cache_type、innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size、innodb_flush_logs_at_trx_commit、transaction_isolation、innodb_file_per_table、innodb_open_...
默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_...
innodb_autoinc_lock_mode这个参数控制着在向有auto_increment 列的表插入数据时,相关锁的行为; 通过对它的设置可以达到性能与安全(主从的数据一致性)的平衡 【0】我们先对insert做一下分类 首先insert大致上可以...
1>#skip-networking这个参数作用是是否允许远程访问,如果将#号去掉,将不能访问通过远程访问mysql 2> log-bin=mysql-bin数据库二进制日志 3> server-id = 1用于设置数据库的主从说明,主的是1,不允许id有重复号 4>...
引用 090613 10:15:27 [ERROR] Default storage engine (InnoDB) is not available 090613 10:15:27 [ERROR] Aborting 090613 10:15:27 [Note] C:\www\mysql\bin\mysqld-nt: Shutdown complete 估计是上次加了参数后...
参数设置为ON,每个InnoDB 表数据存储在/ibd为后缀的文件 从 MySQL 5.6.6 版本开始,它的默认值就是 ON 了 2.数据删除流程 索引在InnoDB里的数据是用B+树存储的。 当我们删除R4这个记录,InnoDB引擎会把R4,标记为...
这几天喻名堂在学习mysql数据库的优化并在自己的服务器上进行设置,喻名堂主要学习了MyISAM和InnoDB两种引擎的优化方法,它们各有优缺点,一般在实际应用中将两种引擎结合起来使用效果会更好。喻名堂测试的硬件配置...
也就是:innodb_buffer_pool_size + innodb_log_buffer_size + thread_cache_size +table_open_cache + table_definition_cache +key_buffer_size + max_connections *( thread_stack+ sort_buffer_size+join_...
1. 这个参数设置为OFF表示的是,表的数据放在系统共享表空间,也就是跟数据字典放在一 2. 这个参数设置为ON表示的是,每个InnoDB表数据存储在一个以 .
MySQL常用存储引擎之MyISAM 特性: 1、并发性与锁级别 2、表损坏修复 check table tablename repair table tablename 3、MyISAM表支持的索引类型 ...MySQL常用存储引擎之Innodb Innodb存储引擎的特征 1、In
InnoDB Buffer Pool,可以说是 InnoDB 系统内部最重要的模块之一。通过系统参数 innodb_buffer_pool_size,用户可以设置几 G,几十 G,乃至上百 G 的内存空间。那么,InnoDB 系统是如何管理这么大一片内存空间的呢?
# 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目); # 当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上 max_allowed...
现在有这么一个问题:当你执行一条insert...而从InnoDB 1.2.x版本开始,可以通过参数InnoDB_page_size将页的大小设置为4 K、8 K、16 K。若设置完成,则所有表中页的大小都为InnoDB_page_size,不可以对其再次进行修改
innodb_undo_directory:指定单独存放undo表空间的目录,默认为.(即datadir),可以设置相对路径或者绝对路径。该参数实例初始化之后虽然不可直接改动,但是可以通过先停库,修改配置文件,然后移动undo表空间文件...