美文网首页
Mysql事务隔离级别

Mysql事务隔离级别

作者: 平头哥_ | 来源:发表于2019-03-24 19:54 被阅读0次

1.事务的ACID特性

原子性(Atomicity):要么全部完成,要么全部取消,不存在执行一半的情况,即使跑了十个小时,报错了也要回滚

 一致性(Consistency):事务操作成功后,不会被破坏,和业务规则一致

 隔离性(Isolation):事务之间互不干扰,各自独立,可以让多个线程并发访问数据库

 持久性(Durability):数据必须持久化到数据库(磁盘)上,已提交的事务,即使因为数据库崩溃,重启时也能够根据日志对未持久化的数据进行重执行

2.read uncommitted(读取未提交的数据)

多个事务中,可以读取到其他事务还未commit的数据,是所有隔离级别中最低的一种。比如 a= 1000, 事务A:update t set a = a + 200; 事务B,select a from t ,那么事务B结果为1200

有什么问题?

1. 脏读,读取到还未改变的数据,侧重点在其他事务未提交

2. 不可重复读,在一个事务中,重复相同的查询,有可能得到两次不同的结果。不可重复读侧重点在于更新修改数据,在一个事务中,查询相同范围的数据,同一个资源数据莫名被修改了

3. 幻读,表象和不可重复读差不多,都是一个事务得到不同的结果。要区分的话,幻读的侧重点在于新增和删除。在一个事务,相同的范围查询中,莫名多了或少了一些数据。必要条件有两个:1.insert/delete操作 2.范围查询

侧重于读写,在插入(写)事先检测(读)不存在的数据时,惊奇的发现数据已经存在了,之前检测读的结果如幻想一样。第一次select是读取,第二次的 insert 其实也属于隐式的读取,(插入时要先读取一下数据是否存在)

3.read committed(读取已提交的数据)

大多数数据库默认的级别。

只可以读到其他事务提交的数据。

有什么问题?

1. *不可重复读*

2. 幻读

4.repeatable read(可重复读)——Mysql的默认隔离级别

当前的事务可以重复读,同一个查询,每次查询的结果都相同,而不管其他事务有没有提交。

有什么问题?

1. 幻读,在一个范围查询中,其他事务进行了insert或delete操作,两次查询前后结果不一致

默认mysql的rr级别是行级锁,只会对作用行加锁,因此可以新增和删除,所以幻读的情况时针对insert和delete操作

Mysql InnoDB 的RR级别会对范围加上GAP锁,理论上不会存在幻读,这个加锁度使用的机制是next-key locks.

5.serializable(串行化)

所有事务的写操作都会串行执行,这是隔离级别中最严格的,会对性能造成影响

相关文章

  • 聊聊MySQL的隔离级别

    原文:聊聊MySQL的隔离级别 | MySQL隔离级别原理参考:oracle - mysql - 数据库事务隔离级...

  • mysql事务隔离级别的实现原理

    mysql事务隔离级别的实现原理 mysql innodb中的四种事务隔离级别[https://www.jians...

  • MySQL 事务隔离级别解析和实战

    MySQL 事务隔离级别解析和实战 1、MySQL 隔离界别查看 查看回话隔离级别 查看系统隔离级别 2、MySQ...

  • Mysql事务

    1) mysql事务的ACID特性 2)MySQL事务隔离级别

  • mysql隔离级别

    一、MySQL事务隔离级别 mysql默认的事务隔离级别为repeatable-read(可重复读) 1.未提交可...

  • Mac系统mysql设置事务隔离级别

    Mac系统mysql设置事务隔离级别 MySQL数据库事务隔离级别主要有四种: Serializable 串行化,...

  • 数据库事务相关

    事务隔离级别(tx_isolation)mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbo...

  • MYSQL事务

    常用语句 MYSQL事务,锁表 事务控制语句 事务的隔离级别 隔离级别描述产生风险READUNCOMMITTED ...

  • 面试官:说一下MySQL事务隔离级别?

    MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种: READ...

  • mysql笔记

    mysql笔记 查看事务隔离级别 show variables like '%iso%'; 设置事务级别 mysq...

网友评论

      本文标题:Mysql事务隔离级别

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