事务的隔离性以及隔离级别

当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性。

在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种问题:

1.脏读,在一个事务处理过程里读取了另一个未提交的事务中的数据。

2.不可重复读:在同一个事务中,重复执行相同的sql,查询到的结果却不同。这是由于在查询间隔,被另一个事务修改并提交了

3.幻读:一个事务在前后两次查同一个范围时,后一次查询看到了前一次查询没有看到的

四种隔离级别

1.读未提交(Read uncommitted):最低级别,以上问题均无法解决

2.读已提交(Read committed):可避免脏读

3.可重复读(repeatable-read):确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新,可避免脏读和不可重复读,仍会出现幻读。

4.串行化(Serializable ):最严格的事务隔离级别,要求所有事务被串行执行。可避免脏读,不可重复读,幻读。

 Mysql的事务隔离级别

Mysql默认的事务隔离级别是可重复读。但是我们在项目中Mysql一般用读已提交。

原文地址:https://www.cnblogs.com/chensisi/p/14119884.html