Oracle資料庫事務編寫的個人心得

來源:互聯網
上載者:User

標籤:oracle   管理員   資料庫   使用者   記錄   

在Oracle資料庫中,提供了一種被稱為“事務”的控制機制。通過事物,能夠完成對資料有效安全的修改操作,使資料庫中的資料達到一個資料一致的狀態。事務可以把資料庫的好幾個操作步驟當作一個整體,當其中有某個操作沒有成 功的話,則所有操作都會發生復原。Oracle資料庫就是通過這種機制來保障資料的一致性問題。

650) this.width=650;" src="http://183.61.143.148/group1/M00/02/48/tz2PlFQ42JqwqzA9AACJ3hUM028819.png" />

但是,事務若編寫的不好的話,則不但起不到應有的作用,還會大大降低資料庫的效能。如在資料庫事務執行時間比較長,就很有可能導致鎖衝突,從而降低資料庫的並發訪問效能。所以,資料庫管理員在編寫事務時,還是需要遵守幾個指導方針。

指導方針一:在事務中盡量使得訪問的紀錄最小

在事務中,若執行Update等記錄動作陳述式,資料庫為了保障資料的一致性,會對其所訪問的記錄加鎖,防止在同一時間內其他使用者對其修改。此時,若其他使用者需要訪問加鎖的記錄,則必須等待。此時就會發生鎖衝突。

所以,在事務中要盡量使得訪問的記錄量最小。如此就可以減少鎖定的行數,從而減少事務之間的衝突。這要求資料庫管理員在事務中盡量精確的定位語紀 錄。如在資料庫中讀取記錄時,最好能夠使用Where語句進行定位。並且在編寫Where語句的時候,要盡量的詳細,最好能夠實現一對一,則是最好的。

指導方針二:保持事務儘可能的簡潔

在事務中盡量使得訪問的紀錄最小,這是從數量的角度來考慮鎖衝突。而保持事務儘可能的簡潔,則是從時間的角度來考慮避免鎖衝突的事情。保持事務盡可 能的簡潔,主要是要求資料庫管理員在編寫事務的時候,不要把事務寫的太過於龐大與複雜。否則,事務在執行的時候就會佔用比較多的時間。而這直接導致的後果 就是資料庫會把某些記錄、甚至一張資料表鎖住比較長的時間。這就會惡化鎖對資料庫的負面影響。

故當使用者在知道了必須要進行修改的記錄之後,就要馬上啟動事務;並且在最短時間內執行完相關的修改語句,然後立即遞交或者復原。而且,只有在確實需要時,才開啟事務語句。具體的來說,資料庫管理員在事務的簡潔性方面,可以嘗試如下方法。

1、在同一個事務中不要加入過多的修改或者刪除語句。如當使用者需要更新使用者資訊表中的相關資料。例如在員工的編號前加入YG首碼並且同時根據員工入 職年份計算員工工齡。這兩個更新語句若從技術上來說,放在同一個事務中並沒有什麼不妥。但是,當員工數量比較多時,若把他們合并在一起,則這個事務執行得 時間會比較久。為此,最好在更新資料庫表的時候,若預計執行時間會比較長,則最好能夠把更新語句進行分割,如一列列更新等等。

2、在更新時,若一次性更新的語句比較多,最好能夠選擇合適的時候更新。更新某個資料庫中記錄,其執行所需要的時間往往跟資料庫的記錄成正比。其記 錄越多,更新所需要的時間越多。為此,筆者建議,當需要更新的記錄比較多的時候,最好能夠選擇合理的時機。如有些應用程式在設計時,可以把這個更新放在後 台處理。如此的話,應用程式就可以選擇資料庫比較空的時候,來更新表中的記錄。這無疑可以在很大程度上降低事務對資料庫的負面影響。

指導方針三:不要在交易處理期間要求使用者輸入

資料庫管理員在編寫事務時,要確保在事務啟動之前,讓資料庫系統獲 得事務執行所需要的所有內容。如記錄的查詢條件、所需要更新的內容等等。如果在事務執行的過程中還需要使用者的輸入,就復原當前的事務。當使用者提供了必要的 參數之後,再重新啟動這個事務。因為即使在事務執行的過程中,使用者立即響應。但是,使用者的反應速度要比電腦的響應速度慢的多。所以,當使用者在事務執行的過 程中需要輸入參數的話,就會使得這個事務所佔用的資料庫資源要保持很長的時間。這就有可能增加阻塞的風險。因為當使用者沒有及時輸入所需要的參數時,事務仍 然會保持活動狀態,並鎖定相關的資源,直到他們響應為止。若使用者所需要輸入的參數比較多時,使用者可能會幾分鐘甚至一個小時沒有輸入。

指導方針四:在瀏覽資料時,盡量不要開啟事務

根據筆者的經驗,使用者更改資料所需要的時間,其實很少。而大部分時間則是在更改資料之前對資料的分析上。如在定位需要對哪些資料要變更;如在更改事務遞交好的審核;如在考慮該怎麼變更。這個分析工作所佔據的時間往往是大頭。

故 筆者提醒資料庫管理員,在所有預備的資料分析完成之前,在使用者資料瀏覽的時候,不要啟動事務。也就是說,在使用者更改資料的時候,仍然不是觸發更新事務的最 佳時間。只有到使用者確認無誤後,選擇“更新”按鈕,此時,才可以觸發這個事務。並且,及時遞交或者復原這個事務。如此,在事後審核的過程中,事務 就不會繼續佔用資源。

除了以上這些指導方針外,還有其他的一些小細節要注意。資料庫管理員在設計跟更新相關的事務時,要合理選擇時機。讓事務在保障資料安全性的同時,最大限度的降低其負面作用。

如果想瞭解更多資料庫教程知識可登陸e良師益友網。


本文出自 “語過添情” 部落格,請務必保留此出處http://yuguotianqing.blog.51cto.com/9292883/1563124

Oracle資料庫事務編寫的個人心得

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.