1.数据库并发产生的问题。(这里所说的事务就是普通意义的流程,跟数据库的事务不要关联起来)
1)脏读。一个事读取了一个仍然在另一个未提交事务的范畴内的数据。read committed级别可以避免。
2)不可重复读。一个事务中两次相同的查询却返回了不同的数据。这是因为一个事务在读,然后另一个事务修改了数据,这个事务再去读,发现两次数据不一致。
3)幻读。没有锁定所有读取的行。
4)丢失更新。
2.各种锁(解决这些问题)。
1)共享锁。用户在读取的时候其他用户可以读取,但是不能修改。select 的时候会加上共享锁。
2) 更新锁。防止死锁而设置。加上更新所的对象不能被修改,但是可以读取,这是更新之前的预备状态。
3)独占锁。
4)意向锁。
3.事务里面隔离级别(各种锁的应用)。
1)read uncommitted。可以读未提交的事务。这会出现脏读。
2)read committed。可以读已经提交的数据。避免了脏读,但是会出现不可重复读。
3)repeatable read。可以重复读。避免了脏读,不可重复读,但是会出现幻读。
4)serializable。序列化,序列化执行。
原文地址:http://www.cnblogs.com/wuMing-dj/p/3818686.html