1.排它锁(写锁)
for update 当一个事务没有完成时, 其他的事务对该数据只有读取操作不能更新操作。
例子:select * from user where id = 1 for update
InnoDB默认是行级别的锁,当有明确指定的主键时候,是行级锁。否则是表级别。所以高并发情况下我感觉一般是给指定的主键 进行行级别的锁。
for update 其他的事务会被阻塞,等待当前事务执行完成。
for update nowait 其他的事务会被拒绝。
2.共享锁(读锁)
lock in share mode
例子:select * from user where id = 1 lock in share mode
排它锁与共享锁不可以使用在同一个资源上