前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL InnoDB 日志管理机制中的MTR和日志刷盘

MySQL InnoDB 日志管理机制中的MTR和日志刷盘

作者头像
星哥玩云
发布2022-08-17 17:12:37
7560
发布2022-08-17 17:12:37
举报
文章被收录于专栏:开源部署
1.MTR(mini-transaction) 

MySQL的 InnoDB日志管理机制中,有一个很重要的概念就是MTR。MTR是InnoDB存储擎中一个很重要的用来保证物理写的完整性和持久性的机制。

先看下MTR在MysQL架构中的位置。

MTR是上面的逻辑层与下面物理层的交互窗口,同时也是用来保证下层物理数据正确性、完整性及持久性的机制。

2.日志刷盘的触发条件

触发条件

描述

时间

线程默认每秒刷新一次。

空间

Log Buffer空间用完了

Check Point

checkPoint的时机较多,既有空间触发也有时间触发。主要分为  Sharp Checkpoint和Fuzzy Checkpoint

强一致事务要求

根据参数innodb_flush_log_at_trx_commit值不同,产生不同的行为。

3. innodb_flush_log_at_trx_commit简单介绍

参数解释

(部分内容个人理解,特别是我将log file 分为os cache 和 磁盘2种,更多内容还要求证。 )

0:每次事务提交时,根本不会去刷日志缓冲区。log buffer将每秒一次地写入到OS cache的log file中,并且log file的flush(刷到磁盘)上的Log Files操作同时进行。

1:每次事务提交时MySQL都会把log buffer的数据写入到OS cache的log file,并且flush(刷到磁盘)Log Files中去,该模式为系统默认。

2:每次事务提交时MySQL都会把log buffer的数据写入到OS cache的log file,但是flush(刷到磁盘)Log Files的操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

注意事项

当设置为0,该模式速度最快,但不太安全,这种设置是最危险的。如果此时运气不好,mysqld进程的崩溃,那么对数据库最新的更新都会丢失,即使事务已经提交了。但一般丢失的数据都是在一秒内产生的。

当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。 当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

 此参数可根据业务的可靠性要求进行调整,参数的选择对性能影响较大。

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

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

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

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

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