實驗名稱: mysql鎖問題
一、實驗目的
了解mysql鎖機制,並通過簡單案例進行演示。
二、實驗內容和步驟
1.mysql 鎖概述
mysql有三種鎖的級別:頁級、表級、行級。
myisam和memory儲存引擎採用的是表級鎖(table- level locking);
bdb儲存引擎採用的是頁面鎖(page-level locking),但也支援表級鎖;
innodb儲存引擎既支援行級鎖(row-level locking),也支援表級鎖,但預設情況下是採用行級鎖。
mysql這3種鎖的特性可大致歸納如下:
表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。
行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。
頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般。
2.以innodb為例子演示鎖等待
①事務如下
session a
set autocommit=0;
begin;
select * from user where user_id<4 for update;
session b
set autocommit=0;
begin;
select * from user where user_id=2 for update;
delete from user where user_id=3;
②執行結果
③行鎖爭用情況
3.以innodb為例子演示死鎖
①事務如下
session a
set autocommit=0;
begin;
select * from user where user_id=1 for update;
select * from user where user_id=2 for update;
session b
set autocommit=0;
begin;
select * from user where user_id=2 for update;
select * from user where user_id=1 for update;
②執行結果
③檢視死鎖
④解除鎖(殺死程序)
mysql資料庫鎖 MySQL資料庫的鎖機制
在併發訪問情況下,很有可能出現不可重複讀等等讀現象。為了更好的應對高併發,封鎖 時間戳 樂觀併發控制 樂觀鎖 悲觀併發控制 悲觀鎖 都是併發控制採用的主要技術方式。鎖分類 按操作劃分 dml鎖,ddl鎖 按鎖的粒度劃分 表級鎖 行級鎖 頁級鎖 按鎖級別劃分 共享鎖 排他鎖 按加鎖方式劃分 自動鎖 顯...
mysql資料庫鎖
表鎖 讀鎖會阻塞寫,但是不會阻塞讀操作。而寫鎖則會把讀和寫都阻塞 myisam索引結構 myisam索引用的b tree來儲存資料,myisam索引的指標指向的是鍵值的位址,位址儲存的是資料。b tree的資料域儲存的內容為實際資料的位址,也就是說它的索引和實際的資料是分開的,只不過是用索引指向了實...
MySQL資料庫鎖
mysql鎖分為表級鎖 頁級鎖和行級鎖。innodb 行級鎖 在特殊情況下會公升級為表級鎖,如給沒有加索引的非唯一字段加鎖,或者在普通索引中,使用模糊查詢使索引失效,導致加鎖時,公升級為表鎖 myisam 表級鎖 排他鎖又稱為寫鎖,乙個事務在一行資料加上排他鎖後,其他事務不能再在其上加其他的鎖,也修...