高性能MySQL(第3版)筆記 1.2 併發控制

1.2.1 讀寫鎖

在處理併發讀或者寫時,可以通過實現一個由兩種類型的鎖組成鎖系統來解決問題
共享鎖(shared lock), 也叫讀鎖(read lock),排他鎖(exclusive lock),也叫寫鎖(write lock)。
讀鎖:共享,互不阻塞,多個客戶在同一時刻可以同時讀取同一個資源而互不干擾
寫鎖:排他,會阻塞其他的寫鎖和讀鎖
寫鎖比讀鎖由更高的優先級,因此一個寫鎖請求可能會被插入到讀鎖隊列的前面。

1.2.2 鎖粒度

鎖粒度也就是鎖的範圍,分爲表鎖行級鎖

表鎖:

MySQL最基本的鎖策略,並且是開銷最小的策略,它會鎖定整張表,一個用戶在對錶進行寫操作(insert、delete、update等)前,需要首先獲得寫鎖,這回阻塞其他用戶對該張表的所有讀寫操作。在特定的場景中,表鎖也可能有良好的性能。例如READ LOCAL表鎖支持某些類型的併發寫操作。
儘管存儲引擎可以管理自己的鎖,MySQL本身還是會使用各種有效的表鎖來實現不同的目的。禮物,服務器會爲諸如ALTER TABLE之類的語句使用表鎖,而忽略引擎的鎖機制

行級鎖

行級鎖可以最大成都第支持併發處理,同時也帶來了最大的鎖開銷。在InnoDB和XtraDB以及其他一些存儲引擎中實現了行級鎖。行級鎖只在存儲引擎中實現,MySQL服務器層沒有實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章