程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL 解鎖與鎖表介紹

MYSQL 解鎖與鎖表介紹

編輯:MySQL綜合教程

MYSQL 解鎖與鎖表介紹。本站提示廣大學習愛好者:(MYSQL 解鎖與鎖表介紹)文章只能為提供參考,不一定能成為您想要的結果。以下是MYSQL 解鎖與鎖表介紹正文


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

MyISAM存儲引擎只支持表鎖,這也是MySQL開始幾個版本中唯一支持的鎖類型。隨著應用對事務完整性和並發性要求的不斷提高,MySQL才開始開發基於事務的存儲引擎,後來慢慢出現了支持頁鎖的BDB存儲引擎和支持行鎖的InnoDB存儲引擎(實際 InnoDB是單獨的一個公司,現在已經被Oracle公司收購)。但是MyISAM的表鎖依然是使用最為廣泛的鎖類型。本節將詳細介紹MyISAM表鎖的使用。
查詢表級鎖爭用情況

可以通過檢查table_locks_waited和table_locks_immediate狀態變量來分析系統上的表鎖定爭奪:
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的值比較高,則說明存在著較嚴重的表級鎖爭用情況。
 
獲取InnoDB行鎖爭用情況   

可以通過檢查InnoDB_row_lock狀態變量來分析系統上的行鎖的爭奪情況:
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)
如果發現鎖爭用比較嚴重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比較高,還可以通過
 

解鎖

第一種

show processlist;

找到鎖進程,kill id ;

第二種

mysql>UNLOCK TABLES;

鎖表

鎖定數據表,避免在備份過程中,表被更新

mysql>LOCK TABLES tbl_name READ;

為表增加一個寫鎖定:

mysql>LOCK TABLES tbl_name WRITE;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved