mysql主流Innodb儲存引擎 事務鎖分析

2021-07-22 22:22:58 字數 609 閱讀 5389

repeatable read(可重讀)

mysql中innodb預設的隔離級別。

悲觀鎖

為了防止併發導致資料庫操作受其他執行緒運算元據庫影響,一般基於資料庫的悲觀鎖來加鎖操作。

從sql語句來看,為了搶占獨佔鎖,兩種方式。

1、更新語句加鎖

begin;開啟事務

insert into a...

update a set ..

delete from a...

commit; 提交事務

2、查詢語句加鎖

begin;開啟事務

select .. from a where .. for update

commit; 提交事務

從效能來看,這兩種悲觀鎖會因為高併發而導致競爭激烈,效能較差。

樂觀鎖

update a set ... where id = 1;

rows matched: 1  changed: 0  warnings: 0

先假設沒有同時搶占資源,等更新後檢視結果是否符合假設的預期。從changed: 0來看說明不符合預期。

樂觀鎖對於出現的這種場景,就需要重試來解決,這也是樂觀鎖的缺點。

MySQL儲存引擎 InnoDB

為什麼innodb不將總數存起來?innodb直接count 會遍歷全表 沒有where條件 雖然結果準確,但會導致效能問題。按照效率排序的話,count 字段 innodb一棵b 樹可以存放多少行資料?這個問題的簡單回答是 約2千萬。為什麼是這麼多呢?因為這是可以算出來的,要搞清楚這個問題,我們先...

MySQL 主流儲存引擎介紹

看你的mysql現在已提供什麼儲存引擎 mysql show engines 看你的mysql當前預設的儲存引擎 mysql show variables like storage engine 你要看某個錶用了什麼引擎 在顯示結果裡引數engine後面的就表示該錶當前用的儲存引擎 mysql sh...

MySQL 主流儲存引擎介紹

看你的mysql現在已提供什麼儲存引擎 mysql show engines 看你的mysql當前預設的儲存引擎 mysql show variables like storage engine 你要看某個錶用了什麼引擎 在顯示結果裡引數engine後面的就表示該錶當前用的儲存引擎 mysql sh...