数据库隔离级别种类:
读未提交(会产生脏读、不可重复读、幻读)、
读已提交(会产生不可重复读、幻读)、
可重复读(可能会有幻读)、
串行化(最安全的)
数据库每种隔离级别中可能产生的问题:
脏读:事务读到了不属于自己的数据
不可重复读:对于同一条数据库数据,同一个事务内两次读的结果不一致
幻读:是指同一个事务内两次读取到的结果数量不一致
详解:
读未提交:如果事务A进行了写操作,那么事务B就不能进行写操作,但是
可以读取此行数据,数据库通过“排他写锁”实现。就是事务B可以读
取事务A未提交的数据。
读已提交:如果事务A是一个读操作,那么事务B是允许进行读写的,如果
事务A是一个写操作,那么其他事务就不能对该行数据进行任何操
作。当事务A第一次读取数据后,由于事务B可以进行读写,事务B读
数据进行了修改,那事务A再次读取时,数据就发生了变化,出现了
不可重复读,也会出现幻读。
可重复读:意思是在一个事务内,多次读取同一个数据,结果都是一样
的。事务A如果是读操作,其他事务就不能对该行数据进行update操
作,但是可以读。这样就避免了出现不可重复读的情况,因为该情况
正是因为两次读取间数据被修改。但是不可避免幻读,因为幻读是
insert或者delete操作产生的。
串行化:所有事务排队执行。