mysql的鎖機制

2022-09-14 15:54:32 字數 900 閱讀 1297

一、讀鎖(共享鎖/share locks,s鎖)。

1、select* from table_name where ...lock in share mode。(事務a)

(1)這種方式是獲取指定記錄行的讀鎖,那麼這些記錄行可以被其他事務獲取讀鎖,但是這些行一定會拒絕被其他事務獲取寫鎖,如果其他事務嘗試獲取這些記錄行的寫鎖,那麼只有當這些記錄行

的所有讀鎖都釋放了才能獲取到寫鎖,這期間一直處於阻塞狀態。

因此只允許在所有會話之間共享,不能被任何會話獨佔;

(2)如果現在事務a執行更新update/刪除delete這些被自己加了讀鎖的記錄行時,是否更新update/刪除delete成功根據情況而定。如果執行更新update/刪除delete時這些記錄行如果還沒有被其他事務獲取讀鎖,那麼執行更新update/刪除delete成功;

如果執行更新update/刪除delete時這些記錄行已經被其他事務獲取讀鎖,而且不釋放,那麼執行更新update/刪除delete失敗。

(3)因此,在事務a中新增指定記錄行的讀鎖的作用:防止事務a執行期間這些記錄行被修改update/刪除delete,同時事務a在執行期間沒有更新/刪除這些記錄行的需求。

二、寫鎖(排他鎖/exclusive locks,x鎖)。

1、select* from table_name where ...for update。(事務a)

(1)這種方式是獲取指定記錄行的寫鎖,那麼這些記錄行就不能被其他事務獲取讀鎖和排他寫鎖。如果事務a需要對這些記錄行進行更新/刪除操作。

三、

mysql鎖機制 mysql 鎖機制

一 概述 mysql有三種鎖的級別 頁級 表級 行級。myisam和memory儲存引擎採用的是表級鎖 table level locking bdb儲存引擎採用的是頁面鎖 page level locking 但也支援表級鎖 innodb儲存引擎既支援行級鎖 row level locking 也...

mysql鎖機制 php Mysql鎖機制

表級鎖 開銷小,加鎖快 不會出現死鎖 鎖定粒度大,發生鎖衝突的概率最高,併發度最低。行級鎖 開銷大,加鎖慢 會出現死鎖 鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。共享鎖和排它鎖 頁面鎖 開銷和加鎖時間界於表鎖和行鎖之間 會出現死鎖 鎖定粒度界於表鎖和行鎖之間,併發度一般 mysql的行級鎖有...

mysql鎖機制總結 mysql鎖機制總結

1.隔離級別 1 讀不提交 read uncommited,ru 這種隔離級別下,事務間完全不隔離,會產生髒讀,可以讀取未提交的記錄,實際情況下不會使用。2 讀提交 read commited,rc 僅能讀取到已提交的記錄,這種隔離級別下,會存在幻讀現象,所謂幻讀是指在同乙個事務中,多次執行同乙個查...