- 高性能MySQL(第4版)
- (美)Silvia Botros等
- 628字
- 2023-11-24 18:39:31
讀寫鎖
從電子表格中讀取數據不會有什么麻煩,即使很多人同時讀取也不會有問題。因為讀取操作不會修改數據,所以不太可能出錯。如果有人試圖刪除A25單元格中的內容,而其他人正在讀取電子表格,會發生什么情況?這要視情況而定,讀取者可能遇到報錯退出,也可能得到不一致的數據視圖。為安全起見,即使是從電子表格中讀取數據也需要特別小心。
如果把上述電子表格看作數據庫中的表,很容易發現也會有同樣的問題。從很多方面來說,電子表格就是一張簡單的數據庫表。修改數據庫表中的記錄,和刪除或者修改電子表格文件中的單元格內容十分類似。
并發控制這一經典問題的解決方案相當簡單。處理并發讀/寫訪問的系統通常實現一個由兩種鎖類型組成的鎖系統。這兩種鎖通常被稱為共享鎖(shared lock)和排他鎖(exclusive lock),也叫讀鎖(read lock)和寫鎖(write lock)。
先不考慮具體的鎖定機制,鎖的概念可以如下描述:資源上的讀鎖是共享的,或者說是相互不阻塞的。多個客戶端可以同時讀取同一個資源而互不干擾。寫鎖則是排他的,也就是說,一個寫鎖既會阻塞讀鎖也會阻塞其他的寫鎖,這是出于安全策略的考慮,只有這樣才能確保在特定的時間點只有一個客戶端能執行寫入,并防止其他客戶端讀取正在寫入的資源。
在實際的數據庫系統中,每時每刻都在發生鎖定:當某個客戶端在修改某一部分數據時,MySQL會通過鎖定防止其他客戶端讀取同一數據。如果數據庫服務器以可接受的方式執行,鎖的管理速度足夠快,那么不會引起客戶端的感知。我們將在第8章中討論如何調整查詢以避免鎖引起的性能問題。
推薦閱讀
- SQL Server 2008數據庫應用技術(第二版)
- Python金融大數據分析(第2版)
- 云計算與大數據應用
- MySQL從入門到精通(第3版)
- 深度剖析Hadoop HDFS
- 智慧的云計算
- Google Cloud Platform for Developers
- 爬蟲實戰:從數據到產品
- SIEMENS數控技術應用工程師:SINUMERIK 840D-810D數控系統功能應用與維修調整教程
- Gideros Mobile Game Development
- 改進的群智能算法及其應用
- MySQL性能調優與架構設計
- Learning Ansible
- Access 2013 數據庫管理與應用從新手到高手
- Hadoop大數據技術開發實戰