MySQL 中的事务是通过行锁来实现的。当在事务内执行 SELECT 语句时,MySQL 会为被选中的行加上共享锁,这样其他事务就不能对这些行进行修改,但是可以对这些行执行 SELECT 操作。
如果在事务内执行 UPDATE 或 DELETE 语句,MySQL 会为被选中的行加上排他锁,这样其他事务就不能对这些行进行任何操作。
如果在事务内执行 INSERT 语句,MySQL 会在插入新行时为这些行加上排他锁,这样其他事务就不能对这些行进行任何操作。
MySQL 也支持表锁,但是一般不建议使用表锁,因为它会导致性能下降。表锁的方式有读锁和写锁,读锁允许其他事务读取被锁定的表,写锁则禁止其他事务对被锁定的表进行任何操作。
要在 MySQL 中加锁,可以使用 LOCK TABLE 语句,语法如下:
LOCK TABLE tbl_name [AS alias] lock_type [, tbl_name [AS alias] lock_type] ...