myisam支援表鎖,同時也支援列所,表鎖加鎖方式:
lock
tables 表名 read
;lock
tables 表名 write
;unlock
tables
;
鎖名
鎖級別英文名稱
共享鎖行鎖
shared locks
排它鎖行鎖
exclusive locks
意向共享鎖
表鎖intention shared locks
意向排它鎖
表鎖intention exclusive locks
又稱為讀鎖,簡稱s鎖,顧名思義,共享鎖就是多個事務對於同乙個資料可以共享一把鎖,都能訪問到資料,但是只能讀不能修改;
select
*from
table
where id =
1lock
inshare
mode
;
釋放鎖:當前你事務結束,或者當前連線斷開,都會釋放當前鎖,不管當前資料是否commit/rollback又稱為寫鎖,簡稱為x鎖,排它鎖不能與其他鎖並存,如果乙個事務獲取了乙個資料行的排它鎖,其他事務就不能再獲取該鎖,只有該獲取了排它鎖的事務是可以對資料行進行讀取和修改。
意向鎖是由資料引擎自己維護的,使用者無法手動操作意向鎖
為什麼需要表級別的意向鎖?假設沒有意向鎖,我們加表鎖的時候,需要去掃瞄全表是否有存在鎖,資料量過大的時候,會導致加鎖效率很低。但是如果我們在加鎖的時候,資料庫給我們自動加上意向鎖,標記當前表,某個地方已經有了鎖,那麼我們就可以以很低的消耗,來完成是否加鎖這個動作這兩個種類的鎖的作用都是一樣的,都是為了解決資源併發的情況下,對資源的寫問題的控制。簡單來說就是解決併發。
在mysql資料庫中,鎖的本質就是對索引打上標記,如果當前表沒有索引,則直接找到sequence/rownum這樣的預設表序列,完成鎖表。
MySQL中鎖詳解
相對於其他的資料庫而言,mysql的鎖機制比較簡單,最顯著的特點就是不同的儲存引擎支援不同的鎖機制。根據不同的儲存引擎,mysql中鎖的特性可以大致歸納如下 行鎖表鎖 頁鎖myisam bdb innodb 開銷 加鎖速度 死鎖 粒度 併發效能 表鎖更適用於以查詢為主,只有少量按索引條件更新資料的應...
mysql行鎖詳解 詳解MySQL行鎖
鎖是計算機協調多個程序或執行緒併發訪問某一資源的機制。鎖保證資料併發訪問的一致性 有效性 鎖衝突也是影響資料庫併發訪問效能的乙個重要因素。鎖是mysql在伺服器層和儲存引擎層的的併發控制。mysql中從對資料操作的粒度分為表鎖和行鎖。表鎖是指對一整張表加鎖,一般是 ddl 處理時使用 而行鎖則是鎖定...
詳解mysql間隙鎖
1.什麼是間隙鎖?1 對於鍵值在條件範圍內但並不存在的記錄 在相等條件下請求給乙個不存在的記錄也會加鎖 叫做 間隙 gap innodb也會對這個 間隙 加鎖,這種鎖機制就是所謂的間隙鎖 next key鎖 2 查詢使用的範圍條件不是相等條件,innodb會給符合條件的已有資料記錄的索引項加鎖 2....