一、锁
锁是数据库用来控制共享资源并发访问的机制。锁用于保护正在被修改的数据,只到提交或回滚了事务之后,其他用户才可以更新数据。
1、锁的优点
- 一致性:一次只允许一个用户修改数据
- 完整性:为所有用户提供正确的数据。如果一个用户进行了修改并保存,所有的修改将反映给所有用户。
- 并行性:允许多个用户访问同一数据。一个用户修改表,其他用户可以查看,但不能修改
2、锁的类型
(1)行级锁
对正在修改的行进行锁定。其他用户可以访问其他未被修改的行。行级锁是一中排他锁,防止其他用户修改此行。
使用“INSERT”、“UPDATE”、“DELETE”、“SELECT … FOR UPDATE”语句时,会自动应用行级锁,使用“COMMIT”、“ROLLBACK”语句释放锁。“SELECT … FOR UPDATE”语句允许用户一次锁定多行进行更新。
(2)表级锁
锁定整个表,限制其他用户对表的访问。
使用表级锁的语法:
lock table 表名 in 锁类型 mode
表级锁的类型有如下5种,限制依次增多。
行共享(ROW SHARE):禁止其他用户使用排