首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL架构(三)mysql的两阶段提交

    Mysql 的两阶段提交 在 MySQL架构(二)SQL 更新语句是如何执行的?...中说到了 redo log 和 binlog 日志文件,在事务执行过程中,会分两个阶段写入这两份日志文件中,这也是为了保证两份日志之间的一致性,即维护 mysql 的数据一致性。...接下来我们用 MySQL架构(二)SQL 更新语句是如何执行的?中的例子来看看这两种方式会存在什么问题。...两阶段过程异常崩溃处理 如果在两阶段提交的方式下,在 binlog 日志写完,事务在没有 commit 前,即 redo log 日志还没记录 commit 前,mysql 进程发生异常崩溃,MySQL...知道了两阶段提交流程后,我们再来看一下异常崩溃后,mysql 是如何恢复数据的。 若 redo log 日志里记录了完整的事务,即已经处于 commit 状态,则直接提交恢复。

    19710

    关于MySQL varchar类型最大值,原来一直都理解错了

    写在前面 关于MySQL varchar字段类型的最大值计算,也许我们一直都理解错误了,本文从问题出发,经实践验证得出一些实用经验,希望对大家的开发工作有些帮助~ 背景描述 最近同事在做技术方案设计时候...那问题来了:MySQL 数据库的varchar字段类型最大存储长度到底是多少?...问题分析 一切以官方文档为准,翻了下官方描述如下: In MySQL 4.1 the length is always 1 byte....大概意思就是说: 在MySQL 4.1以前,长度总是1个字节(varchar(20),指的是20字节) 在MySQL 5.0以后,长度可以是1字节(最多255个字节)或2个字节(256到65535) 按照官网说法最大值是...65535bytes,utf8mb4编码情况下每个字符占4个bytes,最大值应该为16383.75 65535/4=16383.75 实践验证 到此貌似已经有了结论了,但实际情况真的是这样的么?

    2.2K117

    MySQL的两个日志系统

    MySQL中有两个重要的日志模块,分别是redo log(重做日志)和binlog(归档日志)。...当我们学习MySQL的时候,这两部分内容是绕不开的,本文我将来详细的介绍一下这两个日志模块,它们在设计上有很多好玩的地方,一些思想也可以在我们工作中使用。...整体来看,分为两部分,一部是Server层,主要做的是MySQL功能层面的事情,还有一部分是引擎层,负责存储相关的具体事情。...这个地方为什么要有两份日志,还要从最开始的时候MySQL中没有InnoDB引擎说起,当时MySQL自带的引擎是MyISAM,但是M有ISAM没有crash-safe的能力,binlog日志只能用来归档,...两种日志主要的不同: redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用 redo log 是物理日志,记录的是“在某个数据页上做了什么修改

    69720

    MySQL的两个主要分支

    // MySQL的两个主要分支 // 今天说点儿概念性的东西,关于MySQL的两个最流行的分支,MariaDB和Percona Server,这两个分支其实都有自己的优缺点,这里简单介绍一下分支产生的原因...开始之前,我们首先截取一个当前数据库使用流行度的一个图,来简单分析下这两个分支现在的使用情况,图截取自DB-Engine网站: ?...(以下简称MW)主导开发,MariaDB选自她女儿的名字,2008年Sun公司用10亿美金收购了MySQL,但是由于各种原因,Sun公司又将MySQL转手卖给了Oracle,MW感到失去了对MySQL的控制权...在早期,MariaDB还可以作为MySQL的替代品,从MySQL到MariaDB切换应用程序的时候,不需要做任何改动,然后众多原因导致MariaDB这个分支比MySQL官网更新的更快一点,对内核的修改逐渐增多...3、Percona Server,这种数据库不支持跨平台,只支持Linux系统,而前两者都支持windows、OS X、Solaris等,这可能也是Percona Server数据库排名靠后的原因吧,但是

    1.9K10

    MySQL 为什么需要两阶段提交?

    小伙伴们知道,MySQL 中的事务是两阶段提交,我们见到的很多分布式事务也都是两阶段提交的,例如 Seata,那么为什么要两阶段提交呢?一次直接提交了不行吗?今天我们来聊聊这个话题。...什么是两阶段提交 1.1 binlog 与 redolog binlog binlog 我们中文一般称作归档日志,如果大家看过松哥之前发的 MySQL 主从搭建,应该对这个日志有印象,当我们搭建 MySQL...所以在 MySQL 中就存在两类日志 binlog 和 redo log,存在两类日志既有历史原因(InnoDB 最早不是 MySQL 官方存储引擎)也有技术原因,这个咱们以后再细聊。...1.2 两阶段提交 在 MySQL 中,两阶段提交的主角就是 binlog 和 redolog,我们来看一个两阶段提交的流程图: 从上图中可以看出,在最后提交事务的时候,有 3 个步骤: 写入 redo...由此可见,两阶段提交能够确保数据的一致性。 3. 小结 好啦,今天和小伙伴们简单聊了一下 MySQL 中的两阶段提交,有问题欢迎留言讨论。

    1.7K40
    领券