`

SQL事务处理点滴

 
阅读更多

脏         读:  一个事务对数据进行了修改,在还没提交时,另外一个事务却读取到了该数据;

不可重复读: 一个事务对数据的两次读取期间,另一个事务对该数据进行了修改,导制两次读取结果不一样;

幻         读: 一个事务对表中所有的数据进行修改操作,同时另外一个事务对表也进行修改并同时插入一条新的数据,这样第一个事务的用户发现还有一条数据没有修改,像发生了幻觉一样,因此称为幻读 

 

 

 ① 脏读(Dirty Reads)  一个事务读取了另一个并行事务还未提交的数据。(产生原因:读-写)
 ② 不可重复读(UnPrpeatable Read) 一个事务前后两次读取数据时,得到的数据不一致,被另一个已提交的事务修改。
 ③ 幻读(Phantom Read)  一个事务再次查询,记录中的量变化了。(仅对统计有影响)

 

为了避免以上三种情况的出现,则采用事务隔离级别:
  Transaction_none                不使用事务(不可能用,只是理论的)
  Transaction_read_uncommitted    可以读取未提交数据(允许脏读,也不可能)
  Transaction_read_committed      只读提交的数据:可防止脏读;大部分数据库的默认隔离级别
  Transaction_repeatable_read     重复读取;只可以避免脏读
  Transaction_serializable        事务串行化:可以避免脏读,重复读取和幻读,但会降低数据库效率(最常用)

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics