两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

數(shù)據(jù)庫死鎖處理方法及裝置與流程

文檔序號:12824522閱讀:357來源:國知局
數(shù)據(jù)庫死鎖處理方法及裝置與流程

本發(fā)明涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫死鎖處理方法及裝置。



背景技術(shù):

現(xiàn)有的主機(jī)系統(tǒng)有強(qiáng)大的并發(fā)事務(wù)處理能力,所說的事務(wù)是指主機(jī)系統(tǒng)中的數(shù)據(jù)庫系統(tǒng)訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)的一個程序執(zhí)行單元。在使用數(shù)據(jù)庫表的系統(tǒng)中,只要存在對集中資源(數(shù)據(jù))的大量并發(fā)更新,就不可避免出現(xiàn)數(shù)據(jù)庫死鎖(deadlock,是指在數(shù)據(jù)庫系統(tǒng)中,假設(shè)有事務(wù)t1封鎖數(shù)據(jù)a,事務(wù)t2封鎖數(shù)據(jù)b。之后,事務(wù)t1申請封鎖數(shù)據(jù)b,事務(wù)t2也申請封鎖數(shù)據(jù)a,由于事務(wù)t1已封鎖數(shù)據(jù)a,事務(wù)t2已經(jīng)封鎖數(shù)據(jù)b,這樣就出現(xiàn)了事務(wù)t1等事務(wù)t2,而事務(wù)t2又在等待事務(wù)t1的局面,兩個事務(wù)都不能結(jié)束,形成死鎖)。比如,數(shù)據(jù)記錄間存在主子從屬關(guān)系,在處理子記錄時還需要更新主記錄,如果主子記錄不在同一數(shù)據(jù)庫分區(qū),且不在同一作業(yè)內(nèi)被處理,則作業(yè)間就有可能會產(chǎn)生死鎖。再比如,對于需要連續(xù)更新兩個實(shí)體(數(shù)據(jù))表a和b(可以是多個),如果實(shí)體(數(shù)據(jù))表a和b的分區(qū)規(guī)則不一致,則作業(yè)間就有可能會產(chǎn)生死鎖。其中,數(shù)據(jù)庫分區(qū)是指根據(jù)預(yù)設(shè)的條件將數(shù)據(jù)表進(jìn)一步細(xì)分為段,這些數(shù)據(jù)庫對象的段叫做分區(qū)。數(shù)據(jù)表的分區(qū)是通過“分區(qū)鍵”來實(shí)現(xiàn)的,分區(qū)鍵指的是一些列,這些列決定了某一行所在的分區(qū)。預(yù)設(shè)條件可以包括以下幾種:(1)范圍分區(qū):每個分區(qū)都由一個分區(qū)鍵值范圍指定(對于一個以日期列作為分區(qū)鍵的表,“2005年1月”分區(qū)包含分區(qū)鍵值為從“2005年1月1日”到“2005年1月31日”的行)。(2)列表分區(qū):每個分區(qū)都由一個分區(qū)鍵值列表指定(對于一個地區(qū)列作為分區(qū)鍵的表,“北美”分區(qū)可能包含值“加拿大”“美國”和“墨西哥”)。(3)散列分區(qū):將散列算法用于分區(qū)鍵來確定指定行所在的分區(qū)。(4)組合范圍散列分區(qū):范圍和散列分區(qū)技術(shù)的組合,通過該組合,首先對表進(jìn)行范圍分區(qū),然后針對每個單獨(dú)的范圍分區(qū)再使用散列分區(qū)技術(shù)進(jìn)一步細(xì)分。(5)組合范圍列表分區(qū):范圍和列表分區(qū)技術(shù)的組合,通過該組合,首先對表進(jìn)行范圍分區(qū),然后針對每個單獨(dú)的范圍分區(qū)再使用列表分區(qū)技術(shù)進(jìn)一步細(xì)分。

