主頁 > 知識(shí)庫 > MYSQL 解鎖與鎖表介紹

MYSQL 解鎖與鎖表介紹

熱門標(biāo)簽:地圖標(biāo)注培訓(xùn) 智能電銷機(jī)器人靠譜么 電銷機(jī)器人公眾號(hào)推送 手機(jī)用地圖標(biāo)注工具 南宋地圖標(biāo)注黃河華山 昆明智能外呼系統(tǒng)中心 安國在哪里辦理400電話 長安區(qū)違法建房地圖標(biāo)注 電銷機(jī)器人說明書

MySQL鎖概述
 
相對(duì)其他數(shù)據(jù)庫而言,MySQL的鎖機(jī)制比較簡單,其最顯著的特點(diǎn)是不同的存儲(chǔ)引擎支持不同的鎖機(jī)制。比如,MyISAM和MEMORY存儲(chǔ)引擎采用的是表級(jí)鎖(table-level locking);BDB存儲(chǔ)引擎采用的是頁面鎖(page-level locking),但也支持表級(jí)鎖;InnoDB存儲(chǔ)引擎既支持行級(jí)鎖(row-level locking),也支持表級(jí)鎖,但默認(rèn)情況下是采用行級(jí)鎖。
 
MySQL這3種鎖的特性可大致歸納如下。
 
開銷、加鎖速度、死鎖、粒度、并發(fā)性能
 
l         表級(jí)鎖:開銷小,加鎖快;不會(huì)出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低。
l         行級(jí)鎖:開銷大,加鎖慢;會(huì)出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高。
l         頁面鎖:開銷和加鎖時(shí)間界于表鎖和行鎖之間;會(huì)出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般。
 
MyISAM表鎖

MyISAM存儲(chǔ)引擎只支持表鎖,這也是MySQL開始幾個(gè)版本中唯一支持的鎖類型。隨著應(yīng)用對(duì)事務(wù)完整性和并發(fā)性要求的不斷提高,MySQL才開始開發(fā)基于事務(wù)的存儲(chǔ)引擎,后來慢慢出現(xiàn)了支持頁鎖的BDB存儲(chǔ)引擎和支持行鎖的InnoDB存儲(chǔ)引擎(實(shí)際 InnoDB是單獨(dú)的一個(gè)公司,現(xiàn)在已經(jīng)被Oracle公司收購)。但是MyISAM的表鎖依然是使用最為廣泛的鎖類型。本節(jié)將詳細(xì)介紹MyISAM表鎖的使用。
查詢表級(jí)鎖爭用情況

可以通過檢查table_locks_waited和table_locks_immediate狀態(tài)變量來分析系統(tǒng)上的表鎖定爭奪:
mysql> show status like 'table%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Table_locks_immediate | 2979  |
| Table_locks_waited    | 0     |
+-----------------------+-------+
2 rows in set (0.00 sec))
如果Table_locks_waited的值比較高,則說明存在著較嚴(yán)重的表級(jí)鎖爭用情況。
 
獲取InnoDB行鎖爭用情況   

可以通過檢查InnoDB_row_lock狀態(tài)變量來分析系統(tǒng)上的行鎖的爭奪情況:
mysql> show status like 'innodb_row_lock%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| InnoDB_row_lock_current_waits | 0     |
| InnoDB_row_lock_time          | 0     |
| InnoDB_row_lock_time_avg      | 0     |
| InnoDB_row_lock_time_max      | 0     |
| InnoDB_row_lock_waits         | 0     |
+-------------------------------+-------+
5 rows in set (0.01 sec)
如果發(fā)現(xiàn)鎖爭用比較嚴(yán)重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比較高,還可以通過
 

解鎖

第一種

show processlist;

找到鎖進(jìn)程,kill id ;

第二種

mysql>UNLOCK TABLES;

鎖表

鎖定數(shù)據(jù)表,避免在備份過程中,表被更新

mysql>LOCK TABLES tbl_name READ;

為表增加一個(gè)寫鎖定:

mysql>LOCK TABLES tbl_name WRITE;

您可能感興趣的文章:
  • Mysql查詢正在執(zhí)行的事務(wù)以及等待鎖的操作方式
  • 基于更新SQL語句理解MySQL鎖定詳解
  • PHP利用Mysql鎖解決高并發(fā)的方法
  • PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法
  • MySQL鎖機(jī)制與用法分析
  • MySQL如何查看元數(shù)據(jù)鎖阻塞在哪里
  • MySQL語句加鎖的實(shí)現(xiàn)分析
  • Mysql使用kill命令解決死鎖問題(殺死某條正在執(zhí)行的sql語句)
  • 一次Mysql死鎖排查過程的全紀(jì)錄
  • MySQL對(duì)于各種鎖的概念理解

標(biāo)簽:潛江 合肥 吉安 南昌 東莞 長沙 武漢 江門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MYSQL 解鎖與鎖表介紹》,本文關(guān)鍵詞  MYSQL,解鎖,與,鎖表,介紹,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MYSQL 解鎖與鎖表介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于MYSQL 解鎖與鎖表介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章