前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一面 - MySQL 的双一设置是什么?

每日一面 - MySQL 的双一设置是什么?

作者头像
干货满满张哈希
发布2021-04-12 12:15:37
5630
发布2021-04-12 12:15:37
举报
文章被收录于专栏:干货满满张哈希

问题参考自:https://www.zhihu.com/question/425704691/answer/1524724367 ,答案为个人原创

其实就是innodb_flush_log_at_trx_commitsync_binlog两个参数设置,都设置为 1 就是双 1 设置。MySQL 默认配置就是双 1 配置

innodb_flush_log_at_trx_commitinnodb 引擎的配置,sync_binlog 是 MySQL 引擎上层的配置,都是控制磁盘写入策略。

MySQL innoDB引擎在事务 commit 之后:

  1. binlog 写内存
  2. redo log 写内存
  3. 根据这两个配置决定这两个日志是否刷盘(调用fsync
  4. commit完成

innodb_flush_log_at_trx_commit:redo log 的刷盘策略,默认为 1

  • 如果innodb_flush_log_at_trx_commit设置为 0:log buffer将每秒一次地写入log file中,并且log fileflush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作;
  • 如果innodb_flush_log_at_trx_commit设置为 1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去;
  • 如果innodb_flush_log_at_trx_commit设置为 2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

sync_binlog:binlog 的刷盘策略,默认为0

  • 如果为 0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log
  • sync_binlog = N (N>0),MySQL 在每写 N 次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档