對于數(shù)據(jù)庫死鎖的一般處理流程是:在發(fā)現(xiàn)數(shù)據(jù)庫死鎖后,將其中一方或幾方事務(wù)進(jìn)行舍棄回滾釋放資源,即自動中斷作業(yè)或交易,保證剩余一方事務(wù)正常完成;由維護(hù)人員去調(diào)取作業(yè)報錯信息來發(fā)現(xiàn)異常,然后按照給定的應(yīng)急方法進(jìn)行處理。上述方案存在以下問題:在數(shù)據(jù)庫死鎖發(fā)生后進(jìn)行處理,影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,增加主機(jī)系統(tǒng)的維護(hù)工作量;舍棄其中一方或幾方事務(wù),只處理一方事務(wù),影響并發(fā)事務(wù)處理的時長,使得時效性差;維護(hù)人員不能及時發(fā)現(xiàn)數(shù)據(jù)庫死鎖發(fā)生,影響并發(fā)事務(wù)處理的時效性。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫死鎖處理方法,在數(shù)據(jù)庫死鎖發(fā)生前對待處理數(shù)據(jù)進(jìn)行相應(yīng)的處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。該方法包括:

獲取待處理文件,并確定待處理文件的分區(qū)規(guī)則;

從數(shù)據(jù)庫中查找與所述待處理文件有關(guān)聯(lián)的主記錄文件,并確定所述主記錄文件的分區(qū)規(guī)則;

將待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則進(jìn)行比較,當(dāng)待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則不同時,根據(jù)主記錄文件的分區(qū)規(guī)則,對待處理文件進(jìn)行重新分區(qū),根據(jù)重新分區(qū)的待處理文件更新主記錄文件。

在一個實(shí)施例中,還包括:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,還包括:

獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生,包括:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

在一個實(shí)施例中,所述指定信息包括deadlock或timeout。

本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫死鎖處理裝置,在數(shù)據(jù)庫死鎖發(fā)生前對待處理的數(shù)據(jù)進(jìn)行相應(yīng)的處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。該裝置包括:

獲取模塊,用于獲取待處理文件,并確定待處理文件的分區(qū)規(guī)則;

查找模塊,用于從數(shù)據(jù)庫中查找與所述待處理文件有關(guān)聯(lián)的主記錄文件,并確定所述主記錄文件的分區(qū)規(guī)則;

比較模塊,用于將待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則進(jìn)行比較;

分區(qū)更新模塊,用于當(dāng)待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則不同時,根據(jù)主記錄文件的分區(qū)規(guī)則,對待處理文件進(jìn)行重新分區(qū),根據(jù)重新分區(qū)的待處理文件更新主記錄文件。

在一個實(shí)施例中,還包括:數(shù)據(jù)庫死鎖處理模塊;

所述數(shù)據(jù)庫死鎖處理模塊用于:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,所述數(shù)據(jù)庫死鎖處理模塊還用于:

在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,所述數(shù)據(jù)庫死鎖處理模塊具體用于:

按如下方式對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

在一個實(shí)施例中,所述指定信息包括deadlock或timeout。

在本發(fā)明實(shí)施例中,針對數(shù)據(jù)記錄間存在主子從屬關(guān)系,在處理子記錄時還需要更新主記錄,如果主子記錄不在同一數(shù)據(jù)庫分區(qū),且不在同一作業(yè)內(nèi)被處理,則作業(yè)間就有可能會產(chǎn)生死鎖的情況,本發(fā)明根據(jù)主記錄文件的分區(qū)規(guī)則,對待處理文件進(jìn)行重新分區(qū),根據(jù)重新分區(qū)的待處理文件更新主記錄文件。與現(xiàn)有技術(shù)相比,本發(fā)明是在數(shù)據(jù)庫死鎖發(fā)生前對待處理數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。

本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫死鎖處理方法,在數(shù)據(jù)庫死鎖發(fā)生前對待處理數(shù)據(jù)進(jìn)行相應(yīng)的處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。該方法包括:

獲取數(shù)據(jù)表更新請求信息;其中,數(shù)據(jù)表更新請求信息包括待更新數(shù)據(jù)表信息;

根據(jù)數(shù)據(jù)表更新請求信息中的待更新數(shù)據(jù)表信息,從數(shù)據(jù)庫中查找相應(yīng)的多個數(shù)據(jù)表,并確定多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系和多個數(shù)據(jù)表的分區(qū)規(guī)則;

根據(jù)多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系確定多個數(shù)據(jù)表的更新順序;

