首页 > 代码库 > sql锁 事务

sql锁 事务

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。序列化,序列化执行。