0
点赞
收藏
分享

微信扫一扫

mysql 保护级别

  • READ UNCOMMITTED (读未提交)
  • 事务的修改即使没有提交,对其他事务也是可见的。
  • 事务可以读取未提交的数据,这也被称为脏读(Dirty Read)
  • 从性能上来说,Read Uncommitted不会比其他级别高太多,但是却缺乏其他级别的很多好处,所以在实际应用中很少用
  • READ COMMITTED (读提交)
  • 大多数数据库的默认隔离级别(但MySQL不是)
  • 满足隔离性的简单定义:一个事务开始时,只能看见已经提交的事务所做的修改。也就是说,一个事务从开始到提交之前,所做的任何修改对其他事务都是不可见的
  • 这个隔离级别也被叫做不可重复读(nonrepeatable read),
  • REPEATABLE READ (可重复读)
  • 解决了脏读的问题,该级别保证同一个事务多次读取同行的记录结果是一样的。
  • 无法解决另一个幻读(Phantom Read)的问题,即某个事务A读取某部分数据时,另一个事务在这部分数据中插入了新的记录,当A再去读取该部分数据时,会产生幻行(Phantom Row)
  • InnoDB通过多版本并发控制来解决了幻读的问题
  • SERIALIZABLE (可串行化)
  • 是最高的隔离级别。通过强制事务串行化执行,避免了幻读问题
  • 简单说,会在读取的每行数据上都加锁,所以会导致大量的超时和锁争用的问题
举报

相关推荐

0 条评论