1.2. 并发控制任何时候只要有多个查询语句想要改变同一条数据时并发控制的问题就出现了。根据这一章的描述,MySQL在需要在两个层面来解决这个问题:服务器层面和存......
表锁定在一些特定情况下为了效率会有所不同。比如Read Local表锁定允许一些类型的并发写操作。另外写锁比读锁的优先级要高,因此一个写锁的请求将会被提前到锁队列的开头,即使有读者已经在队列开头了(写锁可以跨越读锁到锁队列开头,但是读锁不能跨越写锁)。
尽管存储引擎可以管理它们各自的锁,MySQL本身也用了很多高效的表级别的锁以应对各自情况。比如服务器为aleter table这种类型的语句使用了表级别的锁,而不管是什么存储引擎。
1.2.2.2. 行锁
可以提供最大并发性的锁类型是行锁(同时也是资源开销最大的一个)。InnoDB以及Falcon存储引擎以及其他一些引擎都提供了对行级别的锁的支持。行锁是在存储引擎而不是服务器上来实现的(如果你不知道MySQL的整个架构的话,可以去参考MySQL的逻辑架构图)。服务器对于在存储引擎中实现的锁是一无所知的,在本章的后续部分以及整本书中,你可以看到,存储引擎一般都以自己的方式来实现锁机制。
3/3 首页 上一页 1 2 3 |