本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)庫事務優(yōu)化方法及系統(tǒng)。
背景技術(shù):
數(shù)據(jù)庫事務(Database Transaction),是指作為單個邏輯工作單元執(zhí)行的一系列操作,要么完全地執(zhí)行,要么完全地不執(zhí)行。事務處理可以確保除非事務性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。事務是數(shù)據(jù)庫運行中的一個邏輯工作單位,由數(shù)據(jù)庫管理系統(tǒng)中的事務管理子系統(tǒng)負責事務的處理。
目前數(shù)據(jù)庫操作時,要考慮一些特殊情況需要對事務進行回滾,但是,實際上真正出現(xiàn)問題的概率很低,每次采用事務處理方法,導致數(shù)據(jù)庫性能下降。
申請?zhí)枮椋?01310414935.X的中國專利公開了數(shù)據(jù)庫事務處理方法與裝置,用于讓事務可以跨線程工作,該數(shù)據(jù)庫事務處理方法包括:判斷第一事務中的用戶是否處于工作狀態(tài),得出第一判斷結(jié)果;在所述第一判斷結(jié)果為所述用戶處于非工作狀態(tài)時,控制所述第一事務處于暫停狀態(tài),并將所述第一事務所對應的線程給其他用戶使用;判斷所述用戶是否返回工作狀態(tài),并得出第二判斷結(jié)果;在所述第二判斷結(jié)果為所述用戶返回工作狀態(tài)時,調(diào)用所述第一事務,并在任一空閑線程上執(zhí)行所述第一事務。當事務處于非工作狀態(tài),控制該事務處于暫停狀態(tài),并將所述第一事務所對應的線程給其他用戶使用,在一定程序上能夠提高事務的處理效率,但如果同時有大量的事務需要處理,則事務的處理效率并不高,同時若事務處理失敗時,再次處理相同事務時并未給出相應的處理策略。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提供了一種數(shù)據(jù)庫事務優(yōu)化方法及系統(tǒng),提高了數(shù)據(jù)庫事務處理效率,同時保證了數(shù)據(jù)處理的正確性。
為了解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)庫事務優(yōu)化方法,包括以下步驟:
S1:獲取第一事務相對應的第一事務處理程序;
S2:注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
S3:若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);
S4:判斷第二事務相對應的第二事務處理程序是否包括所述第一函數(shù);若包括,則運行所述第二事務處理程序。
本發(fā)明還提供了一種數(shù)據(jù)庫事務優(yōu)化系統(tǒng),包括:
第一獲取模塊,用于獲取第一事務相對應的第一事務處理程序;
注釋模塊,用于注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
第二獲取模塊,用于若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);
第一判斷模塊,用于判斷第二事務相對應的第二事務處理程序是否包括所述第一函數(shù);若包括,則運行所述第二事務處理程序。
本發(fā)明的有益效果:
目前數(shù)據(jù)庫事務處理時,需要開啟事務處理功能,但是,實際上真正出現(xiàn)問題的概率很低,若都啟用事務會導致數(shù)據(jù)庫性能下降,數(shù)據(jù)處理效率變低;本發(fā)明通過注釋第一事務處理程序的開啟事務函數(shù),得到第一程序,運行所述第一程序,若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);運行第二事務時,通過判斷第二事務處理程序中是否包括所述第一函數(shù),若包括,則不注釋第二事務對應的第二事務處理程序,采用正常處理事務的方法處理;若不包括,則注釋所述第二事務處理程序的開啟事務函數(shù),運行注釋后的程序;對于不包括導致第一程序運行失敗的函數(shù)的其他事務,不開啟事務處理功能,減小了程序運行時間,提高了數(shù)據(jù)處理效率;而包括第一函數(shù)的事務開啟事務進行處理,保證了事務處理的準確性;故本發(fā)明在提高了數(shù)據(jù)處理效率的同時,在一定程度上保證了數(shù)據(jù)處理的正確性。
附圖說明
圖1為本發(fā)明實施例的一種數(shù)據(jù)庫事務優(yōu)化方法的主要步驟流程圖;
圖2為根據(jù)本發(fā)明實施例的一種數(shù)據(jù)庫事務優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖;
標號說明:
1、第一獲取模塊;2、注釋模塊;3、第二獲取模塊;4、第一判斷模塊。
具體實施方式
為詳細說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖詳予說明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:通過獲取第一程序運行失敗的第一函數(shù),若第二事務處理程序包括第一函數(shù),則運行第二事務處理程序,能夠提高數(shù)據(jù)庫的事務處理效率,同時保證數(shù)據(jù)處理的正確性。
請參照圖1,本發(fā)明提供了一種數(shù)據(jù)庫事務優(yōu)化方法,包括以下步驟:
S1:獲取第一事務相對應的第一事務處理程序;
S2:注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
S3:若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);
S4:判斷第二事務相對應的第二事務處理程序是否包括所述第一函數(shù);若包括,則運行所述第二事務處理程序。
從上述描述可知,本發(fā)明通過注釋第一事務處理程序的開啟事務函數(shù),得到第一程序,運行所述第一程序,若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);運行第二事務時,通過判斷第二事務處理程序中是否包括所述第一函數(shù),若包括,則不注釋第二事務對應的第二事務處理程序,采用正常處理事務的方法處理;若不包括,則注釋所述第二事務處理程序的開啟事務函數(shù),運行注釋后的程序;對于不包括導致第一程序運行失敗的函數(shù)的其他事務,不開啟事務處理功能,減小了程序運行時間,提高了數(shù)據(jù)處理效率;而包括第一函數(shù)的事務開啟事務進行處理,保證了事務處理的準確性;故本發(fā)明在提高了數(shù)據(jù)處理效率的同時,在一定程度上保證了數(shù)據(jù)處理的正確性。
進一步的,所述S4具體為:
判斷所述第二事務處理程序是否包括所述第一函數(shù);
若包括,則判斷所述第二事務處理程序中第一函數(shù)是否存在一變量值與所述第一事務處理程序中第一函數(shù)對應變量的變量值不相同;
若存在,則注釋所述第二事務處理程序的開啟事務函數(shù),得到第二程序;運行所述第二程序;
否則,運行所述第二事務處理程序。
從上述描述可知,若第二事務處理程序中第一函數(shù)存在一變量值與第一事務處理程序中第一函數(shù)的對應變量的變量值不相同,代表第二事務處理程序中第一函數(shù)相對于第一事務處理程序中第一函數(shù)處理對象不同,此時為了提高效率,通過注釋所述第二事務處理程序的開啟事務函數(shù),得到第二程序;運行所述第二程序;否則,運行所述第二事務處理程序;上述方法,當?shù)诙兞恐导洗嬖谝蛔兞恐蹬c第一變量值集合對應變量的變量值不同時,通過不開啟事務處理的方法,進一步提高了數(shù)據(jù)的處理效率。
進一步的,所述的一種數(shù)據(jù)庫事務優(yōu)化方法,還包括:
預設(shè)數(shù)據(jù)庫的第三事務;
若所述第二程序運行失敗,則判斷所述第三事務是否包括所述第一函數(shù);
若包括,則運行所述第三事務對應的第三事務處理程序;
若所述第二程序運行成功,則注釋所述第三事務處理程序的開啟事務函數(shù),得到第三程序;運行所述第三程序。
從上述描述可知,若第二程序運行失敗,則代表包括第一函數(shù)的事務多次運行失敗,為了保證事務處理的正確性,后續(xù)包括所述第一函數(shù)的事務處理均采用正常事務處理方法,無論事務處理程序包括第一函數(shù)的參數(shù)是否有發(fā)生變化,提高了事務處理的準確性。
進一步的,所述S4具體為:
若所述第二事務處理程序中包括所述第一函數(shù),則在物理內(nèi)存運行所述第二事務處理程序;
否則,注釋所述第二事務處理程序的開啟事務函數(shù),得到第三程序;
在預設(shè)的虛擬內(nèi)存中運行所述第三程序。
從上述描述可知,當同時處理事務過多,會占用過大的物理內(nèi)存,通過虛擬內(nèi)存處理第三程序的方法,提高了計算機處理性能,使事務處理效率得到提高。
進一步的,所述一種數(shù)據(jù)庫事務優(yōu)化方法,還包括:
獲取所述第一事務的初始數(shù)據(jù);
若所述第一程序運行失敗,則替換所述第一事務的數(shù)據(jù)為所述初始數(shù)據(jù)。
從上述描述可知,由于運行第一程序時,并未開啟事務處理功能,導致第一程序運行失敗時不能發(fā)生回滾,通過上述方法,當?shù)谝怀绦蜻\行失敗,能夠?qū)⒌谝皇聞盏臄?shù)據(jù)恢復到初始狀態(tài),使事務不采用事務處理功能時不會造成數(shù)據(jù)出錯。
請參照圖2,提供了一種數(shù)據(jù)庫事務優(yōu)化系統(tǒng),包括:
第一獲取模塊1,用于獲取第一事務相對應的第一事務處理程序;
注釋模塊2,用于注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
第二獲取模塊3,用于若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);
第一判斷模塊4,用于判斷第二事務相對應的第二事務處理程序是否包括所述第一函數(shù);若包括,則運行所述第二事務處理程序。
從上述描述可知,本發(fā)明通過注釋第一事務處理程序的開啟事務函數(shù),得到第一程序,運行所述第一程序,若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);運行第二事務時,通過判斷第二事務處理程序中是否包括所述第一函數(shù),若包括,則不注釋第二事務對應的第二事務處理程序,采用正常處理事務的方法處理;若不包括,則注釋所述第二事務處理程序的開啟事務函數(shù),運行注釋后的程序;對于不包括導致第一程序運行失敗的函數(shù)的其他事務,不開啟事務處理功能,減小了程序運行時間,提高了數(shù)據(jù)處理效率;而包括第一函數(shù)的事務開啟事務進行處理,保證了事務處理的準確性;故本發(fā)明在提高了數(shù)據(jù)處理效率的同時,在一定程度上保證了數(shù)據(jù)處理的正確性。
請參照圖1,本發(fā)明的實施例一為:
獲取第一事務相對應的第一事務處理程序;
注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);
判斷第二事務相對應的第二事務處理程序是否包括所述第一函數(shù);
若包括,則獲取所述第一事務處理程序中第一函數(shù)的變量值,得到第一變量值集合;
獲取所述第二事務處理程序中第一函數(shù)的變量值,得到第二變量值集合;
若所述第二變量值集合中存在一變量值與所述第一變量值集合中對應變量的變量值不相同,則注釋所述第二事務處理程序的開啟事務函數(shù),得到第二程序;運行所述第二程序;否則,運行所述第二事務處理程序。
從上述描述可知,當?shù)诙兞恐导洗嬖谝蛔兞恐蹬c第一變量值集合對應變量的變量值不同時,通過不開啟事務處理的方法,進一步提高了數(shù)據(jù)的處理效率。
本發(fā)明的實施例二為:
實施例二與實施例一的區(qū)別在于,一種數(shù)據(jù)庫事務優(yōu)化方法還包括:
預設(shè)數(shù)據(jù)庫的第三事務;
若所述第二程序運行失敗,則判斷所述第三事務是否包括所述第一函數(shù);若包括,則運行所述第三事務對應的第三事務處理程序;
若所述第二程序運行成功,則注釋所述第三事務處理程序的開啟事務函數(shù),得到第三程序;運行所述第三程序。
從上述描述可知,若第二程序運行失敗,則代表包括第一函數(shù)的事務多次運行失敗,為了保證事務處理的正確性,后續(xù)包括所述第一函數(shù)的事務處理均采用正常事務處理方法,無論事務處理程序包括第一函數(shù)的參數(shù)是否有發(fā)生變化,提高了事務處理的準確性。
本發(fā)明的實施例三為:
獲取第一事務相對應的第一事務處理程序;
獲取所述第一事務的初始數(shù)據(jù);
注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序;
若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);替換所述第一事務的數(shù)據(jù)為所述初始數(shù)據(jù);
若所述第二事務處理程序中包括所述第一函數(shù),則在物理內(nèi)存運行所述第二事務處理程序;
否則,注釋所述第二事務處理程序的開啟事務函數(shù),得到第三程序;在預設(shè)的虛擬內(nèi)存中運行所述第三程序。
從上述描述可知,當同時處理事務過多,會占用過大的物理內(nèi)存,通過虛擬內(nèi)存處理第三程序的方法,提高了計算機處理性能,使事務處理效率得到提高;由于運行第一程序時,并未開啟事務處理功能,導致第一程序運行失敗時不能發(fā)生回滾,通過上述方法,當?shù)谝怀绦蜻\行失敗,能夠?qū)⒌谝皇聞盏臄?shù)據(jù)恢復到初始狀態(tài),使事務不采用事務處理功能時不會造成數(shù)據(jù)出錯。
請參照圖2,本發(fā)明的實施例四為:
第一獲取模塊,用于獲取第一事務相對應的第一事務處理程序,并將第一事務處理程序發(fā)送至注釋模塊;注釋模塊,用于注釋所述第一事務處理程序的開啟事務函數(shù),得到第一程序,發(fā)送第一程序至第二獲取模塊;第二獲取模塊,用于若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù),并將第一函數(shù)發(fā)送至第一判斷單元;第一判斷單元,用于判斷所述第二事務處理程序是否包括所述第一函數(shù),并將判斷結(jié)果發(fā)送至第二判斷單元;第二判斷單元,用于若包括,則判斷所述第二事務處理程序中第一函數(shù)是否存在一變量值與所述第一事務處理程序中第一函數(shù)對應變量的變量值不相同,并將判斷結(jié)果發(fā)送至第一運行單元;第一運行單元,用于若存在,則注釋所述第二事務處理程序的開啟事務函數(shù),得到第二程序;運行所述第二程序;否則,運行所述第二事務處理程序;
預設(shè)模塊,用于預設(shè)數(shù)據(jù)庫的第三事務;第二判斷模塊,用于若所述第二程序運行失敗,則判斷所述第三事務是否包括所述第一函數(shù),并將判斷結(jié)果發(fā)送至第一運行模塊;第一運行模塊,用于若包括,則運行所述第三事務對應的第三事務處理程序;第二運行模塊,用于若所述第二程序運行成功,則注釋所述第三事務處理程序的開啟事務函數(shù),得到第三程序;運行所述第三程序。
本發(fā)明的實施例五為:
從數(shù)據(jù)庫中獲取購買書包對應的第一事務的初始數(shù)據(jù),同時獲取第一事務的相對應的第一事務處理程序,注釋第一事務處理程序的開啟事務函數(shù),得到第一程序;運行第一程序,若第一程序運行失敗了,則獲取導致該程序失敗的第一函數(shù),假設(shè)是buy函數(shù)導致第一程序失敗了;同時將第一事務的數(shù)據(jù)恢復為初始數(shù)據(jù);運行數(shù)據(jù)庫中購買手機對應的第二事務時,檢測到第二事務相對應的第二事務處理程序包括buy函數(shù);判斷第二事務處理程序中buy函數(shù)是否存在一變量值與第一事務處理程序中buy函數(shù)對應變量的變量值不相同,由于第二事務處理的是購買手機的事務,故存在,因此對第二事務采用不開啟事務的方法進行處理;若第二事務處理失敗了,則無論是購買何種商品,后續(xù)包括buy函數(shù)的事務均采用正常的事務處理方法進行處理。
綜上所述,本發(fā)明通過注釋第一事務處理程序的開啟事務函數(shù),得到第一程序,運行所述第一程序,若所述第一程序運行失敗,則獲取導致所述第一程序運行失敗的第一函數(shù);運行第二事務時,通過判斷第二事務處理程序中是否包括所述第一函數(shù),若包括,則不注釋第二事務對應的第二事務處理程序,采用正常處理事務的方法處理;若不包括,則注釋所述第二事務處理程序的開啟事務函數(shù),運行注釋后的程序;對于不包括導致第一程序運行失敗的函數(shù)的其他事務,不開啟事務處理功能,減小了程序運行時間,提高了數(shù)據(jù)處理效率;而包括第一函數(shù)的事務開啟事務進行處理,保證了事務處理的準確性;故本發(fā)明在提高了數(shù)據(jù)處理效率的同時,在一定程度上保證了數(shù)據(jù)處理的正確性。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。