数据库锁的基本概念

锁等待:当一个事务在特定数据(例如,行、表……)上持有锁时,只有当该事务终止并释放锁,其他事务才能对加锁的数据资源进行访问(根据锁类型,访问权限有所不同),其他事务等待锁的过程,称为锁等待。

锁超时:锁等待时,将阻碍其它事务的执行,可以通过配置锁超时值,在指定的时间间隔内,若等待的事务还未获得锁,则该事务会回滚当前请求,这就是锁超时。

死锁:两个或多个事务对锁的循环争用,称为死锁,例如,

死锁

如上图,

事务A的第一条语句修改表t1的第一行,系统为当前行加排他锁,其他事务将访问不到当前行,

而另一事务B正好此时对表t2的第一行执行修改操作,为t2的行加排他锁,

紧接着,事务A访问表t2,进入锁等待,

事务B又访问t1,也进入锁等待,

这样,就造成了两个事务对锁的循环争用,于是就产生了死锁。

猜你喜欢

转载自singo107.iteye.com/blog/1441305