文章

《High Performance MySQL》翻译(3) 第一章 并发控制


并发控制

任何时刻当不止一个请求想要同时修改数据时候就产生了并发控制问题。从本章我们的观点来看,MySQL需要在两层关注这个问题:服务层和存储引擎层。并发控制是一个大话题,有很多相关的理论文献发表。所以,我们仅简介一下MySQL处理并发读写的方式。你将在本章的接下来的部分看到相关信息。

我们以Unix系统上的电子邮箱为例。传统的邮箱文件格式非常简单。邮箱中的所有信息是一个接一个的连接在一起的。因此读取和解析邮件信息都非常简单。邮件发送也非常简单:仅仅是在文件结尾加上新的信息。

但是当两个进程同时给同一个邮箱发送邮件的时候将会发生什么?很显然这回损坏邮箱,在邮箱文件结尾产生两个交错的信息。好的邮件收发系统采用锁的方式避免这种损坏。当一个客户端在邮箱锁住的时候试图发送信息,则它必须等待直到它获取锁。

这种结构在实践的时候运行良好,但是却没有提供任何并发的支持。因为同一时刻只有一个进程可以修改邮箱,在大规模邮箱的情况下这会带来问题。

本文由作者按照 CC BY 4.0 进行授权