数据库锁的基本概念
锁等待:当一个事务在特定数据(例如,行、表……)上持有锁时,只有当该事务终止并释放锁,其他事务才能对加锁的数据资源进行访问(根据锁类型,访问权限有所不同),其他事务等待锁的过程,称为锁等待。
锁超时:锁等待时,将阻碍其它事务的执行,可以通过配置锁超时值,在指定的时间间隔内,若等待的事务还未获得锁,则该事务会回滚当前请求,这就是锁超时。
死锁:两个或多个事务对锁的循环争用,称为死锁,例如,
如上图,
事务A的第一条语句修改表t1的第一行,系统为当前行加排他锁,其他事务将访问不到当前行,
而另一事务B正好此时对表t2的第一行执行修改操作,为t2的行加排他锁,
紧接着,事务A访问表t2,进入锁等待,
事务B又访问t1,也进入锁等待,
这样,就造成了两个事务对锁的循环争用,于是就产生了死锁。