按照所述更新順序?qū)⒍鄠€數(shù)據(jù)表中的相鄰數(shù)據(jù)表的分區(qū)規(guī)則進(jìn)行比較,當(dāng)相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同時,對所述更新順序中的前一數(shù)據(jù)表進(jìn)行更新操作,生成第一中間文件,根據(jù)更新順序中的后一數(shù)據(jù)表的分區(qū)規(guī)則對第一中間文件重新分區(qū),生成第二中間文件,根據(jù)第二中間文件對后一數(shù)據(jù)表進(jìn)行更新操作。

在一個實(shí)施例中,還包括:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,還包括:

獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生,包括:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

在一個實(shí)施例中,所述指定信息包括deadlock或timeout。

本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫死鎖處理裝置,在數(shù)據(jù)庫死鎖發(fā)生前對待處理的數(shù)據(jù)進(jìn)行相應(yīng)的處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。該裝置包括:

獲取模塊,用于獲取數(shù)據(jù)表更新請求信息;其中,數(shù)據(jù)表更新請求信息包括待更新數(shù)據(jù)表信息;

查找模塊,用于根據(jù)數(shù)據(jù)表更新請求信息,從數(shù)據(jù)庫中查找相應(yīng)的多個數(shù)據(jù)表,并確定多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系和多個數(shù)據(jù)表的分區(qū)規(guī)則;

更新順序確定模塊,用于根據(jù)多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系確定多個數(shù)據(jù)表的更新順序;

比較模塊,按照所述更新順序?qū)⒍鄠€數(shù)據(jù)表中的相鄰數(shù)據(jù)表的分區(qū)規(guī)則進(jìn)行比較;

分區(qū)更新模塊,用于當(dāng)相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同時,對更新順序中相鄰的兩個數(shù)據(jù)表中的前一數(shù)據(jù)表進(jìn)行更新操作,生成第一中間文件,根據(jù)更新順序中相鄰的兩個數(shù)據(jù)表中的后一數(shù)據(jù)表的分區(qū)規(guī)則對第一中間文件重新分區(qū),生成第二中間文件,根據(jù)第二中間文件對后一數(shù)據(jù)表進(jìn)行更新操作。

在一個實(shí)施例中,還包括:數(shù)據(jù)庫死鎖處理模塊;

所述數(shù)據(jù)庫死鎖處理模塊用于:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,所述數(shù)據(jù)庫死鎖處理模塊還用于:

在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

在一個實(shí)施例中,所述數(shù)據(jù)庫死鎖處理模塊具體用于:

按如下方式對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

在一個實(shí)施例中,所述指定信息包括deadlock或timeout。

在本發(fā)明實(shí)施例中,針對需要連續(xù)更新兩個實(shí)體(數(shù)據(jù))表a和b,如果實(shí)體(數(shù)據(jù))表a和b的分區(qū)規(guī)則不一致,則作業(yè)間就有可能會產(chǎn)生死鎖的情況,本發(fā)明會在相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同時,對前一數(shù)據(jù)表進(jìn)行更新操作,生成第一中間文件,根據(jù)后一數(shù)據(jù)表的分區(qū)規(guī)則對第一中間文件重新分區(qū),生成第二中間文件,根據(jù)第二中間文件對后一數(shù)據(jù)表進(jìn)行更新操作。與現(xiàn)有技術(shù)相比,本發(fā)明是在數(shù)據(jù)庫死鎖發(fā)生前對待處理數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。

另外,當(dāng)數(shù)據(jù)庫死鎖發(fā)生后,會自動獲取對數(shù)據(jù)庫進(jìn)行更新操作的出錯信息,并將更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員,這樣維護(hù)人員能及時發(fā)現(xiàn)數(shù)據(jù)庫死鎖發(fā)生,不影響并發(fā)事務(wù)處理的時效性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理方法流程圖一;

圖2是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理裝置結(jié)構(gòu)示意圖一;

圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理方法流程圖二;

圖4是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理裝置結(jié)構(gòu)示意圖二。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

針對數(shù)據(jù)記錄間存在主子從屬關(guān)系,在處理子記錄時還需要更新主記錄,如果主子記錄不在同一數(shù)據(jù)庫分區(qū),且不在同一作業(yè)內(nèi)被處理,則作業(yè)間就有可能會產(chǎn)生死鎖的情況,本發(fā)明提出一種數(shù)據(jù)庫死鎖處理方法,進(jìn)行提前預(yù)防,對數(shù)據(jù)進(jìn)行預(yù)處理,重新分布待處理數(shù)據(jù),防止數(shù)據(jù)庫死鎖發(fā)生。

圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理方法流程圖一,由圖1所示的流程可知,在本發(fā)明實(shí)施例中,一種數(shù)據(jù)庫死鎖處理方法包括:

步驟101:獲取待處理文件,并確定待處理文件的分區(qū)規(guī)則;

步驟102:從數(shù)據(jù)庫中查找與所述待處理文件有關(guān)聯(lián)的主記錄文件,并確定所述主記錄文件的分區(qū)規(guī)則;

步驟103:將待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則進(jìn)行比較,當(dāng)待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則不同時,根據(jù)主記錄文件的分區(qū)規(guī)則,對待處理文件進(jìn)行重新分區(qū),根據(jù)重新分區(qū)的待處理文件更新主記錄文件。

具體實(shí)施時,根據(jù)待處理數(shù)據(jù)的特點(diǎn),比如,子記錄(待處理文件中的數(shù)據(jù))的應(yīng)用操作只有寫,而主記錄應(yīng)用操作為更新,此時將本來按子記錄的范圍進(jìn)行拆分的輸入文件(待處理文件),按主子記錄關(guān)系對應(yīng)查找到相應(yīng)的主記錄文件,重新按照主記錄文件的范圍(分區(qū)規(guī)則),對待處理文件重新進(jìn)行組合、拆分(重新分區(qū))形成新輸入文件,根據(jù)新輸入文件對主記錄文件進(jìn)行更新,這樣使每一個作業(yè)的更新操作都集中在一個分區(qū)內(nèi),從而避免數(shù)據(jù)庫死鎖。

具體實(shí)施時,對于數(shù)據(jù)庫死鎖的一般處理流程是:由維護(hù)人員去調(diào)取作業(yè)報錯信息來發(fā)現(xiàn)異常,然后按照給定的應(yīng)急方法進(jìn)行處理。這樣由于維護(hù)人員不能及時發(fā)現(xiàn)數(shù)據(jù)庫死鎖發(fā)生,影響并發(fā)事務(wù)處理的時效性。基于此,本發(fā)明方法還會在數(shù)據(jù)庫死鎖發(fā)生后采取如下方式:自動獲取更新操作出錯信息(比如log信息),當(dāng)對更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。具體的,確定數(shù)據(jù)庫死鎖發(fā)生,是在當(dāng)更新操作出錯信息中包含指定信息時,其中指定信息可以包括deadlock(死鎖)或timeout(超時)等等。

具體實(shí)施時,在對更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,還包括:獲取數(shù)據(jù)庫死鎖處理信息,并將數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生,包括:

基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)庫死鎖處理裝置,如下面的實(shí)施例所述。由于數(shù)據(jù)庫死鎖處理裝置解決問題的原理與數(shù)據(jù)庫死鎖處理方法相似,因此數(shù)據(jù)庫死鎖處理裝置的實(shí)施可以參見數(shù)據(jù)庫死鎖處理方法的實(shí)施,重復(fù)之處不再贅述。以下所使用的,術(shù)語“單元”或者“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。

圖2是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理裝置結(jié)構(gòu)示意圖一,如圖2所示,在本發(fā)明實(shí)施例中,一種數(shù)據(jù)庫死鎖處理裝置包括:

獲取模塊202,用于獲取待處理文件,并確定待處理文件的分區(qū)規(guī)則;

查找模塊204,用于從數(shù)據(jù)庫中查找與所述待處理文件有關(guān)聯(lián)的主記錄文件,并確定所述主記錄文件的分區(qū)規(guī)則;

比較模塊206,用于將待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則進(jìn)行比較;

分區(qū)更新模塊208,用于當(dāng)待處理文件的分區(qū)規(guī)則和主記錄文件的分區(qū)規(guī)則不同時,根據(jù)主記錄文件的分區(qū)規(guī)則,對待處理文件進(jìn)行重新分區(qū),根據(jù)重新分區(qū)的待處理文件更新主記錄文件。

下面對該結(jié)構(gòu)進(jìn)行說明。

具體實(shí)施時,該數(shù)據(jù)庫死鎖處理裝置還包括:數(shù)據(jù)庫死鎖處理模塊;

所述數(shù)據(jù)庫死鎖處理模塊用于:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

具體實(shí)施時,數(shù)據(jù)庫死鎖處理模塊還用于:

