資料庫理論 事務四大特性 隔離級別和解決的問題

2021-10-01 17:27:17 字數 1731 閱讀 2819

事務是乙個完整的業務邏輯單元,不可再分。

1.ddl(資料庫定義語言:data dinifition language),用來運算元據庫,資料表,檢視,儲存過程,包括新建(create),刪除(drop),修改(alter),在執行這些操作的時候,ddl語言不需要commit和rollback。

2.dml(資料操作語言:data manipulation lanuage),用來插入(insert),刪除(delete),修改(update)資料庫中的資料,在執行這些操作的時候,dml語言需要commit和rollback之後才會生效。

3.dcl(資料控制語言:data control language):用來控制資料庫元件的訪問許可,訪問許可權等命令;如:grant,remoke等、

4.tcl(事務操作語言:transaction control language):

tcl(事務操作語言:transaction control language)

tcl:commit,rollback

原子性(atomicity):事務是最小的工作單元,不可再分

一致性(consistency):保證多條dml語句同時成功或同時失敗

事務的執行不能破壞資料庫資料的完整性和一致性,乙個事務在執行之前和執行之後,資料庫都必須處於一致性狀態。

如果資料庫系統在執行過程中發生故障,有些事務尚未完成就被迫中斷,這些未完成的事務對資料庫所作的修改有一部分已寫入物理資料庫,這是資料庫就處於一種不正確的狀態,也就是不一致的狀態

隔離性(isolation):在併發環境中,併發的事務時相互隔離的,乙個事務的執行不能不被其他事務干擾。

永續性(durability):最終資料必須持久化到硬碟檔案裡

一旦事務提交,那麼它對資料庫中的對應資料的狀態的變更就會永久儲存到資料庫中。–即使發生系統崩潰或機器宕機等故障,只要資料庫能夠重新啟動,那麼一定能夠將其恢復到事務成功結束的狀態

隔離級別:4種

第一級別:讀未提交(read uncommited)

對方事務還沒有提交,我們可以讀到對方未提交的資料。

存在的問題:讀未提交存在髒讀資料。現象叫髒讀。

第二級別:讀已提交(read commited)

解決的問題: 解決了髒讀現象。

我方可以讀取對方提交之後的資料。

存在的問題:不可重複讀

第**別:可重複讀(repeated read)

解決的問題:解決了不可重複讀問題。

存在的問題:讀取到的資料是幻象。

第四級別:序列化/序列化

解決的問題:解決了所有問題。

缺點:效率低,需要事務排隊。

(oracle)資料庫預設隔離級別:讀已提交

(mysql)資料庫預設隔離級別:可重複讀

mysql資料庫在預設狀態下是自動提交的。

自動提交:執行一條dml語句,就提交一次。

關閉自動提交:start transaction(標誌乙個事務的開啟)

設定事務的全域性隔離級別:

set global transaction isolation level read uncommited

檢視事務的全域性隔離級別:

select @@global.tx_isolation

資料庫事務 四大特性 隔離級別

以下引用自 原子性 atomicity 乙個事務要麼全部執行,要麼不執行 一致性 consistency 事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a b 10,乙個事務改變了a,那麼b也隨之改變 拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何...

資料庫事務四大特性 隔離級別

要熟悉事務之前我們先了解一下sql 概念 事務就是一組dml語句組成,這些語句在邏輯上存在關聯性,有要麼全部成功,要麼全部失敗。1 原子性 乙個事務是乙個不可分割的整體,為了保證事務的總體目標,事務必須具有原子性,即當資料修改時,要麼全部執行,要麼全部不執行。即,不允許事務部分的完成,避免了只執行這...

資料庫事務四大特性 隔離級別

以轉賬為例 事務是指滿足acid的一組操作,可以通過commit提交乙個事務,也可以使用rollback進行回滾。1.原子性 atomicity 事務被視為不可分割的最小單元,事務的所有操作要麼全部提交成功,要麼全部失敗回滾。2.一致性 consisitency 資料庫在事務執行前後都保持一致性狀態...