本文章地址:https://wutong.me/2016/04/29/mysql-transaction.html 转载请注明出处

今天有个朋友问了个数据不一致的问题,加强理解并记录一下。

READ UNCOMMITTED

读取未提交的

在当前事务中读取的记录中会出现其他事务未提交的数据,出现脏读现象,如果一个其中一个事务执行了写操作,则另一个事物不能写,除非前一个事务commit;

READ COMMITTED

读取已提交的

在当前事务中读取的记录中只会出现其他事务已经提交的记录,如果在当前事务中执行多次相同的select,那么有可能会出现不一致的记录,因为其他记录有可能插入了新的记录并提交,如果一个其中一个事务执行了写操作,则另一个事物不能写,除非前一个事务commit;

REPEATABLE READ

可重复读

在当前事务中自己所做的读、写都可以感知到,但是其他事务所做的写操作感知不到,比如当前事务增加了1条记录可以查询到,但是其他事务增加的记录当前事务中是查不到的

SERIALIZABLE

可序列化的

在当前事务中做出的操作如果没提交的话,其他事务只能在当前事务提交之后才能执行