事物隔离级别
未提交读
写事务阻止其他写事务,但是没有阻止其他读事务;
提交读
写事务会阻止其他读写事务。读事务不会阻止其他任何事务;
重复读
读事务会阻止其他写事务,但是不会阻止其他读事务;
可串行化
读加共享锁,写加排他锁;
可重复读、不可重复读区别
不可重复读(提交读)
只能看到提交后的数据;在事物A中第一次读取某行记录后,事物B对该行数据进行了修改并提交,这时事物A再次读取该行记录会发现与第一次读取到的该行记录不同
可重复读(重复读)
在事物A开启时,该事物所影响的记录将会被全部锁定,所以其它事物不能对这些记录进行操作,所以在事物A中多次读取相同的记录,得到的结果相同
脏读、虚读、幻读区别
脏读
事务可以读取未提交的数据
虚读
会在不可重复读隔离级别中出现,即同一事物两次读取同一行记录,但是数据不同(因为数据被其它事物修改了)
幻读
会在可重复读隔离级别中出现,可重复读阻止的写事务包括update和delete(只给存在的表加上了锁),但是不包括insert,所以同一条SQL语句查询的结果可能会多。
共享锁、排它锁区别
共享锁(读锁)
读锁是共享的,或者说是相互不阻塞的
排它锁(写锁)
写锁则是排他的,也就是说一个写锁会阻塞其它的写锁和读锁。