mysql myisam 默认隔离级别_MySQL的事务隔离级别

MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)

1) 读未提交(READ UNCOMMITTED)

另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)(隔离级别最低,并发性能高)。

2) 读已提交(READ COMMITTED)

本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果,这个也叫做不可重复读。

会出现不可重复读、幻读问题(锁定正在读取的行)。

3) 可重复读(REPEATABLE READ)  mysql默认的事务隔离级别

在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的,但是,会有幻读现象。会出幻读(锁定所读取的所有行)。

4) 串行化(SERIALIZABLE)

读操作会隐式获取共享锁,可以保证不同事务间的互斥(锁表)。

四个级别逐渐增强,每个级别解决一个问题。

1) 脏读。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据。

2) 不重复读。解决了脏读后,会遇到,同一个事务执行过程中,另外一个事务提交了新数据,那么本事务先后两次读到的数据结果会不一致。

3) 幻读。解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提交了新数据,本事务看不到另一个事物提交的数据。

MyISAM: 不支持事物,表级锁。

InnoDB: 事物级存储引擎,支持行锁,事物ACID特性。

大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。

隔离级别的设置只对当前链接有效。

设置数据库的隔离级别一定要是在开启事务之前。

事务隔离级别

脏读

不可重复读

幻读

读未提交(read-uncommitted)

读已提交(read-committed)

可重复读(repeatable-read)

串行化(serializable)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值