《MYSQL數(shù)據(jù)庫MYSQL 解鎖與鎖表介紹》要點:
本文介紹了MYSQL數(shù)據(jù)庫MYSQL 解鎖與鎖表介紹,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL學習MySQL鎖概述
?
相對其他數(shù)據(jù)庫而言,MySQL的鎖機制比擬簡單,其最顯著的特點是不同的存儲引擎支持不同的鎖機制.比如,MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level locking),但也支持表級鎖;InnoDB存儲引擎既支持行級鎖(row-level locking),也支持表級鎖,但默認情況下是采用行級鎖.
?
MySQL這3種鎖的特性可大致歸納如下.
?
開銷、加鎖速度、死鎖、粒度、并發(fā)性能
?
l???????? 表級鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低.
l???????? 行級鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高.
l???????? 頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般.
?
MyISAM表鎖
MYSQL學習MyISAM存儲引擎只支持表鎖,這也是MySQL開始幾個版本中唯一支持的鎖類型.隨著應用對事務完整性和并發(fā)性要求的賡續(xù)提高,MySQL才開始開發(fā)基于事務的存儲引擎,后來慢慢出現(xiàn)了支持頁鎖的BDB存儲引擎和支持行鎖的InnoDB存儲引擎(實際 InnoDB是單獨的一個公司,現(xiàn)在已經(jīng)被Oracle公司收購).但是MyISAM的表鎖依然是使用最為廣泛的鎖類型.本節(jié)將詳細介紹MyISAM表鎖的使用.
查詢表級鎖爭用情況
MYSQL學習可以通過檢查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的值比擬高,則說明存在著較嚴重的表級鎖爭用情況.
?
獲取InnoDB行鎖爭用情況???
MYSQL學習可以通過檢查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)鎖爭用比擬嚴重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比擬高,還可以通過
?
MYSQL進修解鎖
MYSQL進修第一種
MYSQL進修show processlist;
MYSQL學習找到鎖過程,kill id ;
MYSQL進修第二種
MYSQL進修mysql>UNLOCK TABLES;
MYSQL進修鎖表
MYSQL學習鎖定數(shù)據(jù)表,避免在備份進程中,表被更新
MYSQL進修mysql>LOCK TABLES tbl_name READ;
MYSQL進修為表增加一個寫鎖定:
MYSQL進修mysql>LOCK TABLES tbl_name WRITE;
歡迎參與《MYSQL數(shù)據(jù)庫MYSQL 解鎖與鎖表介紹》討論,分享您的想法,維易PHP學院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/11286.html