HoltYin

数据库事物隔离级别

事物隔离级别

未提交读

写事务阻止其他写事务,但是没有阻止其他读事务;

提交读

写事务会阻止其他读写事务。读事务不会阻止其他任何事务;

重复读

读事务会阻止其他写事务,但是不会阻止其他读事务;

可串行化

读加共享锁,写加排他锁;

可重复读、不可重复读区别

不可重复读(提交读)

只能看到提交后的数据;在事物A中第一次读取某行记录后,事物B对该行数据进行了修改并提交,这时事物A再次读取该行记录会发现与第一次读取到的该行记录不同

可重复读(重复读)

在事物A开启时,该事物所影响的记录将会被全部锁定,所以其它事物不能对这些记录进行操作,所以在事物A中多次读取相同的记录,得到的结果相同

脏读、虚读、幻读区别

脏读

事务可以读取未提交的数据

虚读

会在不可重复读隔离级别中出现,即同一事物两次读取同一行记录,但是数据不同(因为数据被其它事物修改了)

幻读

会在可重复读隔离级别中出现,可重复读阻止的写事务包括update和delete(只给存在的表加上了锁),但是不包括insert,所以同一条SQL语句查询的结果可能会多。

共享锁、排它锁区别

共享锁(读锁)

读锁是共享的,或者说是相互不阻塞的

排它锁(写锁)

写锁则是排他的,也就是说一个写锁会阻塞其它的写锁和读锁。

热评文章