国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL表鎖定實例分析

2024-07-24 12:34:18
字體:
來源:轉載
供稿:網友

  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鎖具有以下特點:
 
  READ可以通過多個會話同時獲取表的鎖。此外,其他會話可以從表中讀取數據而無需獲取鎖。
  持有READ鎖的會話只能讀取表中的數據,但無法寫入。此外,在READ釋放鎖之前,其他會話無法將數據寫入表。來自另一個會話的寫入操作將進入等待狀態,直到READ鎖定被釋放。
  如果會話正常或異常終止,MySQL將隱式釋放所有鎖。此功能也與WRITE鎖相關。
  示例:
  在第一個會話中,首先,連接到mysqldemo數據庫并使用CONNECTION_ID()函數獲取當前連接ID,如下所示:
 
  SELECT CONNECTION_ID();
  MySQL表鎖定實例分析
  然后,在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 鎖具有以下特點:
 
  保存表鎖的唯一會話可以從表中讀取和寫入數據。
  在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;
  看到第二個會話中的所有待處理操作都已執行,下圖說明了結果:
 
  讀鎖與寫鎖
  讀鎖是“共享”鎖,它可以防止正在獲取寫鎖,但不能鎖定其他讀鎖。
  寫鎖是“獨占”鎖,可以防止任何其他類型的鎖。
  “MySQL表鎖定實例分析”的內容就介紹到這里了,感謝大家的閱讀。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮北市| 婺源县| 彭山县| 尼勒克县| 哈尔滨市| 沾化县| 辽宁省| 武清区| 邻水| 清镇市| 淮北市| 时尚| 自治县| 桐城市| 左云县| 阿城市| 库车县| 宁化县| 谷城县| 建瓯市| 开鲁县| 合阳县| 福鼎市| 始兴县| 辉南县| 离岛区| 清水河县| 麟游县| 宁都县| 肥东县| 潢川县| 西峡县| 邹平县| 茶陵县| 昌都县| 谷城县| 沅陵县| 新晃| 思南县| 东城区| 手机|