`
hpcn
  • 浏览: 28639 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

innodb的参数设置

阅读更多

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)相一致。

分享到:
评论

相关推荐

    mysql innodb 性能优化

    默认情况下,innodb的参数设置的非常小,在生产环境中远远不够用

    InnoDB存储引擎中有页(Page)的概念

    InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小: mysql> show variables like 'innodb_page_size'; 而系统一个磁盘块的...

    可以改善mysql性能的InnoDB配置参数

    而由于InnoDB是一个健壮的事务型存储引擎,已经有10多年的历史,一些重量级的...推荐此参数至少设置为2MB,实际上,是需要根据项目的InnoDB表的数目相应地增加 2.innodb_data_pool_size 此参数类似于MySQL的key_bu

    MySQL修改innodb_data_file_path参数的一些注意事项

    在测试环境下没有设置过多的详细参数就初始化并启动了服务,后期优化的过程中发现innodb_data_file_path设置过小: root@node1 14:59: [(none)]> show variables like '%innodb_data_file_path%'; +

    Mysql InnoDB删除数据后释放磁盘空间的方法

    Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每...如果没有设置这个参数,

    浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    Physical Structure of an InnoDB Index 所有的innodb索引都是btree索引,索引记录保存在叶子上,默认的索引页大小是16K。...Mysql5.6以后,可以通过innodb_page_size参数设置当前实例下每个索引页的大小,

    mysql参数及其优化

    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_...

    MySQL判别InnoDB表是独立表空间还是共享表空间的方法详解

    默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_...

    关于MySQL innodb_autoinc_lock_mode介绍

    innodb_autoinc_lock_mode这个参数控制着在向有auto_increment 列的表插入数据时,相关锁的行为; 通过对它的设置可以达到性能与安全(主从的数据一致性)的平衡 【0】我们先对insert做一下分类 首先insert大致上可以...

    mysql主从复制

    1>#skip-networking这个参数作用是是否允许远程访问,如果将#号去掉,将不能访问通过远程访问mysql 2> log-bin=mysql-bin数据库二进制日志 3> server-id = 1用于设置数据库的主从说明,主的是1,不允许id有重复号 4>...

    MYSQL无法启动提示: Default storage engine (InnoDB) is not available的解决方法

    引用 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 估计是上次加了参数后...

    MySQL学习笔记之为什么表数据删掉一半,表文件大小不变(十三)

    参数设置为ON,每个InnoDB 表数据存储在/ibd为后缀的文件 从 MySQL 5.6.6 版本开始,它的默认值就是 ON 了 2.数据删除流程 索引在InnoDB里的数据是用B+树存储的。 当我们删除R4这个记录,InnoDB引擎会把R4,标记为...

    MyISAM和InnoDB引擎优化分析

    这几天喻名堂在学习mysql数据库的优化并在自己的服务器上进行设置,喻名堂主要学习了MyISAM和InnoDB两种引擎的优化方法,它们各有优缺点,一般在实际应用中将两种引擎结合起来使用效果会更好。喻名堂测试的硬件配置...

    MySQL8.0内存相关参数总结

    也就是: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_...

    13.为什么表数据删掉一半,表文件大小不变?1

    1. 这个参数设置为OFF表示的是,表的数据放在系统共享表空间,也就是跟数据字典放在一 2. 这个参数设置为ON表示的是,每个InnoDB表数据存储在一个以 .

    MySQL的常见存储引擎介绍与参数设置调优

    MySQL常用存储引擎之MyISAM 特性: 1、并发性与锁级别 2、表损坏修复 check table tablename repair table tablename 3、MyISAM表支持的索引类型 ...MySQL常用存储引擎之Innodb Innodb存储引擎的特征 1、In

    InnoDBBufferPool管理调研_何登成

    InnoDB Buffer Pool,可以说是 InnoDB 系统内部最重要的模块之一。通过系统参数 innodb_buffer_pool_size,用户可以设置几 G,几十 G,乃至上百 G 的内存空间。那么,InnoDB 系统是如何管理这么大一片内存空间的呢?

    mysql数据库my.cnf配置文件

    # 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目); # 当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上 max_allowed...

    你插入MySQL的数据真的存到表里了么?

    现在有这么一个问题:当你执行一条insert...而从InnoDB 1.2.x版本开始,可以通过参数InnoDB_page_size将页的大小设置为4 K、8 K、16 K。若设置完成,则所有表中页的大小都为InnoDB_page_size,不可以对其再次进行修改

    Mysql在线回收undo表空间实战记录

    innodb_undo_directory:指定单独存放undo表空间的目录,默认为.(即datadir),可以设置相对路径或者绝对路径。该参数实例初始化之后虽然不可直接改动,但是可以通过先停库,修改配置文件,然后移动undo表空间文件...

Global site tag (gtag.js) - Google Analytics