行锁
MySQL的行锁又分为共享锁(S锁)和排他锁(X锁)。
排他锁(exclusive lock)又称为写锁或X锁,它禁止其他session对同一资源进行修改。当一个session在某个资源上持有排他锁时,其他session既不能读取也不能修改该资源。排他锁主要用于防止数据的脏读和丢失更新问题,确保在同一时间只有一个session可以对数据进行修改。排他锁通常用在以下场景:
-
更新操作:当session需要对数据进行更新操作时,它会在数据上添加排他锁,以防止其他session在同一时间修改相同的数据,从而避免丢失更新问题。
-
删除操作:当session需要删除数据时,它会在数据上添加排他锁,以防止其他session在同一时间修改或读取正在删除的数据。
-
选择性更新:当session需要根据条件选择性地更新数据时,即使没有明确指定排他锁,MySQL也会自动添加排他锁,以确保在同一时间只有一个session可以执行更新操作。
共享锁(sharedlock)又称为读锁或S锁,它允许多个session同时读取同一资源,但禁止其他session对该资源进行修改。共享锁主要用于防止数据的脏读问题,确保多个session可以在同一时间读取相同的数据,而无需担心数据被其他session修改。共享锁通常用在以下场景:
-
查询操作:当session只需要读取数据而不进行任何修改时,它会在数据上添加共享锁,以防止其他