MySQL事务四大特性与隔离级别

一、四大特性

1、原子性

      每个事务都是一个整体不可再拆分

      事务中所有sql要么都执行成功、要么都执行失败

2、一致性

      事务在执行之前  数据库的状态,与事务执行之后的状态要保持一致      

3、隔离性

      事务与事务之间不应该相互影响,执行时要保证隔离状态

4、持久性

      一旦事务执行成功了,对数据的修改是持久的

二、隔离级别

     并发访问产生的问题

  • 脏读: 一个事务读取到另一个事务没有提交的数据
  • 不可重复读:一个事务中  两次读取的数据不一致
  • 幻读:一个事务读取了几行数据,另一个事务并发插入一些数据,在之后的查询中,第一个事务读到了一些原本不存在的数据

1、读取为提交(read uncommitted)

      可以防止问题:无

2、读取已提交(read committed)Oracle默认隔离级别

      可以防止问题:脏读

3、可重复读(repeatable read)MySQL默认隔离级别

      可防止问题:脏读、不可重复读

4、串行化(serializable)

      可防止问题:脏读、不可重复读、幻读

隔离级别从小到大安全性越来越高,但是效率越来越低

「查看隔离级别」

select @@tx_isolation; --查看当前隔离级别

「设置隔离级别」

set global transaction isolation level 隔离级别名称; --设置隔离级别

 

你可能感兴趣的:(mysql)