语句的解析:
数据库中SelectForupdate语句又称排他锁,排他锁的申请前提是没有线程对该结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞,该语句仅适用于InnoDB,且必须在事务块中才能生效,在进行事务操作时,MySQL会对查询结果集中每行数据都添加排他锁,其他线程对该记录的更新与删除操作都会阻塞,排他锁包含行锁,表锁。
InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁,由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,会出现锁冲突,当表有多个索引的时,不同的事务可以使用不同的索引锁定不同的行,无论是使用主键索引,唯一索引或普通索引,InnoDB都会使用行锁来对数据加锁。
转载请注明出处育才学习网 » 数据库中SelectForupdate语句的解析