`
hpcn
  • 浏览: 29155 次
  • 性别: 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 参数详解与优化实践

    - **应用场景**:在操作系统支持大文件的情况下,可以通过此参数设置单个数据文件的大小超过4GB,以满足大数据量需求。 - **示例配置**: ```ini innodb_data_home_dir = /data/innodb/ innodb_data_file_path = ...

    InnoDB性能优化参数详解.docx

    11. **innodb_log_files_in_group**:此参数用于设置日志文件组的数量,用于日志的循环写入,提高写入性能。推荐设置为3。 12. **innodb_log_group_home_dir**:定义InnoDB日志文件的存放目录。 优化这些参数需要...

    mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

    总之,解决“Error: Unknown storage engine 'InnoDB'”的关键在于确认InnoDB引擎的启用状态,修复可能损坏的数据文件,并确保MySQL配置文件中的InnoDB参数设置合理。在日常运维中,定期备份数据、理解和监控存储...

    mysql安装心得

    - InnoDB参数设置:InnoDB引擎是MySQL中的事务处理引擎,配置如`innodb_buffer_pool_size`、`innodb_log_file_size`等可以优化性能。 - 开启日志功能:启用二进制日志(`log-bin`)和错误日志(`general_log`),...

    mysql innodb 性能优化

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

    linux 集群 openx 高级配置

    4. **调整 InnoDB 参数设置** - InnoDB 存储引擎是 MySQL 默认的事务安全存储引擎,它的性能优化对于提高整个系统的性能至关重要。 - 例如,可以适当增加 `innodb_buffer_pool_size` 的大小,以确保更多的数据页被...

    MySql Innodb 引擎特性详解

    4. **高效缓存**:InnoDB支持数据和索引的缓存,通过调整配置文件中的`innodb_buffer_pool_size`参数可以显著提高缓存性能,减少磁盘I/O操作。 5. **支持分区和表空间**:InnoDB引擎支持数据分区和表空间管理,...

    实战mysql innodb 删除数据后释放磁盘

    InnoDB 删除数据后释放磁盘空间需要通过设置参数 innodb_file_per_table=1 和使用 OPTIMIZE TABLE 命令来实现。如果没有设置这个参数,那么需要将数据库导出,删除 InnoDB 数据库文件,然后再倒入。 此外,InnoDB ...

    XtraDB、InnoDB 内部结构示意图

    通常建议将innodb_buffer_pool_size设置为系统物理内存的60-80%。这个参数决定了InnoDB可以用来缓存数据和索引的内存大小。 2. InnoDB的页面缓存机制 内容中提到页面缓存是针对表和索引的。InnoDB通过ibdata1文件来...

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

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

    InnoDB: Hot Backup Manual

    此外,对于采用MySQL复制功能的应用来说,InnoDB热备份是设置新从库的理想方法。 执行ibbackup的基本命令格式为:`ibbackup my.cnf my2.cnf`。ibbackup的工作原理是读取`my.cnf`文件中关于`ibdata`和`ib_log`文件的...

    innodb插件mysql

    3. **配置MySQL**:在my.cnf配置文件中添加或修改相关参数,如启用InnoDB Plugin、设置数据文件路径等。 4. **启动MySQL**:重启MySQL服务以应用新的配置。 三、使用InnoDB Plugin的注意事项 1. **版本兼容性**:...

    InnoDB_Log_Structures

    在MySQL配置文件中,可以设置相关参数以调整日志行为: - `innodb_log_files_in_group`:日志组中重做日志文件的数量。 - `innodb_log_file_size`:每个重做日志文件的大小。 - `innodb_log_files_group`:用于指定...

    InnoDB 中文参考手册(CHM)

    通过《InnoDB 中文参考手册》,读者可以学习到如何有效地设计和管理InnoDB表,优化查询,配置存储参数,以及解决常见的性能问题。这是一份不可或缺的参考资料,无论你是数据库新手还是经验丰富的DBA,都能从中获益匪...

Global site tag (gtag.js) - Google Analytics