《Mysql必讀mysql中的鎖、事務、并發控制的相關知識》要點:
本文介紹了Mysql必讀mysql中的鎖、事務、并發控制的相關知識,希望對您有用。如果有疑問,可以聯系我們。
MYSQL入門本節內容:
mysql中的鎖、事務、并發控制
MYSQL入門1、并發控制
無論何時,只要不止一個查詢同時修改數據,都會產生并發控制問題--并發讀和并發寫.
讀鎖(Read Lock)/寫鎖(Write Lock)
鎖系統是用于處理并發讀或并發寫時出現的數據紛歧致等問題.也稱為共享鎖(Share Lock)和排他鎖(Exclusive Lock).
MYSQL入門鎖的概念:
某一資源上的讀鎖是共享的,或者說是互不阻塞的.在同一時間,多個用戶可以讀取同一資源,而互不干擾.
MYSQL入門另一方面,寫鎖是排他的,一個寫鎖會阻塞其他的讀鎖和寫鎖,這是出于平安策略的考慮,在給定時間里,只有一個用戶能寫入資源,以防止用戶在寫操作的同時其他用戶讀取同一資源.
MYSQL入門對數據庫來說,隨時隨地都會發生鎖定.當某一用戶修改某一部門數據時,MySQL會禁止其他用戶讀取同一數據.
大多數時候,MySQL都是以透明的方式實現鎖的內部管理.
MYSQL入門每種MySQL存儲引擎都可以實現獨有的鎖策略(Locking Policy)或鎖粒度(Lock Granularitey).
在存儲引擎設計中,鎖管理(Lock Management)是個非常重要的議題.
MYSQL入門接下來,介紹兩種最重要的鎖策略.
MYSQL入門2、表鎖(Table Lock)
MySQL支持大多數基本的鎖策略,其中開銷最小的鎖策略是表鎖.將給個表枷鎖.當一個用戶對表進行寫操作時,用戶可以獲得一個寫鎖.寫鎖會禁止其他用戶的讀/寫操作.
MYSQL入門另外,只有無人進行寫操作時,用戶能力獲得讀鎖,讀鎖之間是互不沖突的.
MYSQL入門在特定的環境中,表鎖可能性能良好.例如,READ LOCAL 表鎖支持某種類型的并發寫操作.
另外,寫鎖比讀鎖有更高的優先級,即使有讀操作用戶已排在隊列中,一個被申請的寫鎖仍可以排列在鎖隊列的前列.
MYSQL入門雖然存儲引擎管理自己的鎖,MySQL自己也能使用各種有效的表鎖,以用于各種目的.
例如,mysql數據庫可以在語句中,如ALTER TABLE語句中,使用寫鎖,而不用考慮存儲引擎.
MYSQL入門1)、行級鎖(Row Locks)
行級鎖可以支持最大的并發處理(同時也帶來最大的鎖開銷).
支持引擎InnoDB等.行級鎖是由存儲引擎實現,而不是由MySQL服務器實現.
服務器完全不了解存儲引擎里的鎖實現方式.
MYSQL入門2)、事務
事務是一組原子性的SQL查詢語句,也可以被看做一個工作單元.如果數據庫引擎能夠成功地數據庫應用所有的查詢語句,它就會執行所有查詢,但是,如果任何一條查詢語句因為瓦解或其他原因而無法執行,那么所有的語句就都不會執行.也就是說,事務內的語句要么全部執行,要么一句也不執行.
MYSQL入門3)、ACID測試
MYSQL入門原子性(Atomicity)
一個事務必需被視為一個單獨的內部“不可分”的工作單元,以確保整個事務要么全部執行,要么全部回滾.
一致性(Consistency)
MYSQL入門隔離性(Isolation)
某個事務的成果只有在完成之后才對其他事務可見.
持久性(Durability)
歡迎參與《Mysql必讀mysql中的鎖、事務、并發控制的相關知識》討論,分享您的想法,維易PHP學院為您提供專業教程。