MySQL語法解析之表鎖定

2022-06-14 14:01:43
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於表鎖定的相關語法解析,MySQL允許使用者端對談顯式獲取表鎖,以防止其他對談在特定時間段記憶體取同一個表,下面一起來看一下,希望對大家有幫助。

推薦學習:

MySQL 表鎖定

鎖是與表關聯的標誌。MySQL允許使用者端對談顯式獲取表鎖,以防止其他對談在特定時間段記憶體取同一個表。使用者端對談只能為自己獲取或釋放表鎖。它無法獲取或釋放其他對談的表鎖。

CREATE TABLE tbl (
  id INT NOT NULL AUTO_INCREMENT,
  col INT NOT NULL,
  PRIMARY KEY (id)) Engine = InnoDB;

LOCK和UNLOCK TABLES語法

以下語句顯式獲取表鎖:

LOCK TABLES table_name [READ | WRITE]

要鎖定表,請在LOCK TABLES關鍵字後指定其名稱。此外,您可以指定鎖的型別,可以是 READ或 WRITE。

要釋放表的鎖,請使用以下語句:

UNLOCK TABLES;

讀鎖

READ鎖具有以下特點:

  1. READ可以通過多個對談同時獲取表的鎖。此外,其他對談可以從表中讀取資料而無需獲取鎖。
  2. 持有READ鎖的對談只能讀取表中的資料,但無法寫入。此外,在READ釋放鎖之前,其他對談無法將資料寫入表。來自另一個對談的寫入操作將進入等待狀態,直到READ鎖定被釋放。
  3. 如果對談正常或異常終止,MySQL將隱式釋放所有鎖。此功能也與WRITE鎖相關。

範例:
在第一個對談中,首先,連線到mysqldemo資料庫並使用CONNECTION_ID()函數獲取當前連線ID,如下所示:

SELECT CONNECTION_ID();

在這裡插入圖片描述
然後,在tbl表中插入一個新行。

INSERT INTO tbl(col) VALUES(10);

接下來,查詢tbl表中的資料。

SELECT * FROM tbl;

在這裡插入圖片描述
之後,要獲取鎖定,請使用LOCK TABLE語句。

LOCK TABLE tbl READ;

最後,在同一個對談中,如果您嘗試在tbl表中插入新行,則會收到錯誤訊息。

INSERT INTO tbl(col) VALUES(11);

在這裡插入圖片描述
因此,一旦READ獲取了鎖,就無法在同一對談中將資料寫入表中。

從另一個對談中檢查鎖定。
首先,連線到mysqldemo並檢查連線ID:

SELECT CONNECTION_ID();

在這裡插入圖片描述
然後,從tbl 表中檢索資料:

SELECT * FROM tbl;

在這裡插入圖片描述
接下來,在tbl表中插入一個新行:

INSERT INTO tbl(col) VALUES(20);

在這裡插入圖片描述
來自第二個對談的插入操作處於等待狀態,因為第一個對談READ已經在tbl表上獲取了鎖,但尚未釋放。

可以從SHOW PROCESSLIST檢視詳細資訊。

SHOW PROCESSLIST;

在這裡插入圖片描述
之後,返回第一個對談並使用UNLOCK TABLES語句釋放鎖定。READ從第一個對談釋放鎖定後,INSERT執行第二個對談中的操作。

unlock tables;

最後,檢查tbl表的資料,看看INSERT第二個對談的操作是否真的執行了。

SELECT * FROM tbl;

在這裡插入圖片描述

寫鎖

WRITE 鎖具有以下特點:

  1. 儲存表鎖的唯一對談可以從表中讀取和寫入資料。
  2. 在WRITE鎖定釋放之前,其他對談無法從表中讀取資料並將資料寫入表中。

首先,WRITE從第一個對談中獲取鎖定。

LOCK TABLE tbl WRITE;

然後,在tbl表中插入一個新行

INSERT INTO tbl(col) VALUES(11);

有用。

接下來,從tbl表中讀取資料。

SELECT * FROM tbl;

在這裡插入圖片描述

它也有效。

之後,從第二個對談開始,嘗試寫入和讀取資料:

INSERT INTO tbl(col) VALUES(21);
 SELECT * FROM tbl;

在這裡插入圖片描述
在這裡插入圖片描述

最後,從第一個對談中釋放鎖定。

UNLOCK TABLES;

看到第二個對談中的所有待處理操作都已執行,下圖說明了結果:
在這裡插入圖片描述

讀鎖與寫鎖

  1. 讀鎖是「共用」鎖,它可以防止正在獲取寫鎖,但不能鎖定其他讀鎖。
  2. 寫鎖是「獨佔」鎖,可以防止任何其他型別的鎖。

推薦學習:

以上就是MySQL語法解析之表鎖定的詳細內容,更多請關注TW511.COM其它相關文章!