在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

具體實(shí)施時,數(shù)據(jù)庫死鎖處理模塊具體用于:

按如下方式對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

具體實(shí)施時,指定信息包括deadlock或timeout。

針對需要連續(xù)更新兩個實(shí)體(數(shù)據(jù))表a和b(可以是多個),如果實(shí)體(數(shù)據(jù))表a和b的分區(qū)規(guī)則不一致,則作業(yè)間就有可能會產(chǎn)生死鎖的情況,本發(fā)明提出另一種數(shù)據(jù)庫死鎖處理方法,進(jìn)行事中改造,就是進(jìn)行異步處理,對連續(xù)的更新動作進(jìn)行拆解,防止數(shù)據(jù)庫死鎖發(fā)生。

圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理方法流程圖二,由圖3所示的流程可知,在本發(fā)明實(shí)施例中,該數(shù)據(jù)庫死鎖處理方法包括:

步驟301:獲取數(shù)據(jù)表更新請求信息;其中,數(shù)據(jù)表更新請求信息包括待更新數(shù)據(jù)表信息;

步驟302:根據(jù)數(shù)據(jù)表更新請求信息中的待更新數(shù)據(jù)表信息,從數(shù)據(jù)庫中查找相應(yīng)的多個數(shù)據(jù)表,并確定多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系和多個數(shù)據(jù)表的分區(qū)規(guī)則;

步驟303:根據(jù)多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系確定多個數(shù)據(jù)表的更新順序;

步驟304:按照所述更新順序?qū)⒍鄠€數(shù)據(jù)表中的相鄰數(shù)據(jù)表的分區(qū)規(guī)則進(jìn)行比較,當(dāng)相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同時,對所述更新順序中的前一數(shù)據(jù)表進(jìn)行更新操作,生成第一中間文件,根據(jù)更新順序中的后一數(shù)據(jù)表的分區(qū)規(guī)則對第一中間文件重新分區(qū),生成第二中間文件,根據(jù)第二中間文件對后一數(shù)據(jù)表進(jìn)行更新操作。

具體實(shí)施時,按照更新順序?qū)⒍鄠€數(shù)據(jù)表中的相鄰數(shù)據(jù)表的分區(qū)規(guī)則進(jìn)行比較,指的是兩兩比較。比如,有三個數(shù)據(jù)表a、b、c,將數(shù)據(jù)表a和數(shù)據(jù)表b的分區(qū)規(guī)則進(jìn)行比較,將數(shù)據(jù)表b和數(shù)據(jù)表c的分區(qū)規(guī)則進(jìn)行比較。當(dāng)相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同指的是數(shù)據(jù)表a和數(shù)據(jù)表b的分區(qū)規(guī)則不同,數(shù)據(jù)表b和數(shù)據(jù)表c的分區(qū)規(guī)則不同。而數(shù)據(jù)表a和數(shù)據(jù)表c的分區(qū)規(guī)則可以相同,也可以不相同。

下面以更新兩個數(shù)據(jù)表和更新三個數(shù)據(jù)表來說明該方法過程。

例如,對于需要連續(xù)更新兩個實(shí)體表a和b。首先獲取的數(shù)據(jù)表更新請求信息中包括實(shí)體表a和b的信息,比如數(shù)據(jù)表名稱、數(shù)據(jù)表中的數(shù)據(jù)信息、所要更新數(shù)據(jù)表a和b中的信息等等。根據(jù)數(shù)據(jù)表更新請求信息中的實(shí)體表a和b的信息,從數(shù)據(jù)庫中查找相應(yīng)的數(shù)據(jù)表a和b,然后確定數(shù)據(jù)表a和b間的關(guān)聯(lián)關(guān)系和數(shù)據(jù)表a和b的分區(qū)規(guī)則,根據(jù)數(shù)據(jù)表a和b間的關(guān)聯(lián)關(guān)系確定數(shù)據(jù)表a和b的更新順序,比如可以先更新a再更新b。然后比較數(shù)據(jù)表a和b的分區(qū)規(guī)則,當(dāng)兩者相同時,則同時更新數(shù)據(jù)表a和b;當(dāng)數(shù)據(jù)表a和b的分區(qū)規(guī)則不一致時,采取分步更新,即,首先正常并發(fā)處理(更新)表a,完成第一次更新操作,產(chǎn)生結(jié)果文件群a,然后對將中間文件群a中的文件a1、a2、……an,按照數(shù)據(jù)表b的分區(qū)規(guī)則進(jìn)行重組,生成中間文件群b,其中文件群b包括b1、b2、……bn,再按b1、b2、……bn對數(shù)據(jù)表b進(jìn)行更新操作,完成第二次更新操作。

