mysql 系列(3)-事务与MVCC

事务 mysql 系列(3)-事务与MVCC
文章图片

  • 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。
  • 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如 A 向 B 转账,不可能 A 扣了钱,B 却没收到。
  • 隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
  • 持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
    查看和更改事务隔离级别修改隔离级别语句格式是:set [作用域] transaction isolation level [事务隔离级别]。其中作用域可选:SESSION(会话)、GLOBAL(全局)
Your MySQL connection id is 19 Server version: 5.7.34 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help; ' or '\h' for help. Type '\c' to clear the current input statement.mysql> SELECT @@transaction_isolation; +-------------------------+ | @@transaction_isolation | +-------------------------+ | REPEATABLE-READ| +-------------------------+ 1 row in set (0.00 sec)mysql> set session transaction isolation level read committed; Query OK, 0 rows affected (0.00 sec)mysql> SELECT @@transaction_isolation; +-------------------------+ | @@transaction_isolation | +-------------------------+ | READ-COMMITTED| +-------------------------+ 1 row in set (0.00 sec)mysql>

下图按照时间执行两个事务
create table T(c int) engine=InnoDB;
insert into T(c) values(1);
mysql 系列(3)-事务与MVCC
文章图片

隔离级别
  1. 读未提交: V1=2,V2=2,V3=2
  2. 读提交: V1=1,V2=2,V3=2
  3. 可重复读: V1=1,V2=1,V3=2
  4. 串行化: V1=1,V2=1,V3=2
    串行化则在事务 B 执行“将 1 改成 2”的时候,会被锁住。直到事 务 A 提交后,事务 B 才可以继续执行
【mysql 系列(3)-事务与MVCC】在实现上,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准。
在“可重复 读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都用这个视图。
在“读提交”隔离级别下,这个视图是在每个 SQL 语句开始执行的时候创建的。
在“读未提交”隔离级别下直接返回记录上的最新值,没有视图概念;
而“串行 化”隔离级别下直接用加锁的方式来避免并行访问。
MVCC构成
  1. 隐藏字段:
    DB_TRX_ID 创建这条记录的事务id或者最后一次修改的事务id
    DB_ROLL_PTR 回滚指针, 指向这条记录的上一个版本
    DB_ROW_ID 隐藏主键, 如果没有主键,会生成一个6字节的row_id
  2. undo log
    快照读 读历史
    mysql 系列(3)-事务与MVCC
    文章图片
  3. reaview
    mysql 系列(3)-事务与MVCC
    文章图片

    mysql 系列(3)-事务与MVCC
    文章图片

    推荐阅读