mysql 鎖定與實務處理分離水平

2021-06-28 12:31:21 字數 1526 閱讀 9010

1.鎖定:

使用者a執行+40,同時使用者b執行-40,如果沒有特殊處理那麼資料只會執行乙個操作(b的操作-40,記過為60)。

1.2》鎖定含義:

就是是資料庫中的特定資料不讓其他使用者操作而上的一把鎖的機制,上鎖為lock,解鎖為unlock.

1.3》鎖定的種類:

共享鎖定:當使用者參照資料時,將物件資料變為唯讀形式的鎖定(該資料不能被改變,只能被參照)。上述圖例中如果a對資料實施了共享鎖定,那麼b只能對

資料進行參照,而不能更新。又稱為讀取鎖定。

排他鎖定:是使用insert/update/delete命令對資料進行更新時使用的鎖定。其他的程序(事物)一律不能對該資料讀取。自然其他事物處理中也不能進行更新一集參照

又稱為,寫入鎖定或獨佔鎖定。

1.4》鎖定粒度:

含義:鎖定物件的大小,單位通常被稱為鎖定的粒度。有以下三種(資料庫不同會有所差異)1,記錄(行),2,表,3,資料庫。

2.分離水平

2.1》分離水平用來確定事務處理之間的影響程度(同時執行時相互影響的機制),分離水平越高,資料的整合性隨之越高,但同時執行性下降。相反如果分離水平越低,資料整合性降低的同時,執行性提高了。根據資料的用途,分離水平的選擇是開發人員必須判斷或決定的。分離水平越高,維持鎖定的時間久越長,這樣同時執行性就會降低。增加死鎖產生的概率。

分離水平讀髒資料不可重複讀產生幽靈資料

read uncommittedyy

yread committedny

yrepeateble readnn

yserializablenn

n 2.2》詳細介紹:set transaction isolation level 是用於修改分離水平的命令,如果制定了session關鍵字,設定只適用於當前的連線,(如果制定了global關鍵字,則使用與其後其它新連線)。

2.2.1》read uncommitted(非提交讀取)

2.2.2》不可重複讀取

2.2.3》幻想讀取

3.死鎖:

MYSQL排程與鎖定問題

4.5 排程與鎖定問題 前面各段主要將精力集中在使個別的查詢更快上。mysql還允許影響語句的排程特性,這樣會使來自幾個客戶機的查詢更好地協作,從而單個客戶機不會被鎖定太長的時間。更改排程特性還能保證特定的查詢處理得更快。我們先來看一下mysql的預設排程策略,然後 來看看為改變這個策略可使用什麼樣...

MYSQL排程與鎖定問題

mysql還允許影響語句的排程特性,這樣會使來自幾個客戶機的查詢更好地協作,從而單個客戶機不會被鎖定太長的時間。更改排程特性還能保證特定的查詢處理得更快。我們先來看一下mysql的預設排程策略,然後來看看為改變這個策略可使用什麼樣的選項。出於討論的目的,假設執行檢索 select 的客戶機程式為讀取...

7 MySQL 事務與鎖定命令

預設的,mysql 執行在autocommit模式。這就意味著,當你執行完乙個更新時,mysql 將立刻將更新儲存到磁碟上。如果你使用事務安全表 例如innodb bdb 通過下面的命令,你可以設定 mysql 為非autocommit模式 set autocommit 0在此之後,你必須使用com...