MYSQL資料庫學習筆記十一 讀寫鎖

2021-10-08 11:28:07 字數 2058 閱讀 3924

1. 鎖介紹參考部落格:

按照鎖的粒度來說,mysql主要包含三種型別(級別)的鎖定機制:

全域性鎖:鎖的是整個database。由mysql的sql layer層實現的

表級鎖:鎖的是某個table。由mysql的sql layer層實現的              show open tables;

行級鎖:鎖的是某行資料,也可能鎖定行之間的間隙。由某些儲存引擎實現,比如innodb。

按照鎖的功能來說分為:共享讀鎖和排他寫鎖。

按照鎖的實現方式分為:悲觀鎖和樂觀鎖(使用某一版本列或者唯一列進行邏輯控制)

表級鎖和行級鎖的區別:

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

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

2、讀寫鎖區別:

讀鎖寫鎖一旦加上了就不能訪問外面的表了;

讀鎖加上不可以修改表裡資料;

寫鎖加上可以修改自己的表資料;

--新建表 

create table mylock (

id int(11) not null auto_increment,

name varchar(20) default null,

primary key (id)

); insert into mylock (id,name) values (1, 'a');

insert into mylock (id,name) values (2, 'b');

insert into mylock (id,name) values (3, 'c');

insert into mylock (id,name) values (4, 'd');

1、session1: lock table mylock read; -- 給mylock表加讀鎖 

2、session1: select * from mylock; -- 可以查詢

3、session1:select * from tdep; --不能訪問非鎖定表

4、session2:select * from mylock; -- 可以查詢 沒有鎖

5、session2:update mylock set name='x' where id=2; -- 修改阻塞,自動加行寫鎖

6、session1:unlock tables; -- 釋放表鎖

7、session2:update mylock set name='x' where id=2; -- 修改執行完成

8、session1:select * from tdep; --可以訪問

加了讀鎖以後就無法對錶進行操作

2、表寫鎖

1、session1: lock table mylock write; -- 給mylock表加寫鎖 

2、session1: select * from mylock; -- 可以查詢

3、session1:select * from tdep; --不能訪問非鎖定表

4、session1:update mylock set name='y' where id=2; --可以執行

5、session2:select * from mylock; -- 查詢阻塞

6、session1:unlock tables; -- 釋放表鎖

7、session2:4 rows in set (22.57 sec) -- 查詢執行完成

8、session1:select * from tdep; --可以訪問

MySQL資料庫學習筆記

一 資料庫介紹 1 為什麼需要資料庫 記憶體掉電後資料丟失,計算機的資源有限,因此需要把程式中用的資料儲存下來以便於關機後還能繼續使用 資料持久化 而儲存資料最簡單的方法就是把資料以檔案形式寫入到磁碟中。隨著程式的功能越來越複雜,需要操作的數量也就是越來越來大,管理資料就成了很大的問題,因為讀寫檔案...

MySQL 資料庫學習筆記 2

show variables show variables like character set 顯示所有和字符集相關的變數 show create database db name 顯示資料庫建立的字符集 windows 中 的my.ini 和 linux 中的 my.conf 中 設定了 mys...

Mysql資料庫學習筆記 一

啟動服務 net start mysql57 終止服務 net stop mysql57 命令列登入mysql管理系統mysql h 127.0.0.1 u root p 環境變數 修改提示符 prompt u h d 提示符改為 root 127.0.0.1 none 書寫規範 關鍵字和函式名大寫...