資料庫特性和隔離級別的說明

2021-10-06 23:28:22 字數 1078 閱讀 7757

一、事務的4大特性(acid)

原子性(atomicity):原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼全部成功,要麼全部失敗。 

一致性(consistency):事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。 

隔離性(isolation):多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的運算元據所干擾,多個併發事務之間要相互隔離。 

永續性(durability):永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。 

二、不考慮事務的隔離性可能引發的問題

1.髒讀: 乙個事務讀取了另外乙個事務未提交的資料。 

2.不可重複讀:不可重複讀指在乙個事務內讀取表中的某一行資料,多次讀取結果不同。 

3.幻讀:虛讀(幻讀)是指在乙個事務內讀取到了別的事務插入的資料,導致前後讀取不一致。 

三、事務的隔離性設定語句

1.read uncommitted:乙個事務可以讀取另乙個未提交事務的資料,髒讀、不可重複度和幻讀均不可避免。 

2.read committed:乙個事務要等另乙個事務提交後才能讀取資料,可避免髒讀,不可重複度和幻讀不可避免。 

3.repeatable read:在開始讀取資料(事務開啟)時,不再允許修改操作(即不允許其他事務的update操作),可避免髒讀和不可重複度,但無法避免幻讀。 

4.serializable :最高的事務隔離級別,在該級別下,事務序列化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗資料庫效能,一般不使用。 

備註:大多數資料庫預設的事務隔離級別是read committed,比如sql server , oracle。mysql的預設隔離級別是repeatable read。在mysql資料庫中,支援上面四種隔離級別,預設的為repeatable read (可重複讀);而在oracle資料庫中,只支援serializable (序列化)級別和read committed (讀已提交)這兩種級別

資料庫特性及隔離級別說明

一 事務的4大特性 acid 原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。隔離性 isolation 多個使用者併發訪問資料庫時,資料庫為每乙個使...

資料庫特性及隔離級別說明

原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。隔離性 isolation 多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務...

mysql隔離級別的說明

原子性 一致性 隔離性 永續性 多事物同時執行的時候可能會出現髒讀 不可重複讀 幻讀 事物的隔離級別 讀未提交 read uncommitted 會出現髒讀 一般用的非常少 讀提交 read committed 可重複讀 repeatable read 序列化 serializable 用的很少 嚴...