中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql表鎖和行鎖區別是什么

發布時間:2020-09-16 14:41:57 來源:億速云 閱讀:637 作者:小新 欄目:MySQL數據庫

小編給大家分享一下mysql表鎖和行鎖區別是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、表鎖

特點:偏向MyISAM存儲引擎,開銷小,加鎖快;無死鎖;鎖定粒度大,發生鎖沖突的概率最高,并發度最低。

我們在編輯表,或者執行修改表的事情了語句的時候,一般都會給表加上表鎖,可以避免一些不同步的事情出現,表鎖分為兩種,一種是讀鎖,一種是寫鎖。

我們可以手動給表加上這兩種鎖,語句是:

lock table 表名 read(write);

釋放所有表的鎖:

unlock tables;

查看加鎖的表:

show open tables;

加讀鎖(共享鎖):

我們給表加上讀鎖會有什么效果呢?

1、我們加讀鎖的這個進程可以讀加讀鎖的表,但是不能讀其他的表。

2、加讀鎖的這個進程不能update加讀鎖的表。

3、其他進程可以讀加讀鎖的表(因為是共享鎖),也可以讀其他表

4、其他進程update加讀鎖的表會一直處于等待鎖的狀態,直到鎖被釋放后才會update成功。

加寫鎖(獨占鎖):

1、加鎖進程可以對加鎖的表做任何操作(CURD)。

2、其他進程則不能查詢加鎖的表,需等待鎖釋放

總結:

讀鎖會阻塞寫,但是不會堵塞讀。而寫鎖則會把讀和寫都堵塞。(特別注意進程)

分析:

show status like 'table%';

輸入上述命令,可得:

+----------------------------+----------+
| Variable_name        | Value |
+----------------------------+----------+
| Table_locks_immediate | 105         |
| Table_locks_waited   | 3           |
+----------------------------+----------+

Table_locks_immediate:產生表級鎖定的次數,表示可以立即獲取鎖的查詢次數,每立即獲取鎖值加1 。

Table_locks_waited:出現表級鎖定爭用而發生等待的次數(不能立即獲取鎖的次數,每等待一次鎖值加1),此值高則說明存在著較嚴重的表級鎖爭用情況。

二、行鎖

特點:偏向InnoDB存儲引擎,開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

行鎖支持事務,所以  有關事務的知識下篇博客再總結。

行為:

1、當我們對一行進行更新但是不提交的時候,其他進程也對該行進行更新則需要進行等待,這就是行鎖。

2、如果我們對一行進行更新,其他進程更新別的行是不會受影響的。

行鎖升級為表鎖:

當我們的行鎖涉及到索引失效的時候,會觸發表鎖的行為。

正常情況,各自鎖定各自的行,互相不影響,一個2000另一個3000

由于在column字段b上面建了索引,如果沒有正常使用,會導致行鎖變表鎖

比如沒加單引號導致索引失效,行鎖變表鎖

被阻塞,等待。只到Session_1提交后才阻塞解除,完成更新

所以,由此,我們還是要善用索引查詢啊。

間隙鎖:

當我們用范圍條件而不是相等條件檢索數據,并請求共享或排他鎖時,InnoDB會給符合條件的已有數據記錄的索引項加鎖;對于鍵值在條件范圍內但并不存在的記錄,叫做“間隙(GAP)”,InnoDB也會對這個“間隙”加鎖,這種鎖機制就是所謂的間隙鎖(Next-Key鎖)。

因為Query執行過程中通過過范圍查找的話,他會鎖定整個范圍內所有的索引鍵值,即使這個鍵值并不存在。

間隙鎖有一個比較致命的弱點,就是當鎖定一個范圍鍵值之后,即使某些不存在的鍵值也會被無辜的鎖定,而造成在鎖定的時候無法插入鎖定鍵值范圍內的任何數據。在某些場景下這可能會對性能造成很大的危害  

優化建議:

盡可能讓所有數據檢索都通過索引來完成,避免無索引行鎖升級為表鎖。

合理設計索引,盡量縮小鎖的范圍

盡可能較少檢索條件,避免間隙鎖

盡量控制事務大小,減少鎖定資源量和時間長度

盡可能低級別事務隔離

以上是mysql表鎖和行鎖區別是什么的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴城市| 霍城县| 安图县| 安西县| 塘沽区| 克什克腾旗| 保山市| 定兴县| 南木林县| 棋牌| 宜兰市| 孟津县| 绍兴市| 太保市| 麻江县| 通辽市| 柘城县| 拉孜县| 贡山| 德清县| 张家界市| 昭苏县| 喀什市| 新河县| 扎兰屯市| 上犹县| 雷州市| 沂水县| 余江县| 沁阳市| 团风县| 滁州市| 大同县| 和平区| 罗定市| 新郑市| 阳泉市| 昭平县| 广丰县| 策勒县| 闸北区|