ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql 双一标准

2022-07-10 21:34:27  阅读:174  来源: 互联网

标签:binlog 事务 缓存 双一 sync 标准 提交 Mysql 磁盘


sync_binlog1=1
默认,sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。
如果sync_binlog>0,表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去。最安全的就是sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据。但是binlog虽然是顺序IO,但是设置sync_binlog=1,多个事务同时提交,同样很大的影响MySQL和IO性能。虽然可以通过group commit的补丁缓解,但是刷新的频率过高对IO的影响也非常大。对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。


innodb_flush_log_at_trx_commit=1
N=0 每隔⼀秒,把事务⽇志缓存区的数据写到⽇志⽂件中,以及把⽇志⽂件的数据刷新到磁盘上;
log buffer会每秒写⼊到⽇志⽂件并刷写(flush)到磁盘。但每次事务提交不会有任何影响,也就是 log buffer 的刷写操作和事务提交操作没有关系。在这种情况下,MySQL性能最好,但如果 mysqld 进程崩溃,通常会导致最后 1s 的⽇志丢失。
N=1 每个事务提交时候,把事务⽇志从缓存区写到⽇志⽂件中,并且刷新⽇志⽂件的数据到磁盘上;
当取值为 1 时,每次事务提交时,log buffer 会被写⼊到⽇志⽂件并刷写到磁盘。这也是默认值。这是最安全的配置,但由于每次事务都需要进⾏磁盘I/O,所以也最慢。
N=2 每事务提交的时候,把事务⽇志数据从缓存区写到⽇志⽂件中;每隔⼀秒,刷新⼀次⽇志⽂件,但不⼀定刷新到磁盘上,⽽是取决于操作系统的调度;
当取值为 2 时,每次事务提交会写⼊⽇志⽂件,但并不会⽴即刷写到磁盘,⽇志⽂件会每秒刷写⼀次到磁盘。这时如果 mysqld 进程崩溃,由于⽇志已经写⼊到系统缓存,所以并不会丢失数据;在操作系统崩溃的情况下,通常会导致最后 1s 的⽇志丢失。

标签:binlog,事务,缓存,双一,sync,标准,提交,Mysql,磁盘
来源: https://www.cnblogs.com/linuxmysql/p/16464111.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有