MySQL中常见的三种锁是共享锁(S锁)、排他锁(X锁)和意向锁(IS锁和IX锁)。
- 共享锁(S锁):
- 共享锁用于读取操作,多个事务可以同时持有共享锁,互不干扰。
- 共享锁防止其他事务获取排他锁,但允许其他事务获取共享锁。
- 共享锁不会阻塞其他事务的读操作,但会阻塞其他事务的写操作。
- 排他锁(X锁):
- 排他锁用于写操作,只有一个事务可以持有排他锁。
- 排他锁防止其他事务获取共享锁和排他锁。
- 排他锁会阻塞其他事务的读操作和写操作。
- 意向锁(IS锁和IX锁):
- 意向锁是一种辅助锁,用于表级别的锁定,它不是直接作用于数据行的锁。
- IS锁表示事务准备获取某个表的共享锁,防止其他事务获取该表的排他锁。
- IX锁表示事务准备获取某个表的排他锁,防止其他事务获取该表的共享锁和排他锁。
- 意向锁不会阻塞其他事务的读操作,但会阻塞其他事务的写操作。
这些锁可以根据事务的隔离级别来确定是否允许并发操作和数据的一致性。不同的锁可以用于不同的场景,以满足对数据一致性和并发性的需求。