MySQL问题:MySQL中主要的锁都有啥?
行锁分为记录锁、间隙锁、临键锁
Record Lock称为记录锁,锁住的是一条记录,记录锁分为S锁和X锁(读锁和写锁)
Gap Lock称为间隙锁,只存在于可重复读隔离级别,目的是解决幻读
间隙锁也存在X型和S型间隙锁,但间隙锁之间是兼容的
Next-Key Lock称为临键锁,是记录锁和间隙锁的结合,锁定一个范围,并且锁定记录本身,临键锁不是兼容的。
意向锁:作用是可以快速判断是否可以上锁,而不需要遍历表中的所有记录
比如:此时要上表级别的S锁,如果表上没有IX,就说明表中没有独占锁,直接上表级S锁。此时要上表级X锁,如果表上没有IX和IS,就说明表中记录都没加锁,直接上表级X
表级锁:对整个表加锁,其他事务无法对该表进行任何读写操作,适用于需要保证完整性的小型表
共享锁:允许多个事务并发读取同一资源,但不允许修改。只有在释放共享锁后,其他事务才能获得排它锁。
排他锁:只允许一个事务对资源进行读写,其他事务在获得排它锁之前无法访问该资源。