欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL中表鎖定(LOCK、UNLOCK)的具體使用

 更新時間:2022年04月18日 12:17:52   作者:吳聲子夜歌  
本文主要介紹了SQL中表鎖定(LOCK、UNLOCK)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

MySQL 表鎖定

鎖是與表關聯(lián)的標志。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鎖具有以下特點:

  • READ可以通過多個會話同時獲取表的鎖。此外,其他會話可以從表中讀取數(shù)據(jù)而無需獲取鎖。
  • 持有READ鎖的會話只能讀取表中的數(shù)據(jù),但無法寫入。此外,在READ釋放鎖之前,其他會話無法將數(shù)據(jù)寫入表。來自另一個會話的寫入操作將進入等待狀態(tài),直到READ鎖定被釋放。
  • 如果會話正常或異常終止,MySQL將隱式釋放所有鎖。此功能也與WRITE鎖相關。

示例:

在第一個會話中,首先,連接到mysqldemo數(shù)據(jù)庫并使用CONNECTION_ID()函數(shù)獲取當前連接ID,如下所示:

SELECT CONNECTION_ID(); 

在這里插入圖片描述

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

INSERT INTO tbl(col) VALUES(10); 

接下來,查詢tbl表中的數(shù)據(jù)。

SELECT * FROM tbl; 

在這里插入圖片描述

之后,要獲取鎖定,請使用LOCK TABLE語句。

LOCK TABLE tbl READ;

最后,在同一個會話中,如果您嘗試在tbl表中插入新行,則會收到錯誤消息。

INSERT INTO tbl(col) VALUES(11);

在這里插入圖片描述

因此,一旦READ獲取了鎖,就無法在同一會話中將數(shù)據(jù)寫入表中。

從另一個會話中檢查鎖定。
首先,連接到mysqldemo并檢查連接ID:

SELECT CONNECTION_ID(); 

在這里插入圖片描述

然后,從tbl 表中檢索數(shù)據(jù):

SELECT * FROM tbl; 

在這里插入圖片描述

接下來,在tbl表中插入一個新行:

INSERT INTO tbl(col) VALUES(20); 

在這里插入圖片描述

來自第二個會話的插入操作處于等待狀態(tài),因為第一個會話READ已經在tbl表上獲取了鎖,但尚未釋放。

可以從SHOW PROCESSLIST查看詳細信息。

SHOW PROCESSLIST; 

在這里插入圖片描述

之后,返回第一個會話并使用UNLOCK TABLES語句釋放鎖定。READ從第一個會話釋放鎖定后,INSERT執(zhí)行第二個會話中的操作。

unlock tables; 

最后,檢查tbl表的數(shù)據(jù),看看INSERT第二個會話的操作是否真的執(zhí)行了。

SELECT * FROM tbl; 

在這里插入圖片描述

寫鎖

WRITE 鎖具有以下特點:

  • 保存表鎖的唯一會話可以從表中讀取和寫入數(shù)據(jù)。
  • 在WRITE鎖定釋放之前,其他會話無法從表中讀取數(shù)據(jù)并將數(shù)據(jù)寫入表中。

首先,WRITE從第一個會話中獲取鎖定。

LOCK TABLE tbl WRITE; 

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

INSERT INTO tbl(col) VALUES(11); 

有用。

接下來,從tbl表中讀取數(shù)據(jù)。

SELECT * FROM tbl; 

在這里插入圖片描述

它也有效。

之后,從第二個會話開始,嘗試寫入和讀取數(shù)據(jù):

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

在這里插入圖片描述

在這里插入圖片描述

最后,從第一個會話中釋放鎖定。

UNLOCK TABLES; 

看到第二個會話中的所有待處理操作都已執(zhí)行,下圖說明了結果:

在這里插入圖片描述

讀鎖與寫鎖 讀鎖是“共享”鎖,它可以防止正在獲取寫鎖,但不能鎖定其他讀鎖。寫鎖是“獨占”鎖,可以防止任何其他類型的鎖。

到此這篇關于SQL中表鎖定(LOCK、UNLOCK)的具體使用的文章就介紹到這了,更多相關SQL 表鎖定內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • Mysql InnoDB多版本并發(fā)控制MVCC詳解

    Mysql InnoDB多版本并發(fā)控制MVCC詳解

    這篇文章主要介紹了Mysql InnoDB多版本并發(fā)控制MVCC詳解的相關資料,需要的朋友可以參考下
    2022-11-11
  • mysql數(shù)據(jù)庫單表最大存儲依據(jù)詳解

    mysql數(shù)據(jù)庫單表最大存儲依據(jù)詳解

    這篇文章主要為大家介紹了mysql數(shù)據(jù)庫單表最大存儲的依據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • JMeter對MySQL數(shù)據(jù)庫進行壓力測試的實現(xiàn)步驟

    JMeter對MySQL數(shù)據(jù)庫進行壓力測試的實現(xiàn)步驟

    本文主要介紹了JMeter對MySQL數(shù)據(jù)庫進行壓力測試的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解java調用ffmpeg轉換視頻格式為flv

    詳解java調用ffmpeg轉換視頻格式為flv

    這篇文章主要介紹了 詳解java調用ffmpeg轉換視頻格式為flv的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • CentOS 6.5安裝mysql5.7教程

    CentOS 6.5安裝mysql5.7教程

    這篇文章主要為大家詳細介紹了CentOS 6.5安裝mysql5.7教程,包括mysal舊版本的卸載、新版本的升級,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • MySQL數(shù)據(jù)庫是如何實現(xiàn)XA規(guī)范的

    MySQL數(shù)據(jù)庫是如何實現(xiàn)XA規(guī)范的

    這篇文章主要介紹了MySQL數(shù)據(jù)庫是如何實現(xiàn)XA規(guī)范的,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • mysql下mysqladmin日常管理命令總結(必看篇)

    mysql下mysqladmin日常管理命令總結(必看篇)

    下面小編就為大家?guī)硪黄猰ysql下mysqladmin日常管理命令總結(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL實現(xiàn)清空分區(qū)表單個分區(qū)數(shù)據(jù)

    MySQL實現(xiàn)清空分區(qū)表單個分區(qū)數(shù)據(jù)

    這篇文章主要介紹了MySQL實現(xiàn)清空分區(qū)表單個分區(qū)數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MySQL中主鍵默認有索引嗎

    MySQL中主鍵默認有索引嗎

    MySQL主鍵默認是有索引的,在MySQL中,主鍵是用來唯一標識表中每一行數(shù)據(jù)的字段或字段組合,主鍵的作用是保證數(shù)據(jù)的唯一性,并且可以提高數(shù)據(jù)的查詢效率,需要的朋友可以參考下
    2023-10-10
  • 解決MySQL報錯1267 - Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPL問題

    解決MySQL報錯1267 - Illegal mix of coll

    這篇文章主要給大家介紹了解決MySQL報錯1267 - Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPL的問題,文中有詳細的解決方案,需要的朋友可以參考下
    2023-09-09

最新評論