MySQL 事务隔离级别

MySQL 的 InnoDB 引擎支持四种事务隔离级别

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

默认隔离级别是 REPEATABLE READ

要修改隔离级别,可使用 SET TRANSACTION 命令在某次连接上修改,要设置服务器的隔离级别,可使用 --transaction-isolation 选项或修改配置文件,参考 Section 13.3.6, “SET TRANSACTION Syntax”

  • REPEATABLE READ (可重复读)

这是 InnoDB 引擎的默认隔离级别,指在一个事务中,在同一个事务内的查询都是事务开始时刻一致的,一致性读会读取第一次查询建立的快照,所以多次相同的查询会获得相同的结果。会产生幻读问题,但 InnoDB 通过行锁和间隙锁 (Gap Locks) 解决了这个问题。

  • READ COMMITTED (读提交)

一个事务只能看到其他事务的已经提交的更新,看不到未提交的更新,这是大多数数据库的默认隔离级别。会产生不可重复读问题。

  • READ UNCOMMITTED (读未提交)

一个事务可以读到其他事务没有提交的更新。会产生脏读问题。

  • SERIALIZABLE (序列化)

一个事务执行的时候其他事务不能够对被读的行进行写操作。这是事务隔离的最高级别,但效率很低。

MySQL 事务隔离的实现依赖于数据库的锁和 MVCC(多版本并发控制)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值