成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql的鎖機制基本原理

本篇內容介紹了“MySQL的鎖機制基本原理”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯(lián),專注為中小企業(yè)提供官網(wǎng)建設、營銷型網(wǎng)站制作、成都響應式網(wǎng)站建設、展示型網(wǎng)站制作、網(wǎng)站設計等服務,幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設與網(wǎng)站營銷推廣問題。

今天沒事就學習一下mysql的三種鎖機制的優(yōu)缺點:
MySQL各存儲引擎使用了三種類型(級別)的鎖定機制:行級鎖定,頁級鎖定和表級鎖定。下面我們先分析一下MySQL這三種鎖定的特點和各自的優(yōu)劣所在。
● 行級鎖定(row-level)
行級鎖定最大的特點就是鎖定對象的顆粒度很小,也是目前各大管理軟件所實現(xiàn)的鎖定顆粒度最小的。由于鎖定顆粒度很小,所以發(fā)生鎖定資源爭用的概率也最小,能夠給予應用程序盡可能大的并發(fā)處理能力而提高一些需要高并發(fā)應用系統(tǒng)的整體性能。雖然能夠在并發(fā)處理能力上面有較大的優(yōu)勢,但是行級鎖定也因此帶來了不少弊端。由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多,帶來的消耗自然也就更大了。此外,行級鎖定也最容易發(fā)生死鎖。
● 表級鎖定(table-level)
和行級鎖定相反,表級別的鎖定是MySQL各存儲引擎中最大顆粒度的鎖定機制。該鎖定機制最大的特點是實現(xiàn)邏輯非常簡單,帶來的系統(tǒng)負面影響最小。所以獲取鎖和釋放鎖的速度很快。由于表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。當然,鎖定顆粒度大所帶來最大的負面影響就是出現(xiàn)鎖定資源爭用的概率也會最高,致使并大度大打折扣。
● 頁級鎖定(page-level)
頁級鎖定是MySQL 中比較獨特的一種鎖定級別,在其他數(shù)據(jù)庫管理軟件中也并不是太常見。頁級鎖定的特點是鎖定顆粒度介于行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的并發(fā)處理能力也同樣是介于上面二者之間。另外,頁級鎖定和行級鎖定一樣,會發(fā)生死鎖。
在數(shù)據(jù)庫實現(xiàn)資源鎖定的過程中,隨著鎖定資源顆粒度的減小,鎖定相同數(shù)據(jù)量的數(shù)據(jù)所需要消耗的內存數(shù)量是越來越多的,實現(xiàn)算法也會越來越復雜。不過,隨著鎖定資源顆粒度的減小,應用程序的訪問請求遇到鎖等待的可能性也會隨之降低,系統(tǒng)整體并發(fā)度也隨之提升。
MySQL 的表級鎖定主要分為兩種類型,一種是讀鎖定,另一種是寫鎖定。在MySQL 中,主要通過四個隊列來維護這兩種鎖定:兩個存放當前正在鎖定中的讀和寫鎖定信息,另外兩個存放等待中的讀寫鎖定信息,如下:
•Current read-lock queue (lock->read)
•Pending read-lock queue (lock->read_wait)
•Current write-lock queue (lock->write)
•Pending write-lock queue (lock->write_wait)
讀鎖定
一個新的客戶端請求在申請獲取讀鎖定資源的時候,需要滿足兩個條件:
1、請求鎖定的資源當前沒有被寫鎖定;
2、寫鎖定等待隊列(Pending write-lock queue)中沒有更高優(yōu)先級的寫鎖定等待;
如果滿足了上面兩個條件之后,該請求會被立即通過,并將相關的信息存入Current read-lock queue 中,而如果上面兩個條件中任何一個沒有滿足,都會被迫進入等待隊列Pending read-lock queue中等待資源的釋放。
寫鎖定
當客戶端請求寫鎖定的時候,MySQL 首先檢查在Current write-lock queue 是否已經有鎖定相同資源的信息存在。如果Current write-lock queue 沒有,則再檢查Pending write-lock queue,如果在Pending write-lock queue 中找到了,自己也需要進入等待隊列并暫停自身線程等待鎖定資源。反之,如果Pending write-lock queue 為空,則再檢測Current read-lock queue,如果有鎖定存在,則同樣需要進入Pending write-lock queue 等待。當然,也可能遇到以下這兩種特殊情況:
1. 請求鎖定的類型為WRITE_DELAYED;
2. 請求鎖定的類型為WRITE_CONCURRENT_INSERT 或者是TL_WRITE_ALLOW_WRITE, 同時Current read lock 是READ_NO_INSERT 的鎖定類型。
當遇到這兩種特殊情況的時候,寫鎖定會立即獲得而進入Current write-lock queue 中如果剛開始第一次檢測就Current write-lock queue 中已經存在了鎖定相同資源的寫鎖定存在,那么就只能進入等待隊列等待相應資源鎖定的釋放了。讀請求和寫等待隊列中的寫鎖請求的優(yōu)先級規(guī)則主要為以下規(guī)則決定:
1. 除了READ_HIGH_PRIORITY 的讀鎖定之外,Pending write-lock queue 中的WRITE 寫鎖定能夠阻塞所有其他的讀鎖定;
2. READ_HIGH_PRIORITY 讀鎖定的請求能夠阻塞所有Pending write-lock queue 中的寫鎖定;
3. 除了WRITE 寫鎖定之外,Pending write-lock queue 中的其他任何寫鎖定都比讀鎖定的優(yōu)先級低。
寫鎖定出現(xiàn)在Current write-lock queue 之后,會阻塞除了以下情況下的所有其他鎖定的請求:
1. 在某些存儲引擎的允許下,可以允許一個WRITE_CONCURRENT_INSERT 寫鎖定請求
2. 寫鎖定為WRITE_ALLOW_WRITE 的時候,允許除了WRITE_ONLY 之外的所有讀和寫鎖定請求
3. 寫鎖定為WRITE_ALLOW_READ 的時候,允許除了READ_NO_INSERT 之外的所有讀鎖定請求
4. 寫鎖定為WRITE_DELAYED 的時候,允許除了READ_NO_INSERT 之外的所有讀鎖定請求
5. 寫鎖定為WRITE_CONCURRENT_INSERT 的時候,允許除了READ_NO_INSERT 之外的所有讀鎖定請求

“mysql的鎖機制基本原理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

網(wǎng)頁名稱:mysql的鎖機制基本原理
文章路徑:http://jinyejixie.com/article2/jopjoc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、虛擬主機、做網(wǎng)站、電子商務建站公司、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
麻城市| 贞丰县| 吴川市| 奉贤区| 贵溪市| 贵溪市| 康保县| 大兴区| 台南市| 托里县| 吴川市| 青冈县| 高台县| 桂林市| 分宜县| 专栏| 白河县| 韶山市| 北票市| 施秉县| 池州市| 梁平县| 广西| 依兰县| 江门市| 九龙坡区| 庆安县| 龙井市| 吉林省| 扎兰屯市| 祁东县| 阳江市| 泗水县| 西华县| 青田县| 宿州市| 静安区| 沧州市| 康定县| 炎陵县| 灌云县|