mysql 数据库管理员 参数设置innodb_flush_log_at_trx_commit ,innodb log buffer数据是否实时更新到硬盘和redo log

好的,以下是用表格的方式对innodb_flush_log_at_trx_commit的不同取值进行对比:

innodb_flush_log_at_trx_commit描述优点缺点
0每隔1秒把 log buffer 刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。速度快不太安全,mysqld 进程的崩溃会导致上一秒钟所有事务数据的丢失。
1在每次事务提交的时候,都把 log buffer 刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。最安全对 IO 的要求高,如果底层的硬件提供的 IOPS 比较差,那么 MySQL 数据库的并发很快就会由于硬件 IO 的问题而无法提升。
2在每次事务提交的时候会把 log buffer 刷到文件系统中去,但并不会立即刷写到磁盘。较快且安全,只有在数据库所在的主机操作系统损坏或者突然掉电的情况下,数据库的事务数据可能丢失1秒之类的事务数据。减少了事务数据丢失的概率,而对底层硬件的 IO 要求也没有那么高(log buffer 写到文件系统中,一般只是从 log buffer 的内存转移到文件系统的内存缓存中,对底层 IO 没有压力)。可能丢失1秒的事务数据。

innodb_flush_log_at_commit 是 MySQL 中InnoDB 存储引擎的一个参数,用于控制日志刷新到磁盘的策略。

它的取值可以是以下几个:

  1. 0:日志会每秒刷新到磁盘。
  2. 1:在每次事务提交时刷新日志到磁盘。
  3. 2:在每次事务提交时刷新日志到磁盘,但不是立即执行,而是可能会延迟。

选项 2  性能 介于0和1 之间

设置该参数的意义在于:

  1. 数据的完整性和可靠性:确保事务的日志及时写入磁盘,以便在系统崩溃或故障时能够正确恢复数据。
  2. 性能优化:在保证可靠性的前提下,选择合适的刷新策略以平衡写入性能和磁盘 I/O。

一般来说,常见的设置是 1 ,即在每次事务提交时刷新日志到磁盘,以保证数据的完整性和可靠性。但在某些对性能要求较高的场景下,可以考虑设置为 2 进行适当的优化。

需要注意的是,更改此参数可能会影响数据库的性能和可靠性,应根据具体的业务需求和系统环境进行评估和调整。

复制

实际应用中需根据具体情况选择合适的参数值。如需了解更多关于 MySQL 参数的内容,可继续向我提问。

复制

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值