MySQL(锁篇)- 全局锁、表锁、行锁(记录锁、间隙锁、临键锁、插入意向锁)、意向锁、SQL加锁分析、死锁产生原因与排查
    		       		warning:
    		            这篇文章距离上次修改已过454天,其中的内容可能已经有所变动。
    		        
        		                
                在MySQL中,锁是用来控制不同事务对数据库中同一资源的并发访问,保证数据一致性和完整性的一种手段。常见的锁包括:
- 全局锁:锁定整个数据库实例,通常用于备份。
 - 表锁:针对数据库表的锁。
 - 行锁(记录锁、间隙锁、临键锁、插入意向锁):针对数据行的锁。
 - 意向锁:事务在获取表级别的锁前,会先检查是否有意向锁,以避免与表级别的锁冲突。
 
以下是各种锁的简单描述和使用场景:
全局锁:
用于做全库备份。
FLUSH TABLES WITH READ LOCK;表锁:
用于ALTER TABLE等DDL操作时,避免其他事务对表结构进行修改。
LOCK TABLES table_name READ;  -- 只读锁
LOCK TABLES table_name WRITE; -- 写锁- 行锁:
 - 记录锁:锁定单个行。
 - 间隙锁:锁定一个范围,但不包含行本身。
 - 临键锁:锁定一个范围内的记录,但不包含该范围内的间隙。
 - 插入意向锁:在插入新行前加锁,避免冲突。
 
意向锁通常用于事务在获取表级别锁前,进行检查,以避免与表级别的锁冲突。
注意:锁是一种内部管理机制,通常不需要手动操作,数据库通常会在需要时自动加锁。开发者应该了解这些锁的概念和使用场景,以便更好地理解数据库并发控制机制。
评论已关闭