mysql鎖 實戰測試代碼

來源:互聯網
上載者:User

標籤:style   blog   ar   color   使用   sp   strong   on   資料   

儲存引擎 支援的鎖定
MyISAM 表級鎖
MEMORY 表級鎖
InnoDB 行級鎖
BDB 頁面鎖

表級鎖:開銷小,加鎖快;不會出現死結;鎖定粒度大,發生鎖衝突的機率最高,並發度最低。
行級鎖:開銷大,加鎖慢;會出現死結;鎖定粒度最小,發生鎖衝突的機率最低,並發度也最高。
頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死結;鎖定粒度界於表鎖和行鎖之間,並發度一般。

鎖定方式 執行鎖定的線程 讀 其他線程 讀 執行鎖定的線程 寫 其他線程 寫
讀鎖 可讀 可讀 不可寫 不可寫
寫鎖 可讀 不可讀 可寫 不可寫

涉及工具:Navicat和SQLyog(不能使用phpMyAdmin)

測試代碼

測試一:讀鎖。說明:自己與其他線程只能讀取該表

在Navicat中執行以下代碼

mysql> lock table `cat` READ;Query OK, 0 rows affectedmysql> SELECT * FROM `cat` WHERE 1;+----+--------+| id | remark |+----+--------+|  1 | ceshi  ||  2 | 22222  ||  3 | 33333  |+----+--------+3 rows in setmysql> UPDATE `cat` SET remark= ‘Navicat‘ WHERE id=1;1099 - Table ‘cat‘ was locked with a READ lock and can‘t be updated

在SQLyog中執行

mysql> SELECT * FROM `cat` WHERE 1;
+----+--------+
| id | remark |
+----+--------+
|  1 | ceshi  |
|  2 | 22222  |
|  3 | 33333  |
+----+--------+
3 rows in setmysql> UPDATE `cat` SET remark= ‘SQLyog‘ WHERE id=1

SQLyog執行UPDATE時,一直都是執行中。當解鎖時,執行成功。

在Navicat中執行解鎖操作

mysql> unlock tables;

執行後,SQLyog的UPDATE執行成功。

測試結果:

當進行讀鎖時,鎖定線程可進行查詢操作,不可進行寫入操作。其他線程可進行查詢操作,不可進行寫入操作。

 

測試一:寫鎖。說明:只有當前線程能夠對錶進行寫入操作(其他線程也無法讀這部分資料)

在Navicat中執行以下代碼

mysql> LOCK TABLE cat WRITE;Query OK, 0 rows affectedmysql> select * from `cat` where 1;+----+--------+| id | remark |+----+--------+|  1 | SQLyog ||  2 | 22222  ||  3 | 33333  |+----+--------+3 rows in setmysql> update `cat` set remark= ‘Navicat‘ where id=1;Query OK, 1 row affectedRows matched: 1  Changed: 1  Warnings: 0

然後在SQLyog中執行

mysql> select * from `cat` where 1;

mysql> update `cat` set remark= ‘Navicat‘ where id=1;

可見都是一直是執行狀態。只有解鎖後,SQLyog才能執行成功

在Navicat中執行解鎖操作

mysql> unlock tables;

SQLyog執行成功。

測試結果:

寫鎖後,執行寫鎖的線程可進行讀和寫,其他線程不可進行讀和寫

 

mysql鎖 實戰測試代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.