Oracle DTL 資料事務語言

來源:互聯網
上載者:User

標籤:行記錄   情況下   開啟   microsoft   支援   行業   資料不一致   定義   sel   

DTL  資料事務語言

事務的定義:
就是指一組相關的SQL操作,我們所有的操作都是事務中的。

注意:在資料庫中,執行業務的基本單位是【事務】,不是以某一條SQL。
資料庫在預設情況下,事務是都開啟的,也就是說它一種處在事務當中的,一個事務的結束,代表著下一個事務的開啟。
執行commit或者rollback指令時,會結束當前事務

作用:用來保證資料的平穩性和可預測性
例如:銀行轉賬業務
【SQL1:A帳號向B帳號轉賬10000
update tbl_account set balance=balance-10000 where accountNo=A帳號;
SQL2:
update tbl_account set balance=balance+10000 where accountNo=B帳號;
SQL1和SQL2必須處在同一個事務中,從而保證同時成功或者同時失敗。】

 

事務的四大特性(ACID):


  atomic,原子性,事務是不可分割的,要麼同時成功,要麼同時失敗;
  consistency,一致性,事務一旦結束,記憶體中的資料和資料庫中的資料是保持一致;
  isolation,隔離性,事務之間互不干擾,一個事務的結束意味著下一個事務的開啟;
  duration,持久性,事務一旦提交,則資料持久化到資料庫中,永久儲存

  在oracle中,操作事務的命令:
  1.commit,提交事務
  把事務中所有的資料持久化到磁碟中

  2.rollback to 復原點,復原事務
  把事務中所做的操作全部取消,回到初始化狀態

  3.savepoint 復原點,設定復原點
  交易回復時,復原到起點

  總結:
  1.目前主流的資料庫都是支援事務的,而且其中Oracle支援的最好
  2.一個事務不能讀取到另一個事務還沒有提交的資料
  3.DDL語句都會自動認可事務
  4.DML語句不會自動認可事務,需要手動提交commit

多事務的並發處理機制:
原因:多個事務同時操作一個表中的同一行資料,如果這些操作同時修改的話,就會產生並發問題,如果不處理,則會造成資料的不一致的情況

資料庫可能產生的並發問題包括:
1.髒讀
是指一個事務正在訪問資料,並且對這個資料進行修改,而這種修改還沒有提交到資料庫中,而另一個事務也訪問了這個資料,並且使用了這個資料。
解決方案:一個事務在修改資料時,該資料不能被其他事務訪問

2.不可重複讀取:
是指一個事務多次讀取同一條記錄,如果此時另一個事務也訪問並且修改了該資料,則就會出現多次讀取出現資料不一致的情況,原來的資料變成了不可重複讀取的資料。
解決方案:只有在修改事務完全提交過後才可以讀取資料

3.幻讀
是指一個事務修改表中的多行記錄,但是此時另一個事務對該表格進行了插入資料的操作,則第一個事務會發現表格中會出現沒有被修改的行,就像發生了幻象一樣;
解決方案:在一個事務提交資料之前,其他事務不能添加資料

【Oracle中採用‘鎖’來做並發處理】
1.表級排它鎖(X)exclusive mode
2.表級共用鎖定(S)share mode
3.表中行級排它鎖share row exclusive
註:這三種鎖是通過專門的命令來申請的

文法:
lock table tbl_name in mode;

例如:
--以共用鎖定鎖表
lock table tbl_emp in share mode;

--以排它鎖鎖表
lock table tbl_emp in exlusive mdoe;

 4.行級共用鎖定(RS)row share

5.行級排它鎖(RX)row exclusive
註:這兩種鎖無需通過專門的命令申請,而是通過DQL和DML來自動申請的

注意:
1.所有的DQL語句預設情況下都會自動申請RS鎖
2.所有的DML語句預設情況下都會自動申請RX鎖,每一行記錄都有唯一的RX鎖
3.在項目中,為了滿足業務要求,一般select語句需要申請RX鎖

select語句通過for update來申請RX鎖:
select * from s_emp for update;
select * from s_emp for update wait 5;等待5秒
select * from s_emp for update nowait;

Oracle DTL 資料事務語言

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.