高效能mysql筆記---mysql架構[-1-]

空方塊發表於2015-06-04

1.隔離級別

Read uncommitted:事務可以讀取為提交的資料,髒讀。

Read Committed:只能讀取到已經提交的資料,也稱不可重複讀。

Repeatable Read:保證在同一個事務中,讀取同樣是資料的一致性。可能出現幻讀,幻讀:當一個事務在讀取某一範圍的資料,另一個事務讀該範圍的資料進行插入,就會出現幻行,InnoDB和XtraDB儲存引擎採用MMVC解決了幻讀。(mysql default)

Serializable:每讀取一行資料,都會進行加鎖,存在鎖競爭。


2.mysql預設採用AutoCommit模式。

show variables like ‘autocommit’;

set autocommit = 1;


1或者ON表示啟用(mysql default)

0或者或表示禁用。

當處於禁用狀態下,所有查詢都在一個事務中執行,直到顯示呼叫commit或者rollback,該事務結束,同時又開始呼叫另外一個事務。


3.MMVC(多版本併發控制)

a.查詢:查詢版本<=當前事務版本,確保事務讀取到的行,要麼事務開始前已經存在,要麼事務自身插入或修改的。

b.刪除:查詢版本>=當前事務版本,確保事務讀取到的行,在事務開始之前未被刪除。


op:

Insert :儲存當前系統版本為行版本號。

Delete:儲存當前系統版本號作為行刪除標識。

Update:儲存當前系統版本為行版本號,當前系統版本號作為行刪除標識。


優點:大多數操作不需要加鎖。

缺點:需要額外的儲存空間,更多的行檢查工作,以及一些額外的維護。

只工作在Repeatable ReadRead Committed這倆個隔離級別。





相關文章