美文网首页
MySQL之事务一致性,MVCC

MySQL之事务一致性,MVCC

作者: 上善若泪 | 来源:发表于2024-10-18 13:36 被阅读0次

1 MySQL事务

1.1 MySQL事务操作

MySQL事务控制语句:

  • 开启事务:START TRANSACTION 或者begin
  • 提交事务:COMMIT
  • 回滚事务:ROLLBACK
  • SET AUTOCOMMIT = 0关闭自动提交 | 1开启自动提交

MySQL事务隔离级别
查看事务隔离级别:

SHOW VARIABLES LIKE 'tx_isolation';

修改隔离级别:

  • 设置未提交读
    SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
  • 提交读
    SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
  • 可重复读
    SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
  • 可串行化
    SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;

附录:MySQL默认事务隔离级别是REPEATABLE_READ(读已提交)

参考spring事务管理机制

1.2 MySQL事务保证原子性

1.2.1 原子性介绍和保证

MySQL 作为一个关系型数据库,以最常见的 InnoDB引擎来说,是如何保证 ACID 的:

  • 原子性(Atomicity ) : 事务是最小的执行单位,不允许分割。原子性确保动作要么全部完成,要么完全不起作用;
    如何保证:
    通过undo logundo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子
  • 一致性(Consistency): 执行事务前后,数据保持一致;
    如何保证:
    数据备份、主备、主主、主从都离不开 Bin log,需要依靠 Bin log 来同步数据,保证数据一致性
  • 隔离性(Isolation): 并发访问数据库时,一个事务不被其他事务所干扰
    如何保证:
    通过给操作的对象加悲观锁或者乐观锁,MVCC(undo log)来保证,RC不满足隔离性,RR满足隔离性
  • 持久性(Durability): 一个事务被提交之后。对数据库中数据的改变是持久的,即使数据库发生故障。
    如何保证:
    是通过redo来保证的。

1.2.2 隔离性讲解

MVCC(Multi Version Concurrency Control)即多版本并发控制,一个行记录数据有多个版本对快照数据,这些快照数据在undo log中。
如果一个事务读取的行正在做DELELE或者UPDATE操作,读取操作不会等行上的锁释放,而是读取该行的快照版本。

相关文章

  • 从更新丢失案例说InnoDB多版本并发控制(MVCC)

    本文从一个Mysql丢失更新的案例入手,介绍InnoDB存储引擎的非锁定一致性读取,多版本并发控制MVCC,事务隔...

  • MySQL应用技术4 — 数据类型选择

    MySQL应用技术1 — MySQL架构简介MySQL应用技术2 — 事务简介MySQL应用技术3 — MVCC ...

  • mysql innodb高并发基础-MVCC

    mysql innodb能高效运行,支撑高并发原因就是基于MVCC实现。 本文仅是简单介绍下MVCC原理,介绍事务...

  • MySQL相关知识点

    MySQL(5)| 五分钟搞清楚 MVCC 机制MySQL (三) | 五分钟搞清楚MySQL事务隔离级别

  • mysql--事务,mvcc

    1、概念 1.1是什么 一个事务是一个连续的一组数据库操作,要么全部执行成功,要么全部不执行。 2.2可以解决的问...

  • MySQL事务和MVCC

    抄书做个记录。 定义 事务就是一组原子性的SQL查询,事务内的语句,要么全部执行,要么全部失败。 事务的特性 原子...

  • mysql事务、MVCC原理

    事务定义及四大特性事务是什么?就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部...

  • MySQL-事务&MVCC

    前置文章:一、MySQL-存储引擎[https://www.jianshu.com/p/495108c767bc]...

  • 数据库系列6-事务和锁

    MySQL利用MVCC(MVCC又是依据undo log实现的),在一个可重复读的事务执行过程中,读取到的数据都是...

  • MySQL——MVCC--多版本并发控制机制

    前言 以下的分析均在mysql的InnoDB引擎下。假设此时事务A与事务B同时执行。 一、定义: MVCC(Mul...

网友评论

      本文标题:MySQL之事务一致性,MVCC

      本文链接:https://www.haomeiwen.com/subject/itffrjtx.html