例如,對于需要連續(xù)更新三個數(shù)據(jù)表a、b和c。首先獲取的數(shù)據(jù)表更新請求信息中包括實(shí)體表a、b和c的信息,根據(jù)數(shù)據(jù)表更新請求信息中的實(shí)體表a、b和c的信息,從數(shù)據(jù)庫中查找相應(yīng)的數(shù)據(jù)表a、b和c,然后確定數(shù)據(jù)表a、b和c間的關(guān)聯(lián)關(guān)系,數(shù)據(jù)表a、b和c的分區(qū)規(guī)則,根據(jù)數(shù)據(jù)表a、b和c間的關(guān)聯(lián)關(guān)系確定數(shù)據(jù)表a、b和c的更新順序,比如可以先更新a再更新b,再更新c。然后比較數(shù)據(jù)表a和b的分區(qū)規(guī)則,數(shù)據(jù)表b和c的分區(qū)規(guī)則,當(dāng)a和b的分區(qū)規(guī)則相同時,則同時更新數(shù)據(jù)表a和b,當(dāng)數(shù)據(jù)表b和c的分區(qū)規(guī)則相同時,則同時更新數(shù)據(jù)表b和c。當(dāng)數(shù)據(jù)表a和b的分區(qū)規(guī)則不一致時,采取分步更新,即,首先正常并發(fā)處理(更新)表a,完成第一次更新操作,產(chǎn)生結(jié)果文件群a,然后對將中間文件群a中的文件a1、a2、……an,按照數(shù)據(jù)表b的分區(qū)規(guī)則進(jìn)行重組,生成中間文件群b,其中文件群b包括b1、b2、……bn,再按b1、b2、……bn對數(shù)據(jù)表b進(jìn)行更新操作,完成第二次更新操作。當(dāng)數(shù)據(jù)表b和c的分區(qū)規(guī)則不一致時,同樣采取分步更新,即,按b1、b2、……bn正常并發(fā)處理(更新)表b,完成第二次更新操作,產(chǎn)生結(jié)果文件群c,然后對將中間文件群c中的文件c1、c2、……cn,按照數(shù)據(jù)表c的分區(qū)規(guī)則進(jìn)行重組,生成中間文件群d,其中文件群d包括d1、d2、……dn,再按d1、d2、……dn對數(shù)據(jù)表c進(jìn)行更新操作,完成第三次更新操作。

具體實(shí)施時,針對上述這種情況執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,該方法同樣會自動獲取更新操作出錯信息(比如log信息),當(dāng)對更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員,同時還會獲取數(shù)據(jù)庫死鎖處理信息,并將數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。具體的,當(dāng)更新操作出錯信息中包含指定信息時,才會確定數(shù)據(jù)庫死鎖發(fā)生,其中指定信息可以包括deadlock或timeout等等。

基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)庫死鎖處理裝置,如下面的實(shí)施例所述。該數(shù)據(jù)庫死鎖處理裝置的實(shí)施同樣可以參見上述數(shù)據(jù)庫死鎖處理方法的實(shí)施,重復(fù)之處不再贅述。

圖4是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫死鎖處理裝置結(jié)構(gòu)示意圖二,如圖4所示,在本發(fā)明實(shí)施例中,該數(shù)據(jù)庫死鎖處理裝置包括:

獲取模塊402,用于獲取數(shù)據(jù)表更新請求信息;其中,數(shù)據(jù)表更新請求信息包括待更新數(shù)據(jù)表信息;

查找模塊404,用于根據(jù)數(shù)據(jù)表更新請求信息,從數(shù)據(jù)庫中查找相應(yīng)的多個數(shù)據(jù)表,并確定多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系和多個數(shù)據(jù)表的分區(qū)規(guī)則;

更新順序確定模塊406,用于根據(jù)多個數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系確定多個數(shù)據(jù)表的更新順序;

