1. 程式人生 > >《High Performance MySQL》翻譯(3) 第一章 併發控制

《High Performance MySQL》翻譯(3) 第一章 併發控制


併發控制

任何時刻當不止一個請求想要同時修改資料時候就產生了併發控制問題。從本章我們的觀點來看,MySQL需要在兩層關注這個問題:服務層和儲存引擎層。併發控制是一個大話題,有很多相關的理論文獻發表。所以,我們僅簡介一下MySQL處理併發讀寫的方式。你將在本章的接下來的部分看到相關資訊。

我們以Unix系統上的電子郵箱為例。傳統的郵箱檔案格式非常簡單。郵箱中的所有資訊是一個接一個的連線在一起的。因此讀取和解析郵件資訊都非常簡單。郵件傳送也非常簡單:僅僅是在檔案結尾加上新的資訊。

但是當兩個程序同時給同一個郵箱傳送郵件的時候將會發生什麼?很顯然這回損壞郵箱,在郵箱檔案結尾產生兩個交錯的資訊。好的郵件收發系統採用鎖的方式避免這種損壞。當一個客戶端在郵箱鎖住的時候試圖傳送資訊,則它必須等待直到它獲取鎖。

這種結構在實踐的時候執行良好,但是卻沒有提供任何併發的支援。因為同一時刻只有一個程序可以修改郵箱,在大規模郵箱的情況下這會帶來問題。