首页 > 数据库 >mysql两阶段提交

mysql两阶段提交

时间:2022-12-07 17:08:34浏览次数:40  
标签:binlog log 1.2 cache 阶段 提交 mysql redo


1. log写入机制

1.1 binlog的写入机制

事务执行过程中, 先把日志写到binlog cache, 事务提交的时候, 再把binlog cache写到binlog文件中。

1.2 redo log的写入机制
1.2.1. 存在redo log buffer中, 物理上是在MySQL进程内存中;
1.2.2. 写到磁盘(write), 但是没有持久化(fsync), 物理上是在文件系统的page cache里面;
1.2.3. 持久化到磁盘, 对应的是hard disk。

2. mysql两阶段提交

2.1 简化版

时序上redo log先prepare, 再写binlog,最后再把redo log commit。

mysql两阶段提交_数据库


 

2.2 详细版

实际上, 写binlog是分成两步的:1. 先把binlog从binlog cache中写到磁盘上的binlog文件;2. 调用fsync持久化。

mysql两阶段提交_mysql_02


 

3. 两阶段提交的作用

3.1 保持数据一致。redo log和binlog都可以用于表示事务的提交状态, 而两阶段提交就是让这两个状态保持逻辑上的一致。

3.2 崩溃恢复 crash safe。数据库崩溃时可以正确恢复数据。

3.3 组提交机制, 可以大幅度降低磁盘的IOPS消耗。

标签:binlog,log,1.2,cache,阶段,提交,mysql,redo
From: https://blog.51cto.com/u_15905340/5919699

相关文章

  • Mysql GTID
    GTID的全称是GlobalTransactionIdentifier,也就是全局事务ID,是一个事务在提交的时候生成的,是这个事务的唯一标识。它由两部分组成,格式是:GTID=server_uuid:gno等价于,......
  • mysql 学习
    mysql学习解决冲突使用反引号对键进行标识键值对键``值''mysql能存储的数据类型INT整型DECIMAL浮点型VARCHAR(params)字符型BLOB二进制DATE日期TIMESTA......
  • mysql page_一文理解MySQL中的page页--转
    在介绍InnoDB中的页的时候,很有必要先让大家了解一下InnoDB中的存储结构从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间(tablespace),而表空......
  • c#中EntityFramework连接MySql数据示例 支持Update部分字段
    c#程序如果要连接数据库,以前使用的是ADO.Net,通过DataSet、DataTable、ExecuteNoQuery等方法完成,现在微软提供EntityFramework(其实已经提供很久了)组件实现。今天的主题就是......
  • 【mysql】误删除了自带的mysql数据库后该怎么恢复?
    前言如果mysql数据库系统自带的mysql数据库被误删了,应该如何恢复?其实操作方法比较简答,今天用实验的方式分享一下1、实验环境信息实验环境信息:mysql版本5.7......
  • Oracle迁移Mysql的sql语句修改需创建的function代码
    DELIMITER $$CREATE  FUNCTION `to_date`(in_str varchar(50), in_format varchar(50)) RETURNS datetime    DETERMINISTICBEGIN DECLARE my_format ......
  • MySQL8.0的caching_sha2_password问题
    问题描述及分析安装MySQL8.0后,使用MySQLWorkbench登录时报以下错误分析及查找相关资料后,发现MySQL8.0采用了新的更安全的验证方式,详情请查看​​mysql-8-0-4-new-default-......
  • MYSQL之MHA高可用集群
    一、MySQLMHA介绍 MHA(MasterHighAvailability)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automatingmasterfailover功能。MHA在监控到maste......
  • Mysql复制原理
    复制采用异步方式,效率高。 ......
  • MySQL备份和恢复
    备份对于数据库至关重要,因为当数据库出现系统崩溃、硬件故障或者用户误删除数据时,可以利用备份进行恢复。另外,在升级MySQL之前进行备份也是一种必要的安全措施;而且备份还......