暂无图片
sync_binlog 参数
我来答
分享
地平线
2022-02-11
sync_binlog 参数
暂无图片 5M

innodb_flush_log_at_trx_commit  和 sync_binlog  这两个参数有啥区别?


设置sync_binlog=1 和innodb_flush_log_at_trx_commit =1 ,不都是事务提交后,把日志写到磁盘上吗?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新

第一个是 INNODB 刷新日志的方式 类似于ORACLE REDO LGWR行为控制.
第二个是 同步BINLOG方式

MYSQL和ORACLE 都不是事务提交后,把日志写到磁盘上的.

日志是记录数据变动,那怕事务还没有提交,还没有结束都要登记在日志里. 比如说 你某分某秒做了什么,至于你做完了,做的怎么样,还是中途而废都不关它的事.
日志只记录你的过程,不记录你的结果.类似时间样,只记录你干了什么.

所以这个时候 记录那么多,内存空间总是会满的,而且满得贼快.那么就要把内存的日志保存在磁盘上的REDO日志文件里.
ORACLE 是 满了1/3,每个3秒,DBWR开始写的激发条件.

MYSQL 的日志多了一层系统缓存,当MYSQL写日志的时候,一般先写到系统缓存里,然后由OS FLUSH操作去写日志文件.

为了避免系统缓存丢失日志的安全隐患,
innodb_flush_log_at_trx_commit 在事务提交时就刷人文件里面,就是写入文件这个动作之后立马调用系统去写文件.
sync_binlog=1 也表示不要经过系统缓存.

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
地平线

感谢 , 

innodb_flush_log_at_trx_commit 是控制 写redo log的,

 sync_binlog  是控制写binlog 文件的。


暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
页面上的实时搜索速度较慢(MySQL InnoDB)
回答 1
已采纳
把sql改写下,子查询提上去
MySQL用哪个图形化界面比较好?
回答 3
 workbench还可以带监控功能官方出品  dbeaver大而全也可以。
如果想让优化器首先访问T2,之后在关联T1。 可以通过下面哪种写法?
回答 1
已采纳
选BCD:Bselect/JOINORDER(t2,t1)/t1.namefromt2JOINt1ont1.idt2.id;Cselectt1.namefromt2STRAIGHTJOINt1ont1
100.07,100.00 这样的小数如何保存到mysql数据库中? 注意,必须保留小数点后面的数值存储,怎么做到?
回答 1
decimal(10,3)
MySQL LIMIT 如何改写成Oracle limit?
回答 1
已采纳
SELECTFROM(SELECTROWNUMRNFROM(SELECTFROMt)AWHEREROWNUM<115)WHERERN>100;这是12以前12以后SELECTFROMtOF
MySQL的约束有哪些?
回答 5
已采纳
NOTNULL:约束字段的内容一定不能为NULL。UNIQUE:约束字段唯一性,一个表允许有多个Unique约束。PRIMARYKEY:约束字段唯一,不可重复,一个表只允许存在一个。FOREIGNKE
欧拉22.02系统 mysql5.7 arm版本的安装包, 哪里能下载到?
回答 3
可以自己用源码编译一个
Mysql 安全设置,my.cnf设置
回答 2
已采纳
这两个参数是在线生效的,先setglobal 然后my.cnf里设置下,不需要重启。
mysql 远程连接时 ERROR 1043: Bad handshake,怎么排查处理?
回答 1
已采纳
可能与SSL有关。1)mysql是否启用了ssl,showvariableslike'%ssl%';2)应用端的jdbc配置,是否有useSSLfalse配置项。
MySQL数据文件能存放在不同的目录吗
回答 2
也可以看看这个https://www.modb.pro/db/100600