MYSQL中鎖的理解

2021-09-27 10:24:33 字數 605 閱讀 6115

** 鎖是幹嘛的?**

是為了保證資料庫當中資料的一致性,併發情況下事務操作經常會發生對同一條資料進行操作,導致我們讀寫發生異常。

有以下幾種情況:

髒寫(寫寫操作):a修改了資料,b也修改了資料,b回滾,那個a的修改也不能生效。這種情況很嚴重,基本任何事務隔離級別都會杜絕這種情況

髒讀(寫讀):b開啟事務,修改改了一條資料,然後a去讀取,之後b又回滾(rollback)了,那麼a讀了就是錯誤的資料。

不可重複讀(讀寫讀):a讀到了id=1的資料,比如是張飛,b修改資料為劉備,a在讀一次id=1的資料,這時資料為劉備了,這叫不可重複讀。

幻讀:a取了乙個資料集,比如id>1,這時有2條資料,b往這張表新增了一條資料,這時a再讀,就有3條,這種現象叫做幻讀。

鎖就是為了保證資料正確讀寫的一種手段。

有哪幾種鎖

主要有表級鎖,行級鎖,頁鎖,我們一般用到行級鎖

表級鎖:

比如,myisam就是表級鎖,最大的特徵就是寫的優先順序大於讀,當乙個程序進行寫操作,會阻塞其他程序。所以myisam併發比較差。

行級鎖:innodb,有共享鎖和排它鎖。意向排它鎖,意向共享鎖。行級鎖只能作用於索引上。

理解mysql鎖(1)鎖的概述

相對其他資料庫而言,mysql的鎖機制比較簡單 其最顯著的特點是不同的儲存引擎支援不同的鎖機制 但總的來說,mysql各種儲存引擎使用了三種型別的鎖定機制 行級鎖定 頁級鎖定和表級鎖定 其中,myisam主要使用表級鎖定,而使用行級鎖定的主要是innodb。表級鎖 開銷小,加鎖快 不會出現死鎖 鎖定...

理解mysql鎖(1)鎖的概述

相對其他資料庫而言,mysql的鎖機制比較簡單 其最顯著的特點是不同的儲存引擎支援不同的鎖機制 但總的來說,mysql各種儲存引擎使用了三種型別的鎖定機制 行級鎖定 頁級鎖定和表級鎖定 其中,myisam主要使用表級鎖定,而使用行級鎖定的主要是innodb。表級鎖 開銷小,加鎖快 不會出現死鎖 鎖定...

理解mysql鎖(1)鎖的概述

相對其他資料庫而言,mysql的鎖機制比較簡單 其最顯著的特點是不同的儲存引擎支援不同的鎖機制 但總的來說,mysql各種儲存引擎使用了三種型別的鎖定機制 行級鎖定 頁級鎖定和表級鎖定 其中,myisam主要使用表級鎖定,而使用行級鎖定的主要是innodb。表級鎖 開銷小,加鎖快 不會出現死鎖 鎖定...