java樂觀鎖有哪些,樂觀鎖的顆粒度_mysql「鎖」

 2023-10-15 阅读 27 评论 0

摘要:表鎖:表級別的鎖定是mysql各存儲引擎中最大粒度的鎖定機制,該鎖定機制最大的特點是實現邏輯非常簡單,帶來的系統負面影響最小,所以獲取鎖釋放鎖的速度很快,由于表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。當然ÿ

表鎖:表級別的鎖定是mysql各存儲引擎中最大粒度的鎖定機制,該鎖定機制最大的特點是實現邏輯非常簡單,帶來的系統負面影響最小,所以獲取鎖釋放鎖的速度很快,由于表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。當然,鎖定顆粒度大所帶來最大的負面影響就是出現鎖定資源爭用的概率也會最高,致使并發度大打折扣。使用表級鎖定的主要是MyISAM,MEMORY,CSV等一些非事務性存儲引擎。

MyISAM在執行查詢前,會自動執行表的加鎖、解鎖操作,一般情況下不需要用戶手動加、解鎖,但是有的時候也需要顯示加鎖。比如:檢索某一個時刻t1,t2表中數據數量。

頁鎖:頁級鎖定是MySQL中比較獨特的一種鎖定級別,在其他數據庫管理軟件中也并不是太常見。頁級鎖定的特點是鎖定顆粒度介于行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的并發處理能力也同樣是介于上面二者之間。另外,頁級鎖定和行級鎖定一樣,會發生死鎖。

java樂觀鎖有哪些,在數據庫實現資源鎖定的過程中,隨著鎖定資源顆粒度的減小,鎖定相同數據量的數據所需要消耗的內存數量是越來越多的,實現算法也會越來越復雜。不過,隨著鎖定資源顆粒度的減小,應用程序的訪問請求遇到鎖等待的可能性也會隨之降低,系統整體并發度也隨之提升。使用頁級鎖定的主要是BerkeleyDB存儲引擎。

行鎖:行級鎖定最大的特點就是鎖定對象的粒度很小,也是目前各大數據庫管理軟件所實現的鎖定顆粒度最小的。由于鎖定顆粒度很小,所以發生鎖定資源爭用的概率也最小,能夠給予應用程序盡可能大的并發處理能力而提高一些需要高并發應用系統的整體性能。

雖然能夠在并發處理能力上面有較大的優勢,但是行級鎖定也因此帶來了不少弊端。由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多,帶來的消耗自然也就更大了。此外,行級鎖定也最容易發生死鎖。

使用行級鎖定的主要是InnoDB存儲引擎。

MySQL樂觀鎖,總結

表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖沖突的概率最高,并發度最低。

行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

頁面鎖:開銷和加鎖時間介于表鎖和行鎖之間;會出現死鎖;鎖定粒度介于表鎖和行鎖之間,并發度一般。

mysql查看鎖,從鎖的角度來說,表級鎖更適合于以查詢為主,只有少量按索引條件更新數據的應用,如Web應用;而行級鎖則更適合于有大量按索引條件并發更新少量不同數據,同時又有并發查詢的應用,如一些在線事務處理(OLTP)系統。

2abb42736e0a17975235bcc74ded273d.png

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/137421.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息