資料庫鎖問題(mysql)

2021-10-04 04:10:04 字數 1921 閱讀 7964

實驗名稱: 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 表級鎖 排他鎖又稱為寫鎖,乙個事務在一行資料加上排他鎖後,其他事務不能再在其上加其他的鎖,也修...