比較模塊408,按照所述更新順序?qū)⒍鄠€數(shù)據(jù)表中的相鄰數(shù)據(jù)表的分區(qū)規(guī)則進(jìn)行比較;

分區(qū)更新模塊410,用于當(dāng)相鄰數(shù)據(jù)表的分區(qū)規(guī)則不同時,對更新順序中相鄰的兩個數(shù)據(jù)表中的前一數(shù)據(jù)表進(jìn)行更新操作,生成第一中間文件,根據(jù)更新順序中相鄰的兩個數(shù)據(jù)表中的后一數(shù)據(jù)表的分區(qū)規(guī)則對第一中間文件重新分區(qū),生成第二中間文件,根據(jù)第二中間文件對后一數(shù)據(jù)表進(jìn)行更新操作。

下面對該結(jié)構(gòu)進(jìn)行說明。

具體實(shí)施時,該數(shù)據(jù)庫死鎖處理裝置還包括:數(shù)據(jù)庫死鎖處理模塊;

所述數(shù)據(jù)庫死鎖處理模塊用于:當(dāng)執(zhí)行更新操作發(fā)生數(shù)據(jù)庫死鎖時,自動獲取更新操作出錯信息,當(dāng)對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生時,將所述更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

具體實(shí)施時,數(shù)據(jù)庫死鎖處理模塊還用于:

在對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生后,獲取數(shù)據(jù)庫死鎖處理信息,并將所述數(shù)據(jù)庫死鎖處理信息發(fā)送至數(shù)據(jù)庫維護(hù)人員。

具體實(shí)施時,數(shù)據(jù)庫死鎖處理模塊具體用于:

按如下方式對所述更新操作出錯信息進(jìn)行分析確定數(shù)據(jù)庫死鎖發(fā)生:

當(dāng)所述更新操作出錯信息中包含指定信息時,確定數(shù)據(jù)庫死鎖發(fā)生。

具體實(shí)施時,指定信息包括deadlock或timeout。

綜上所述,與現(xiàn)有技術(shù)相比,本發(fā)明提出的方法可以從事前、事中、事后三方面入手,從事前、事中對待處理數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理,從而預(yù)防數(shù)據(jù)庫死鎖發(fā)生,這樣無需舍棄其中一方或幾方事務(wù),不影響并發(fā)事務(wù)處理的時長,使得時效性強(qiáng),不影響主機(jī)系統(tǒng)運(yùn)行的穩(wěn)定性,減少了主機(jī)系統(tǒng)的維護(hù)工作量。當(dāng)數(shù)據(jù)庫死鎖發(fā)生后,會自動獲取對數(shù)據(jù)庫進(jìn)行更新操作的出錯信息,并將更新操作出錯信息發(fā)送至數(shù)據(jù)庫維護(hù)人員,這樣維護(hù)人員能及時發(fā)現(xiàn)數(shù)據(jù)庫死鎖發(fā)生,不影響并發(fā)事務(wù)處理的時效性。另外,本發(fā)明方法還有以下優(yōu)點(diǎn):

(1)易于實(shí)施,增加的分區(qū)更新模塊,原理不復(fù)雜,編寫容易,實(shí)施成本低。

(2)可復(fù)用,分區(qū)更新模塊可應(yīng)用于很多場景,例如需要同時更新賬戶和客戶、或者賬戶和卡戶等多種場景,復(fù)用性好。

(3)大量降低批量中斷次數(shù)。在分區(qū)更新模塊投產(chǎn)后,僅計息日批處理的死鎖中斷次數(shù)從近50次降低到0。

(4)維護(hù)工作變簡單,自動捕捉到死鎖信息并推送給控制臺,一目了然。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實(shí)現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明實(shí)施例可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
防城港市| 乌拉特中旗| 青川县| 凤山县| 崇信县| 丹东市| 枞阳县| 滨海县| 惠安县| 余干县| 稷山县| 寻乌县| 武汉市| 甘泉县| 忻城县| 河曲县| 山丹县| 新余市| 汤阴县| 孝昌县| 沙田区| 兴安县| 胶州市| 长宁县| 贡嘎县| 万年县| 乌拉特后旗| 东莞市| 平果县| 阿拉善盟| 垣曲县| 康马县| 晋中市| 沽源县| 河西区| 田阳县| 海淀区| 鄂托克旗| 北安市| 云霄县| 揭东县|