欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種業(yè)務(wù)處理方法和裝置與流程

文檔序號(hào):12802517閱讀:205來源:國知局
一種業(yè)務(wù)處理方法和裝置與流程
本申請(qǐng)屬于數(shù)據(jù)處理
技術(shù)領(lǐng)域
,尤其涉及一種業(yè)務(wù)處理方法和裝置。
背景技術(shù)
:多個(gè)用戶同時(shí)對(duì)數(shù)據(jù)庫的并發(fā)操作時(shí)會(huì)帶來以下數(shù)據(jù)不一致的問題,例如:丟失更新,a和b兩個(gè)用戶讀同一數(shù)據(jù)并進(jìn)行修改,其中一個(gè)用戶的修改結(jié)果破壞了另一個(gè)修改的結(jié)果,比如訂票系統(tǒng);臟讀,a用戶修改了數(shù)據(jù),隨后b用戶又讀出該數(shù)據(jù),但a用戶因?yàn)槟承┰蛉∠藢?duì)數(shù)據(jù)的修改,數(shù)據(jù)恢復(fù)原值,此時(shí)b得到的數(shù)據(jù)就與數(shù)據(jù)庫內(nèi)的數(shù)據(jù)產(chǎn)生了不一致;不可重復(fù)讀,a用戶讀取數(shù)據(jù),隨后b用戶讀出該數(shù)據(jù)并修改,此時(shí)a用戶再讀取數(shù)據(jù)時(shí)發(fā)現(xiàn)前后兩次的值不一致。為了解決這些并發(fā)操作時(shí)候?qū)е碌臄?shù)據(jù)庫中存在的問題,設(shè)置了鎖的概念,所謂的鎖就是在一段時(shí)間內(nèi)禁止用戶做某些操作以避免產(chǎn)生數(shù)據(jù)不一致?,F(xiàn)有的基于數(shù)據(jù)庫的分布式鎖方案,是完全基于數(shù)據(jù)庫的悲觀鎖實(shí)現(xiàn),即,數(shù)據(jù)庫連接會(huì)在整個(gè)業(yè)務(wù)方法執(zhí)行周期內(nèi)一直被保持,如果需要處理的業(yè)務(wù)用時(shí)較長(zhǎng),那么數(shù)據(jù)庫連接會(huì)長(zhǎng)時(shí)間被占用,在高并發(fā)場(chǎng)景下,數(shù)據(jù)庫連接有被用光的危險(xiǎn)。針對(duì)上述問題,目前尚未提出有效的解決方案。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)目的在于提供一種業(yè)務(wù)處理方法和裝置,可以解決現(xiàn)有的數(shù)據(jù)庫連接的長(zhǎng)時(shí)間占用而導(dǎo)致的數(shù)據(jù)連接被用光的技術(shù)問題。本申請(qǐng)?zhí)峁┮环N業(yè)務(wù)處理方法和裝置是這樣實(shí)現(xiàn)的:一種業(yè)務(wù)處理方法,所述方法包括:確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);如果處于可分配狀態(tài),則將所述被請(qǐng)求的行級(jí)鎖分配給所述進(jìn)程;設(shè)置所述被請(qǐng)求的行級(jí)鎖為鎖定狀態(tài),并釋放數(shù)據(jù)庫與所述進(jìn)程之間的數(shù)據(jù)庫連接;控制所述進(jìn)程進(jìn)行業(yè)務(wù)處理。一種業(yè)務(wù)處理裝置,所述裝置包括:確定模塊,用于確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);分配模塊,用于在確定處于可分配狀態(tài)的情況下,將所述被請(qǐng)求的行級(jí)鎖分配給所述進(jìn)程;第一釋放模塊,用于設(shè)置所述被請(qǐng)求的行級(jí)鎖為鎖定狀態(tài),并釋放數(shù)據(jù)庫與所述進(jìn)程之間的數(shù)據(jù)庫連接;控制模塊,用于控制所述進(jìn)程進(jìn)行業(yè)務(wù)處理。本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理方法和裝置,采用了在為進(jìn)程分配行級(jí)鎖之后就隨即釋放數(shù)據(jù)庫連接,將數(shù)據(jù)庫連接的釋放操作放在業(yè)務(wù)處理之前,而不是放在業(yè)務(wù)處理之后。利用本申請(qǐng)實(shí)施方案,使得數(shù)據(jù)庫連接不會(huì)長(zhǎng)時(shí)間被占用,從而避免了數(shù)據(jù)庫連接被用光的問題的產(chǎn)生。附圖說明為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理方法的一種實(shí)施例的方法流程圖;圖2是本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理方法的另一種實(shí)施例的方法流程圖;圖3是本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理裝置的一種實(shí)施例的硬件架構(gòu)示意圖;圖4是本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理裝置的一種實(shí)施例的模塊結(jié)構(gòu)示意圖。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域
的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。為了使本
技術(shù)領(lǐng)域
的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。圖1是本申請(qǐng)所述一種業(yè)務(wù)處理方法一個(gè)實(shí)施例的方法流程圖。雖然本申請(qǐng)?zhí)峁┝巳缦率鰧?shí)施例或附圖所示的方法操作步驟或裝置結(jié)構(gòu),但基于常規(guī)或者無需創(chuàng)造性的勞動(dòng)在所述方法或裝置中可以包括更多或者更少的操作步驟或模塊單元。在邏輯性上不存在必要因果關(guān)系的步驟或結(jié)構(gòu)中,這些步驟的執(zhí)行順序或裝置的模塊結(jié)構(gòu)不限于本申請(qǐng)實(shí)施例描述及附圖所示的執(zhí)行順序或模塊結(jié)構(gòu)。所述的方法或模塊結(jié)構(gòu)的在實(shí)際中的裝置或終端產(chǎn)品應(yīng)用時(shí),可以按照實(shí)施例或者附圖所示的方法或模塊結(jié)構(gòu)連接進(jìn)行順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境,甚至分布式處理環(huán)境)。具體的如圖1所述,本申請(qǐng)一種實(shí)施例提供的一種業(yè)務(wù)處理方法可以包括:s101:確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);基于數(shù)據(jù)庫的分布式鎖方案,是完全基于數(shù)據(jù)庫的悲觀鎖實(shí)現(xiàn),即,數(shù)據(jù)庫連接會(huì)在整個(gè)業(yè)務(wù)方法執(zhí)行周期內(nèi)一直被保持,那么,如果需要處理的業(yè)務(wù)用時(shí)比較長(zhǎng),數(shù)據(jù)庫連接就會(huì)長(zhǎng)時(shí)間被占用,在高并發(fā)的場(chǎng)景下,數(shù)據(jù)庫連接就存在被用光的風(fēng)險(xiǎn)。對(duì)于頁級(jí)鎖和行級(jí)鎖而言,是不存在被用光的風(fēng)險(xiǎn)的,但是行級(jí)鎖,被用光的可能性就很高,所謂行級(jí)鎖就是僅對(duì)指定的記錄進(jìn)行加鎖,在這種情況下,其它進(jìn)程還是可以對(duì)同一個(gè)表中的其它記錄進(jìn)行操作的,僅是不可以對(duì)使用了行級(jí)鎖的記錄進(jìn)行操作。即,行級(jí)鎖是是排它鎖,被鎖定行不可進(jìn)行修改,刪除。因此,鎖存在一個(gè)被占用和未被占用的情況,對(duì)于進(jìn)程而言,可以申請(qǐng)未被占用的行級(jí)鎖,但是不能申請(qǐng)被占用的行級(jí)鎖。在一個(gè)實(shí)施方式中,為了確定當(dāng)前進(jìn)程所請(qǐng)求的行級(jí)鎖是否可以被請(qǐng)求,可以采用行級(jí)鎖狀態(tài)表的方式記錄每個(gè)行級(jí)鎖的狀態(tài),該行級(jí)鎖狀態(tài)表可以采用表格的形式,也可以采用一條條記錄的形式,如果是表格的形式,可以每一行記錄一個(gè)行級(jí)鎖的占用情況,如果是一條條記錄的形式,可以每一條記錄中記錄有該行級(jí)。即,可以從預(yù)先建立的行級(jí)鎖狀態(tài)表中查找所述進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);相應(yīng)的,設(shè)置所述進(jìn)程請(qǐng)求的行級(jí)鎖為鎖定狀態(tài)的過程還可以包括:在所述預(yù)先建立的行級(jí)鎖狀態(tài)表中,將所述進(jìn)程請(qǐng)求的行級(jí)鎖的狀態(tài)設(shè)置為鎖定狀態(tài)。即,實(shí)時(shí)更新行級(jí)鎖狀態(tài)表中各個(gè)行級(jí)鎖的狀態(tài)信息,以便新的進(jìn)程請(qǐng)求的時(shí)候,可以獲得較為準(zhǔn)確的行級(jí)鎖的狀態(tài)信息。考慮到在實(shí)現(xiàn)的時(shí)候,雖然控制進(jìn)程在一拿到行級(jí)鎖就立馬釋放掉這個(gè)行悲觀鎖的數(shù)據(jù)庫連接,即,一拿到鎖就釋放該鎖,但是畢竟是存在時(shí)差的,難免會(huì)有小機(jī)率發(fā)生數(shù)據(jù)庫行悲觀鎖沖突的情況。為了減少這種沖突的影響,可以先確定在預(yù)先建立的行級(jí)鎖狀態(tài)表中,是否存在進(jìn)程請(qǐng)求的行級(jí)鎖的記錄;如果存在,則確定是否可獲取所述進(jìn)程請(qǐng)求的行級(jí)鎖,如果沒有獲取到進(jìn)程請(qǐng)求的行級(jí)鎖,那么就表明當(dāng)前存在小概率的沖突,該鎖正被占用,那么就可以確定該進(jìn)程請(qǐng)求的行級(jí)鎖處于不可分配的狀態(tài),如果可以獲取,那么可以根據(jù)進(jìn)程請(qǐng)求的行級(jí)鎖在所述行級(jí)鎖狀態(tài)表中的記錄,確定所述進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài)。例如,可以通過該行級(jí)鎖在預(yù)先建立的行級(jí)鎖狀態(tài)表中對(duì)應(yīng)的行內(nèi)容里的lockedflag字段來確定該鎖當(dāng)前是否被持有(n標(biāo)識(shí)未被持有,y標(biāo)識(shí)被持有),從而確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài)。舉例而言,對(duì)于每個(gè)行級(jí)鎖而言,可以設(shè)置一個(gè)唯一性標(biāo)識(shí)(lock_key)用于唯一標(biāo)識(shí)一個(gè)行級(jí)鎖,通過一個(gè)狀態(tài)標(biāo)識(shí)(locked_flag)來標(biāo)識(shí)該行級(jí)鎖是否被某個(gè)進(jìn)程持有。每個(gè)行級(jí)鎖對(duì)應(yīng)一個(gè)行記錄,通過對(duì)行記錄的查找,可以實(shí)現(xiàn)對(duì)鎖狀態(tài)的判斷。在一個(gè)實(shí)施方式中,考慮到有時(shí)會(huì)出現(xiàn)一個(gè)行級(jí)鎖被一個(gè)應(yīng)用長(zhǎng)期占用,而導(dǎo)致死鎖情況的發(fā)生,為了解決這種問題,在本例中,設(shè)置了一個(gè)鎖失效時(shí)間,也可以稱之為分配時(shí)長(zhǎng),即,每次在進(jìn)程請(qǐng)求到行級(jí)鎖的時(shí)候,都為該進(jìn)程分配一個(gè)該鎖的可持有時(shí)間,過了這個(gè)時(shí)間之后,如果進(jìn)程仍未釋放該行級(jí)鎖,那么就設(shè)定該鎖自動(dòng)被釋放。可以在上述行級(jí)鎖狀態(tài)表中增加一個(gè)失效時(shí)間字段(lock_expire)用于標(biāo)識(shí)該行級(jí)別鎖的失效時(shí)間。例如,可以如下表1所示:表1lock_keylocked_flaglock_expirelock1y20slock2y5slock3n即,通過如上表1所示的行級(jí)鎖狀態(tài)表,可以確定出當(dāng)前進(jìn)程所請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài),首選,可以根據(jù)進(jìn)程請(qǐng)求的行級(jí)鎖在行級(jí)鎖狀態(tài)表中的記錄,確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于被持有狀態(tài);如果不處于被持有狀態(tài),則確定所述進(jìn)程請(qǐng)求的行級(jí)鎖處于可分配狀態(tài)。如果處于被持有狀態(tài),則確定進(jìn)程請(qǐng)求的行級(jí)鎖是否已超出分配時(shí)長(zhǎng);如果超出,則確定所述進(jìn)程請(qǐng)求的行級(jí)所處于可分配狀態(tài)。為了使得為進(jìn)程分配的行級(jí)鎖的失效時(shí)間是合理的,可以靈活分配失效時(shí)間,例如分配時(shí)長(zhǎng)可以是按照請(qǐng)求的進(jìn)程所對(duì)應(yīng)的業(yè)務(wù)的需求確定的,這樣只需要根據(jù)進(jìn)程所要執(zhí)行的業(yè)務(wù)的時(shí)間需要確定失效時(shí)長(zhǎng)就可以,使得設(shè)置的失效時(shí)間靈活且合理。s102:如果處于可分配狀態(tài),則將所述被請(qǐng)求的行級(jí)鎖分配給所述進(jìn)程;通過上述的進(jìn)程請(qǐng)求的行級(jí)鎖的狀態(tài)的確定,如果最終確定是可以分配的,那么就可以將該請(qǐng)求的行級(jí)鎖分配給該進(jìn)程。同時(shí),可以根據(jù)該進(jìn)程所執(zhí)行的業(yè)務(wù)的情況,為該行級(jí)鎖分配一個(gè)失效時(shí)間,該失效時(shí)間,該失效時(shí)間可以是按照一個(gè)時(shí)長(zhǎng)方式分配的,也可以是按照當(dāng)前時(shí)間加上業(yè)務(wù)上認(rèn)為該鎖要保持的最長(zhǎng)時(shí)間作為失效時(shí)間,即,達(dá)到該失效時(shí)間點(diǎn),無論進(jìn)程有沒有主動(dòng)釋放該行級(jí)鎖,都自動(dòng)釋放該行級(jí)鎖。在實(shí)現(xiàn)的時(shí)候,可以采用設(shè)置時(shí)間周期,加上計(jì)時(shí)器的方式設(shè)置失效時(shí)間,也可以采用上述當(dāng)前時(shí)間加上業(yè)務(wù)所需時(shí)長(zhǎng)的方式,確定一個(gè)時(shí)間點(diǎn)的方式設(shè)置失效時(shí)間,具體采用那種方式可以根據(jù)實(shí)際需要和情況選取,本申請(qǐng)對(duì)此不作限定。舉例而言,當(dāng)前時(shí)間為:10:46:10,業(yè)務(wù)執(zhí)行所需的時(shí)間為1分10秒,那么可以設(shè)置失效時(shí)間為:10:47:20,即,到10:47:20這個(gè)時(shí)間點(diǎn),鎖就自動(dòng)被釋放,也可以從當(dāng)前時(shí)間點(diǎn),開啟計(jì)時(shí)器,當(dāng)計(jì)時(shí)器達(dá)到1分10秒的時(shí)候,鎖自動(dòng)被釋放。以上所列舉的僅是一種示意性描述,在實(shí)際實(shí)現(xiàn)的時(shí)候,可以采用其它方式設(shè)置,本申請(qǐng)對(duì)此不作具體限定。s103:設(shè)置所述被請(qǐng)求的行級(jí)鎖為鎖定狀態(tài),并釋放數(shù)據(jù)庫與所述進(jìn)程之間的數(shù)據(jù)庫連接;在將進(jìn)程請(qǐng)求的行級(jí)鎖分配給進(jìn)程之后,就可以將該進(jìn)程請(qǐng)求的行級(jí)鎖設(shè)置為鎖定狀態(tài),例如,可以在上述的行級(jí)鎖狀態(tài)表中將該行級(jí)鎖對(duì)應(yīng)的行內(nèi)容的持有狀態(tài)(locked_flag)設(shè)置為y,即表明該行級(jí)鎖已經(jīng)被持有。在設(shè)定為鎖定狀態(tài)之后,就隨即釋放數(shù)據(jù)庫連接,將數(shù)據(jù)庫連接的釋放提前至業(yè)務(wù)處理之前。s104:控制所述進(jìn)程進(jìn)行業(yè)務(wù)處理。即,在分配了行級(jí)鎖,完成數(shù)據(jù)庫事務(wù)之后,就釋放數(shù)據(jù)庫連接,然后再開始長(zhǎng)業(yè)務(wù)方案的處理。在業(yè)務(wù)方案執(zhí)行完成之后,控制所述進(jìn)程釋放所述進(jìn)程請(qǐng)求的行級(jí)鎖,并將所述進(jìn)程請(qǐng)求的行級(jí)鎖的狀態(tài)設(shè)置為可分配狀態(tài)。即,可以將上述行級(jí)鎖狀態(tài)表中將該行級(jí)鎖對(duì)應(yīng)的行內(nèi)容的持有狀態(tài)(locked_flag)設(shè)置為n,以釋放該行級(jí)鎖。在上例中,主要是為了解決現(xiàn)有的基于數(shù)據(jù)庫的分布式鎖方案,是完全基于數(shù)據(jù)庫的悲觀鎖實(shí)現(xiàn),數(shù)據(jù)庫連接會(huì)在整個(gè)業(yè)務(wù)方法執(zhí)行周期內(nèi)一直被保持。如果需要處理的業(yè)務(wù)用時(shí)較長(zhǎng),那么數(shù)據(jù)庫連接會(huì)長(zhǎng)時(shí)間被占用,在高并發(fā)場(chǎng)景下,數(shù)據(jù)庫連接有被用光的危險(xiǎn)的問題,在本例中,在獲得數(shù)據(jù)庫行級(jí)鎖后,立即更改狀態(tài)字段為已鎖定,然后立刻釋放數(shù)據(jù)庫連接,避免了在整個(gè)業(yè)務(wù)方法執(zhí)行周期內(nèi)保持?jǐn)?shù)據(jù)庫連接。進(jìn)一步的,還引入了鎖超時(shí)機(jī)制,這樣即使獲得鎖的進(jìn)程在執(zhí)行過程中崩潰,其它進(jìn)程在鎖超時(shí)后仍然可以重新獲得鎖。下面結(jié)合一個(gè)具體實(shí)施例對(duì)上述業(yè)務(wù)處理方法進(jìn)行說明,然而,值得注意的是,該具體實(shí)施例僅是為了更好地說明本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在本例中,考慮到現(xiàn)有的通過數(shù)據(jù)庫悲觀鎖長(zhǎng)時(shí)間占用數(shù)據(jù)庫連接來實(shí)現(xiàn)分布式鎖,雖然實(shí)現(xiàn)方式簡(jiǎn)單,但是會(huì)在整個(gè)業(yè)務(wù)方法執(zhí)行周期內(nèi)占用數(shù)據(jù)庫連接,本例為了解決數(shù)據(jù)庫連接被長(zhǎng)時(shí)間占用的問題,將數(shù)據(jù)庫的連接釋放時(shí)間點(diǎn)從業(yè)務(wù)結(jié)束后提前至業(yè)務(wù)開始階段,并引入了鎖超時(shí)機(jī)制,避免了死鎖的發(fā)生。首先,可以預(yù)先建立一個(gè)專用于鎖定的通用表t_lock,即,上述的行級(jí)鎖狀態(tài)表,該表主要可以如下表2所示,包括以下幾個(gè)字段:表2字段名字段類型描述lock_keyvarchar2(100)鎖的key值,唯一性索引locked_flagvarchar2(1)鎖定標(biāo)識(shí)位,其中,y標(biāo)識(shí)已鎖定,n標(biāo)識(shí)未鎖定lock_expire_datetimestamp鎖失效時(shí)間,該時(shí)間后,鎖自動(dòng)失效具體地,如圖2所示,該業(yè)務(wù)處理方法可以按照如下包括以下步驟:s1:開啟數(shù)據(jù)庫事務(wù);s2:以nowait的方式試圖獲得數(shù)據(jù)庫行級(jí)悲觀鎖;s3:如果行不存在,則先插入一條記錄,記錄該行級(jí)鎖的狀態(tài),在插入的時(shí)候考慮到會(huì)出現(xiàn)多個(gè)進(jìn)程請(qǐng)求一個(gè)鎖的情況,在這種情況下插入時(shí),可以忽略唯一性索引異常;s4:如果無法獲得數(shù)據(jù)庫行級(jí)悲觀鎖,那么說明另一進(jìn)程正占用,因此,可以終止處理。即,數(shù)據(jù)庫的行悲觀鎖被占用,雖然一拿到行鎖馬上就會(huì)釋放掉這個(gè)行悲觀鎖,但并發(fā)時(shí)仍然有小機(jī)率發(fā)生數(shù)據(jù)庫行悲觀鎖沖突,該步驟主要是為了處理這種沖突。s5:如果獲得數(shù)據(jù)庫行級(jí)悲觀鎖,那么檢查該行級(jí)鎖對(duì)應(yīng)的行內(nèi)容;具體地,如果locked_flag為y并且當(dāng)前時(shí)間小于等于lock_expire_date,則表明該鎖正被另一進(jìn)程持有,因此,終止處理。如果locked_flag為n(表明鎖未被別的進(jìn)程持有)或者lock_flag為y但當(dāng)前時(shí)間已經(jīng)大于lock_expire_date(表明持有該lock_key的別的進(jìn)程已意外崩潰),那么可以立刻更新locked_flag為y,lock_expire_date為當(dāng)前時(shí)間加上業(yè)務(wù)上認(rèn)為該鎖要保持的最長(zhǎng)時(shí)間。s6:結(jié)束數(shù)據(jù)庫事務(wù),釋放數(shù)據(jù)庫連接;s7:開始長(zhǎng)業(yè)務(wù)方案處理;s8:業(yè)務(wù)方案執(zhí)行完后,更新locked_flag=n,釋放鎖。圖3示出了根據(jù)本申請(qǐng)的一示例性實(shí)施例的基于服務(wù)器或者終端的電子設(shè)備的示意結(jié)構(gòu)圖。請(qǐng)參考圖3,在硬件層面,該電子設(shè)備包括處理器、內(nèi)部總線、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器,當(dāng)然還可能包括其他業(yè)務(wù)所需要的硬件。處理器從非易失性存儲(chǔ)器中讀取對(duì)應(yīng)的計(jì)算機(jī)程序到內(nèi)存中然后運(yùn)行,在邏輯層面上形成業(yè)務(wù)實(shí)現(xiàn)裝置。當(dāng)然,除了軟件實(shí)現(xiàn)方式之外,本申請(qǐng)并不排除其他實(shí)現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個(gè)邏輯單元,也可以是硬件或邏輯器件。請(qǐng)參考圖4,在軟件實(shí)施方式中,該業(yè)務(wù)處理裝置應(yīng)用于數(shù)據(jù)庫服務(wù)器中,也可以應(yīng)用終端中,可以包括:確定模塊、分配模塊、釋放模塊和控制模塊。其中:確定模塊,用于確定進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);分配模塊,用于在確定處于可分配狀態(tài)的情況下,將所述被請(qǐng)求的行級(jí)鎖分配給所述進(jìn)程;釋放模塊,用于設(shè)置所述被請(qǐng)求的行級(jí)鎖為鎖定狀態(tài),并釋放數(shù)據(jù)庫與所述進(jìn)程之間的數(shù)據(jù)庫連接;控制模塊,用于控制所述進(jìn)程進(jìn)行業(yè)務(wù)處理??蛇x的,確定模塊具體可以用于從預(yù)先建立的行級(jí)鎖狀態(tài)表中查找所述進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài);相應(yīng)的,釋放模塊還可以用于在所述預(yù)先建立的行級(jí)鎖狀態(tài)表中,將所述進(jìn)程請(qǐng)求的行級(jí)鎖的狀態(tài)設(shè)置為鎖定狀態(tài)。可選的,確定模塊可以包括:第一確定單元,用于確定在所述預(yù)先建立的行級(jí)鎖狀態(tài)表中,是否存在所述進(jìn)程請(qǐng)求的行級(jí)鎖的記錄;第二確定單元,用于在確定存在的情況下,確定是否可獲取所述進(jìn)程請(qǐng)求的行級(jí)鎖;第三確定單元,用于在確定可以獲取的情況下,根據(jù)所述進(jìn)程請(qǐng)求的行級(jí)鎖在所述行級(jí)鎖狀態(tài)表中的記錄,確定所述進(jìn)程請(qǐng)求的行級(jí)鎖是否處于可分配狀態(tài)。可選的,第三確定單元可以包括:第一確定子單元,用于根據(jù)所述進(jìn)程請(qǐng)求的行級(jí)鎖在所述行級(jí)鎖狀態(tài)表中的記錄,確定所述進(jìn)程請(qǐng)求的行級(jí)鎖是否處于被持有狀態(tài);第二確定子單元,用于在確定處于被持有狀態(tài)的情況下,確定所述進(jìn)程請(qǐng)求的行級(jí)鎖是否已超出分配時(shí)長(zhǎng);第三確定子單元,用于在確定超出的情況下,確定所述進(jìn)程請(qǐng)求的行級(jí)所處于可分配狀態(tài)??蛇x的,上述分配時(shí)長(zhǎng)可以是按照請(qǐng)求的進(jìn)程所對(duì)應(yīng)的業(yè)務(wù)的需求確定的??蛇x的,第三確定單元還可以包括:第四確定子單元,用于在確定不處于被持有狀態(tài)的情況下,確定所述進(jìn)程請(qǐng)求的行級(jí)鎖處于可分配狀態(tài)??蛇x的,控制模塊還可以用于在控制所述進(jìn)程進(jìn)行業(yè)務(wù)處理之后,控制所述進(jìn)程釋放所述進(jìn)程請(qǐng)求的行級(jí)鎖,并將所述進(jìn)程請(qǐng)求的行級(jí)鎖的狀態(tài)設(shè)置為可分配狀態(tài)。本申請(qǐng)?zhí)峁┑臉I(yè)務(wù)處理方法和裝置,采用了在為進(jìn)程分配行級(jí)鎖之后就隨即釋放數(shù)據(jù)庫連接,將數(shù)據(jù)庫連接的釋放操作放在業(yè)務(wù)處理之前,而不是放在業(yè)務(wù)處理之后。利用本申請(qǐng)實(shí)施方案,使得數(shù)據(jù)庫連接不會(huì)長(zhǎng)時(shí)間被占用了,從而避免了數(shù)據(jù)庫連接被用光的問題的產(chǎn)生。在20世紀(jì)90年代,對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過將改進(jìn)的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來實(shí)現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來確定。由設(shè)計(jì)人員自行編程來把一個(gè)數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請(qǐng)芯片制造廠商來設(shè)計(jì)和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實(shí)現(xiàn),它與程序開發(fā)撰寫時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。上述的業(yè)務(wù)處理方法和裝置可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,進(jìn)行業(yè)務(wù)處理的主體可以是控制器,該控制器可以包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。上述實(shí)施例闡明的裝置,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。一種典型的實(shí)現(xiàn)設(shè)備為計(jì)算機(jī)。具體的,計(jì)算機(jī)例如可以為個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、蜂窩電話、相機(jī)電話、智能電話、個(gè)人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件設(shè)備、游戲控制臺(tái)、平板計(jì)算機(jī)、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
阿坝| 阿荣旗| 南澳县| 苍溪县| 威远县| 海南省| 弋阳县| 邢台县| 郁南县| 日土县| 宁化县| 阿勒泰市| 大丰市| 五华县| 西昌市| 大埔区| 定州市| 梁河县| 桑植县| 苏尼特右旗| 天等县| 南京市| 阿拉善左旗| 安平县| 新乡市| 鹤庆县| 三原县| 尚志市| 潜江市| 织金县| 克拉玛依市| 社旗县| 齐河县| 盐源县| 开平市| 奉新县| 平陆县| 会同县| 陕西省| 苗栗县| 绥棱县|