MySQL数据库是不同的存储引擎支持不同的锁机制。MySQL数据库的存储引擎分为InnoDB存储引擎、BDB存储引擎和MyISAM 存储引擎三种,本章只对InnoDB存储引擎和MyISAM 存储引擎进行介绍。
一、MyISAM 存储引擎:
MyISAM 只支持表级锁,表级锁有两种,一种是表共享读锁(Table Read Lock),一种是表独占写锁(Table Write Lock)。MyISAM 无论是读请求锁还是写请求锁,都在队列中等待,先到先申请。但是写请求锁的优先级比读请求锁高,所以写请求锁往往优先执行。
二、InnoDB存储引擎:
1.共享锁(S):允许获得共享锁的事务读取数据,阻止其他事务对该数据集添加排他锁。使用SELECT...IN SHARE MODE 获得共享锁。
2.排他锁(X):允许获得排他锁的事务删除和修改数据,阻止其他事务对该数据集添加共享锁和排他锁。使用 SELECT...FOR UPDATE 方式获得排他锁。