MySQL锁
在 MySQL 中,常见的锁类型有以下几种:
1. 共享锁(Shared Lock,简称 S 锁):
也称为读锁,多个事务可以同时持有共享锁,用于读取数据,不会阻止其他事务获取共享锁,但会阻止其他事务获取排他锁。
2. 排他锁(Exclusive Lock,简称 X 锁):
也称为写锁,只有一个事务可以持有排他锁,用于修改数据,会阻止其他事务获取共享锁和排他锁。
3. 记录锁(Record Lock):
在 InnoDB 存储引擎中,为了保证事务的隔离性,会对查询结果集中的每一行都进行加锁,这种锁就称为记录锁。
4. 意向锁(Intention Lock):
在 InnoDB 存储引擎中,为了优化锁的竞争,引入了意向锁的概念。当事务在某一行数据上请求共享锁或排他锁时,InnoDB 会在表级别上自动获取相应的意向锁,表示该事务可能会在该表的某一行上获取相应的共享锁或排他锁。
5. 自增锁(Auto-Increment Lock):
在使用自增主键的表上插入新记录时,InnoDB 会对自增列进行加锁,以防止多个事务同时插入新记录导致主键冲突。
需要注意的是,锁的使用需要根据具体的业务需求和并发访问情况来进行优化,尽可能减少锁的持有时间和锁的粒度,避免死锁和长时间等待的情况。
posted on 2023-05-21 20:54 SuperGuoYa 阅读(199) 评论(0) 编辑 收藏 举报