7.3. 锁定事宜
7.3. 锁定事宜 7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.3.1. 锁定方法 MySQL 5.1 支持对 MyISAM 和 MEMORY 表进行表级锁 定,对 BDB 表进行页级锁定,对 InnoDB 表进行行级锁定。 在许多情况下,可以根据培训猜测应用程序使用哪类锁定类型最好,但一般很难说出某个给出的锁类型就比另一个好。一切取决于应用程序,应用程序的不同部分可 能需要不同的锁类型。 为了确定是否想要使用行级锁定的存储引擎,应看看应用程序做什么并且混合使用什么样的选择和更新语句。例如,大多数 Web 应 用程序执行许多选择,而很少进行删除,只对关键字的值进行更新,并且只插入少量具体的表。基本 MySQL MyISAM 设置已经调节得很好。 在 MySQL 中对于使用表级锁定的存储引擎,表锁定时不会死锁的。这通过总是在一个查询开始时立即请求所有必要的锁定并且 总是以同样的顺序锁定表来管理。 对 WRITE , MySQL 使 用的表锁定方法原理如下: 如果在表上没有锁,在它上面放一个写锁。 否则,把锁定请求放在写锁定队列中。 对 READ , MySQL 使用的锁定方法 原理如下: 如果在表上没有写锁定,把一个读锁定放在它上面。 否则,把锁请求放在读锁定队列中。 当一个锁定被释放时,锁定可被写锁定队列中的线程得到,然后是读锁定队列中的线程。 这意味着