隔离级别
事务的隔离级别是指多个事务同时执行时,各自的操作对其他事务是否可见以及是否会相互影响的程度。常见的事务隔离级别有四种,分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
- 读未提交(Read Uncommitted)在该隔离级别下,一个事务可以读取另一个事务还未提交的数据,可能会发生脏读(Dirty Read)问题。因为其他事务对数据的修改可以立即对本事务可见,而且可能会被回滚,这种级别的隔离性非常低。
- 读已提交(Read Committed)在该隔离级别下,一个事务只能读取已经提交的数据,不能读取其他事务还未提交的数据,可以避免脏读的问题。但是由于其他事务对数据进行的修改,需要等到其提交之后才能对本事务可见,因此可能会出现不可重复读(Non-repeatable Read)问题。
- 可重复读(Repeatable Read)在该隔离级别下,一个事务在执行期间多次读取同一个数据时,得到的结果都是一样的。其他事务对数据的修改只有在本事务提交之后才会对本事务可见。这种隔离级别可以避免不可重复读的问题。
- 串行化(Serializable)在该隔离级别下,多个事务串行执行,相当于将并发执行的事务序列化,可以避免脏读、不可重复读和幻读(Phantom Read)