mysql数据库隔离级别缩写_MySQL 数据库隔离级别

SQL标准中定义了四种隔离级别,分别是READ UNCOMMITED 、READ COMMITED、 REPEATABLE READ和 SERIALIZABLE。

READ UNCOMMITED

未提交读,事务可以读取其他事务未提交的数据,被称为脏读。几乎很少会用到这种级别

READ COMMITED

提交读,除却MySQL的多数数据库默认事务隔离级别是READ COMMITED。这种级别下,事务只能看到其他事务已经提交的修改。解决了 脏读 问题,但有不可重复读的问题,即同一个事务多次执行同样的查询语句不一样,如在一个事务中,两次查询同一用户的剩余金额可能会不一样(由于另一个事务对该用户的金额进行了修改),这种问题被称为不可重复读。

REPEATABLE READ

可重复读,MySQL的默认事务隔离级别。这种隔离下的事务,避免了不可重复读的问题,即能够保证在同一个事务中,多次执行相同的查询的结果是一样的(当前事务的不对该记录修改的前提下)。但是存有幻读的问题,什么是幻读呢?一个事务查询某个范围的记录时,其他的事务在这个范围插入了新的记录,导致当前事务查询时会发现比之前查询多了一行记录,就像出现了幻觉一样,称为幻读。

SERIALIZABLE

可串行读,最高的隔离级别。所有的事务串行进行执行,会在读取的每一行数据都加上锁,可能导致大量的超时和锁争用。因为事务的串行执行,也就避免了幻读的问题。另外考虑到效率的问题,这种级别很少被使用。

需要注意的是以上只是SQL的标准,在实现中并不一定按照标准来,如Innodb引擎通过MVCC(多版本并发控制)在REPEATABLE READ级别解决了幻读的问题。

查看当前事务隔离级别命令: SELECT @@tx_isolation;

设置事务隔离级别的命令: SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值