標籤(空格分隔): mysql 鎖
mysql對於不同儲存引擎支援不同的鎖定機制,myisam和memory儲存引擎採用的是表級鎖;innodb採用行級鎖,也支援表級鎖;bdb儲存引擎採用的是頁級鎖同時也支援表級鎖。
行級鎖
最大特點是鎖定物件的粒度很小,發生資源競爭的概率就比較小,故而能提高較大的併發處理能力。但也由於粒度小,容易導致獲取鎖和加鎖耗費資源,加鎖較慢,容易發生死鎖。行級鎖包括兩種:共享鎖(s)和排他鎖(x)
同時為了使得innodb儲存引擎能夠共存行級鎖和表級鎖,在其中又引用了意向鎖,故存在意向共享鎖和意向排他鎖。
innodb行級鎖,支援事務處理,需要滿足acid特性:讀取資料存在的問題
sql四個事務隔離級別
- 讀未提交(read uncommitted)最低級別,以上情況均無法保證
- 讀已提交(read committed)可避免髒讀情況發生
- 可重複讀(repeatable read)可避免髒讀、不可重複讀情況的發生 資料庫的預設級別
- 可序列化(serializable)可避免髒讀、不可重複讀、虛讀情況的發生
表級鎖
該種機制的鎖定物件最大,系統開銷較小,可以很好的避免死鎖的問題。但是鎖定機制的粒度很大,容易導致資源爭用,所衝突的概率很高,故併發度也很低。四種狀態表鎖定分為2中型別:讀鎖定與寫鎖定
- current read lock queue(lock->read)當前持有讀鎖的所有執行緒
- padding read lock queue(lock->read wait)等待讀取資源的執行緒
- current write lock queue(lock->write)當前持有寫鎖的所有執行緒
- current write lock queue(lock->write wait)等待寫取資源的執行緒
加鎖方式:lock table_name read/write;
釋放方式:unlock tables;
頁級鎖
該中機制的特點是顆粒度介於行級鎖與表級鎖之間,所以獲取鎖需要的資源開銷和提供的併發處理能力也介於表級鎖和行級鎖之間。
mysql的鎖定機制 MySQL鎖定機制
一 樂觀鎖與悲觀鎖 1.1 樂觀鎖與使用版本號實現樂觀鎖 樂觀鎖假設認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則對使用者返回錯誤資訊,讓使用者決定如何去處理。實現方式為版本號和時間戳。使用版本號時,可以在資料初始化時指定乙個版本號...
mysql front 鎖定 Mysql鎖機制
鎖是計算機協調多個程序或執行緒併發訪問某一資源的機制。在資料庫中資料其實是一種供大量使用者共享的資源,所以在併發訪問時我們需要保證資料的一致性和有效性,而鎖衝突是影響資料庫併發效能最關鍵的因素之一。所以本篇文章主要討論mysql中鎖機制的特點。mysql的鎖機制包含多種 行鎖,表鎖,讀鎖,寫鎖等,其...
mysql資料庫鎖定機制
為了保證資料的一致完整性,任何乙個資料庫都存在鎖定機制。鎖定機制的優劣直接應想到乙個資料庫系統的併發處理能力和效能,所以鎖定機制的實現也就成為了各種資料庫的核心技術之一。下面將對 mysql 的 innodb 各自的鎖定機制進行較為詳細的分析。總的來說,mysql 各儲存引擎使用了三種型別 級別 的...