今天有个朋友问了个数据不一致的问题,加强理解并记录一下。
READ UNCOMMITTED
读取未提交的
在当前事务中读取的记录中会出现其他事务未提交的数据,出现脏读现象,如果一个其中一个事务执行了写操作,则另一个事物不能写,除非前一个事务commit;
READ COMMITTED
读取已提交的
在当前事务中读取的记录中只会出现其他事务已经提交的记录,如果在当前事务中执行多次相同的select,那么有可能会出现不一致的记录,因为其他记录有可能插入了新的记录并提交,如果一个其中一个事务执行了写操作,则另一个事物不能写,除非前一个事务commit;
REPEATABLE READ
可重复读
在当前事务中自己所做的读、写都可以感知到,但是其他事务所做的写操作感知不到,比如当前事务增加了1条记录可以查询到,但是其他事务增加的记录当前事务中是查不到的
SERIALIZABLE
可序列化的
在当前事务中做出的操作如果没提交的话,其他事务只能在当前事务提交之后才能执行