亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法與設(shè)備與流程

文檔序號(hào):12364010閱讀:243來源:國知局
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的技術(shù)。
背景技術(shù)
::在關(guān)系型數(shù)據(jù)庫的運(yùn)維過程中,數(shù)據(jù)定義語言DDL以及數(shù)據(jù)操縱語言DML在并發(fā)執(zhí)行時(shí),會(huì)因?yàn)楦髯运暾?qǐng)的MDL鎖的類型不同所致的無法兼容問題使兩種語句在執(zhí)行過程中產(chǎn)生阻塞,從而阻塞后續(xù)語句的執(zhí)行?,F(xiàn)有技術(shù),可以通過對(duì)DDL語句進(jìn)行設(shè)置,使得并發(fā)執(zhí)行發(fā)生語句沖突時(shí)DDL語句快速失敗,從而解決語句并發(fā)執(zhí)行阻塞。然而,在現(xiàn)有技術(shù)僅可在段落或全局級(jí)別對(duì)DDL語句進(jìn)行設(shè)置,無法做到語句級(jí)別的靈活操作,運(yùn)維人員在操作過程中,會(huì)因語句并發(fā)執(zhí)行阻塞時(shí)間過長(zhǎng)引發(fā)應(yīng)用訪問受阻或業(yè)務(wù)中斷。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)的目的是提供一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法與設(shè)備。根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法,包括:獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息;申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖;若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。根據(jù)本申請(qǐng)的另一方面,還提供了一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的設(shè)備,包括:第一裝置,用于獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所 述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息;第二裝置,用于申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖;第三裝置,用于若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。與現(xiàn)有技術(shù)相比,本申請(qǐng)通過獲取用戶提交的關(guān)于目標(biāo)表的DDL語句及其中所設(shè)置對(duì)應(yīng)的等待信息,申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖,若申請(qǐng)失敗則根據(jù)所設(shè)置的等待信息中的DDL語句執(zhí)行退出處理,解決系型數(shù)據(jù)庫中數(shù)據(jù)定義語言DDL以及數(shù)據(jù)操縱語言DML并發(fā)執(zhí)行阻塞問題,從而避免發(fā)生數(shù)據(jù)庫關(guān)聯(lián)應(yīng)用訪問受阻或業(yè)務(wù)中斷,提高數(shù)據(jù)庫語言的執(zhí)行效率,提升數(shù)據(jù)庫的可靠性。附圖說明通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的設(shè)備示意圖;圖2示出根據(jù)本申請(qǐng)另一個(gè)方面的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法流程圖。附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(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)和載波。圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的設(shè)備1的示意圖。其中,所述設(shè)備1包括第一裝置11、第二裝置12和第三裝置13。其中,所述設(shè)備1的第一裝置11用于獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息;第二裝置12用于申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖;第三裝置用于若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。具體地,第一裝置11用于獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息。其中,獲取用戶提交所述關(guān)于目標(biāo)表的DDL語句的方式可以通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行,DDL語句是數(shù)據(jù)庫定義語言,關(guān)于目標(biāo)表的DDL語句在執(zhí)行前出于為了提供對(duì)并發(fā)訪問內(nèi)存中字典對(duì)象緩存的保護(hù),以及確保一些數(shù)據(jù)庫語言操作的互斥性等目的,需要申請(qǐng)MDL鎖對(duì)表中數(shù)據(jù)在執(zhí)行語句的時(shí)候進(jìn)行保護(hù)。所述等待設(shè)置信息是在DDL語句申請(qǐng)MDL鎖被阻塞時(shí)的相應(yīng)執(zhí)行動(dòng)作的設(shè)置信息,包括用戶希望DDL語句被阻塞后所進(jìn)行的動(dòng)作,所述動(dòng)作包括繼續(xù)等待或立即退出等待等相關(guān)操作。例如,在DDL語句申請(qǐng)排他性MDL鎖時(shí)與之前申請(qǐng)共享級(jí)MDL鎖的DML語句發(fā)生執(zhí)行沖突,因此進(jìn)入鎖等待隊(duì)列等待DML語句執(zhí)行完再進(jìn)行MDL鎖申請(qǐng),此時(shí)后續(xù)的DML的語句均會(huì)因?yàn)镈DL語句在等待而同樣進(jìn)入鎖等待隊(duì)列從而造成阻塞, 若DDL語句包括對(duì)應(yīng)的等待設(shè)置信息,則在所舉例DDL語句進(jìn)入鎖等待隊(duì)列時(shí),會(huì)依據(jù)所述等待設(shè)置信息等待一定時(shí)間退出或立即退出,從而避免造成申請(qǐng)MDL鎖語句阻塞而所致的數(shù)據(jù)庫業(yè)務(wù)受阻或中斷。優(yōu)選地,所述等待設(shè)置信息包括以下至少任一項(xiàng):設(shè)定的等待時(shí)間;零等待。其中,設(shè)定的等待時(shí)間即在DDL語句中設(shè)置等待設(shè)定的時(shí)間,超過設(shè)定時(shí)間即立即使得DDL語句的執(zhí)行任務(wù)失敗退出,例如,DDL語句設(shè)置為Altertabletestwait1addcol1number,即在申請(qǐng)MDL鎖失敗后等待1秒鐘,從而使得其在MDL鎖等待隊(duì)列中被刪除,被阻塞的申請(qǐng)共享級(jí)的DML語言因此可以減少等待時(shí)間或在當(dāng)前MDL鎖為共享級(jí)時(shí)與當(dāng)前語句共同執(zhí)行。零等待,即在DDL語句中設(shè)置得到申請(qǐng)MDL鎖失敗的反饋之后立即使得DDL語句的執(zhí)行任務(wù)失敗退出,例如,DDL語句設(shè)置為Altertabletestno_waitaddcol1number,同樣使得后續(xù)在MDL鎖等待隊(duì)列中的DML語言能夠減少等待時(shí)間或在當(dāng)前MDL鎖為共享級(jí)時(shí)與當(dāng)前語句共同執(zhí)行,減少數(shù)據(jù)庫相關(guān)業(yè)務(wù)不可用的時(shí)間。本領(lǐng)域技術(shù)人員應(yīng)能理解上述設(shè)置設(shè)定的等待時(shí)間以及零等待的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的根據(jù)所述設(shè)置設(shè)定的等待時(shí)間以及零等待的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。接著,第二裝置12用于申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖。其中,所述排他性MDL鎖是DDL語句在執(zhí)行之前出于保護(hù)作為語句執(zhí)行對(duì)象的目標(biāo)表在被改變的時(shí)候不會(huì)與其它數(shù)據(jù)庫語言(例如數(shù)據(jù)庫操縱語言DML)并發(fā)執(zhí)行的時(shí)候產(chǎn)生沖突,例如,DDL語句在執(zhí)行對(duì)目標(biāo)表的整表刪除時(shí)DML語句執(zhí)行對(duì)同一目標(biāo)表的插入操作,此時(shí)即產(chǎn)生所述并發(fā)執(zhí)行沖突,為了避免這種情況,在關(guān)系型數(shù)據(jù)庫中DDL語句會(huì)在執(zhí)行前申請(qǐng)排他性MDL鎖,使得DDL在執(zhí)行時(shí)DML語句被排斥在目標(biāo)表外無法同時(shí)執(zhí)行,從而提升數(shù)據(jù)庫語言的執(zhí)行效率,保護(hù)表中的數(shù)據(jù)。接著,第三裝置13用于若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。因?yàn)镈DL語句申請(qǐng)排他性MDL鎖,因此當(dāng)對(duì)目標(biāo)表操作的對(duì)應(yīng)鎖持有隊(duì)列中的語句對(duì)應(yīng)共享級(jí)的 MDL鎖時(shí),出于排他性MDL鎖無法進(jìn)行共享DDL語句申請(qǐng)失敗,DDL語句進(jìn)入鎖等待隊(duì)列,此時(shí),會(huì)觸發(fā)DDL語句中等待設(shè)置信息,觸發(fā)方法包括設(shè)置獲取MDL鎖申請(qǐng)失敗后的反饋信息后啟動(dòng)設(shè)置信息對(duì)應(yīng)程序,讀取設(shè)置信息,并據(jù)此執(zhí)行設(shè)置動(dòng)作。其中,所述等待設(shè)置信息包括用戶希望DDL語句被阻塞后所進(jìn)行的動(dòng)作,所述動(dòng)作包括繼續(xù)等待或立即退出等待等相關(guān)操作,在等待設(shè)置信息被觸發(fā)后會(huì)依據(jù)所述等待設(shè)置信息等待一定時(shí)間退出或立即退出DDL語句的執(zhí)行,從而避免DDL語句在鎖等待隊(duì)列中等待時(shí)間過長(zhǎng)而阻塞之后可使用共享級(jí)MDL鎖的DML語句。上文所述鎖持有隊(duì)列為關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)庫語言在申請(qǐng)MDL鎖成功后所在的隊(duì)列,相應(yīng)地,所述鎖等待隊(duì)列為數(shù)據(jù)庫語言申請(qǐng)MDL鎖因?yàn)樗暾?qǐng)鎖類型互斥而失敗后,等待MDL鎖持有語句操作完畢繼續(xù)申請(qǐng)MDL鎖的隊(duì)列。本領(lǐng)域技術(shù)人員應(yīng)能理解上述根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。優(yōu)選地,所述第三裝置用于:若申請(qǐng)所述排他性MDL鎖成功,執(zhí)行所述DDL語句。即DDL語句申請(qǐng)排他性MDL鎖時(shí),未有其它語句持有與排他性MDL互斥類型的MDL鎖,DDL語句獲取排他性MDL鎖,進(jìn)入鎖持有隊(duì)列繼而執(zhí)行語句內(nèi)容,對(duì)目標(biāo)表進(jìn)行相應(yīng)的操作。更優(yōu)選地,所述等待設(shè)置信息包括設(shè)定的等待時(shí)間,其中,所述第三裝置用于:若申請(qǐng)所述排他性MDL鎖失敗,按所述等待時(shí)間等待后,再次申請(qǐng)所述排他性MDL鎖;若仍申請(qǐng)所述排他性MDL鎖失敗,退出對(duì)所述DDL語句的執(zhí)行處理。即在設(shè)定的等待時(shí)間開始執(zhí)行立即使得DDL語句執(zhí)行任務(wù)失敗退出之前,可以加入重新申請(qǐng)MDL鎖的設(shè)置信息,即在等待所設(shè)置時(shí)間后,例如接上文舉例,在等待1秒中后,繼續(xù)發(fā)起申請(qǐng)MDL鎖,若此時(shí)MDL鎖不被持有,即可申請(qǐng)成功并在持有排它性MDL鎖的情況下被執(zhí)行,若此時(shí)MDL鎖仍被持有,且與DDL所申請(qǐng)的MDL鎖沖突,則執(zhí)行立即使得DDL語句執(zhí)行任務(wù)失敗退出,從而使得DDL申 請(qǐng)MDL鎖的幾率增加,提高對(duì)MDL鎖的申請(qǐng)效率。進(jìn)一步地,所述等待設(shè)置信息包括零等待,其中,所述第三裝置用于:若申請(qǐng)所述排他性MDL鎖失敗,退出對(duì)所述DDL語句的執(zhí)行處理。即在DDL語句獲取申請(qǐng)排他性MDL鎖失敗的反饋之后,根據(jù)零等待的設(shè)置,立即使得DDL語句執(zhí)行任務(wù)失敗退,從而使得DDL語句在MDL鎖等待隊(duì)列中被刪除,因此可以減少M(fèi)DL鎖等待隊(duì)列中其它語句的等待時(shí)間,避免因等待時(shí)間過長(zhǎng)造成數(shù)據(jù)庫相關(guān)業(yè)務(wù)中斷或應(yīng)用訪問受阻。根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的設(shè)備1(未示出)。所述設(shè)備1包括第一裝置、第二裝置和第三裝置,其中,第一裝置和第二裝置均在圖1所示的第一裝置11和第二裝置12的基礎(chǔ)上增加數(shù)據(jù)操縱語言DML的處理情況,第三裝置包括第一單元,所述第一單元用于退出對(duì)所述DDL語句的執(zhí)行處理后,將所述DML語句中至少一個(gè)添加至所述MDL鎖的鎖持有隊(duì)列或鎖等待隊(duì)列。具體地,所述第一裝置還用于獲取用戶提交的關(guān)于所述目標(biāo)表的DML語句,其中,所述第三裝置還包括第一單元,用于在退出對(duì)所述DDL語句的執(zhí)行處理后,將所述DML語句中至少一個(gè)添加至所述MDL鎖的鎖持有隊(duì)列或鎖等待隊(duì)列。其中,所獲取的用戶提交關(guān)于所述目標(biāo)表的數(shù)據(jù)庫語言除DDL外還包括DML,因此,在退出DDL語句的執(zhí)行處理后,DDL語句從MDL鎖等待隊(duì)列中被刪除,后續(xù)在MDL鎖等待隊(duì)列中的DML語句將按照排列的順序進(jìn)行處理,根據(jù)隊(duì)列中對(duì)MDL鎖的類型需求,至少將一個(gè)DML語句添加至MDL鎖持有或鎖等待隊(duì)列,例如,若當(dāng)前MDL鎖持有隊(duì)列中數(shù)據(jù)庫語言語句的所持有的MDL鎖類型與鎖等待隊(duì)列中的DML語句不互斥可共享,則依照次序添加DML語句至鎖持有隊(duì)列直至有互斥需求的數(shù)據(jù)庫語句出現(xiàn),并將該語句排除在MDL鎖持有隊(duì)列外,仍然留在MDL鎖等待隊(duì)列,若當(dāng)前MDL鎖持有隊(duì)列中數(shù)據(jù)庫語言語句的所持有的MDL鎖類型與鎖等待隊(duì)列中的DML語句互斥,則將獲取的DML語句添加至MDL鎖等待隊(duì)列,從而喚醒被阻塞的DML語句,使得數(shù)據(jù)庫相關(guān)應(yīng)用訪問效率提升或業(yè)務(wù)速度加快。優(yōu)選地,所述第一單元用于在退出對(duì)所述DDL語句的執(zhí)行處理后, 當(dāng)所述鎖持有隊(duì)列及所述鎖等待隊(duì)列中的語句均對(duì)應(yīng)共享級(jí)所述MDL鎖時(shí),將所述DML語句中至少一個(gè)添加至所述鎖持有隊(duì)列。其中,DML語句包括再次處理以及首次處理的DML語句,即退出對(duì)所述DDL語句的執(zhí)行處理后,在所述DML語句所在的鎖等待隊(duì)列位置之前使的語句以及當(dāng)前所持有隊(duì)列中的語句均對(duì)應(yīng)共享及MDL鎖,則DML語句可與其所在鎖等待隊(duì)列位置之前的所述鎖等待隊(duì)列中語句一同被添加至所述鎖持有隊(duì)列,例如,dml1與dml2指代兩個(gè)DML語句其持有共享級(jí)的MDL鎖,dml3、dml4、dml5指代在鎖等待隊(duì)列中的DML語句其需要申請(qǐng)共享級(jí)的MDL鎖,dml6是指代剛獲取的用戶提交的需要申請(qǐng)共享級(jí)的MDL鎖的DML英語劇,在排列在dml3之前的DDL語句被刪除后,dml3至6均可被添加至所述鎖持有隊(duì)列,使得DDL語句退出執(zhí)行處理后,DML語句執(zhí)行因?yàn)橥瑸樯暾?qǐng)共享級(jí)MDL鎖而加快。更優(yōu)選地,所述第二裝置還用于將所述DML語句添加至所述MDL鎖的鎖等待隊(duì)列,其中,所述第一單元用于在退出對(duì)所述DDL語句的執(zhí)行處理后,當(dāng)所述鎖持有隊(duì)列及所述鎖等待隊(duì)列中的語句均對(duì)應(yīng)共享級(jí)所述MDL鎖時(shí),將所述DML語句中至少一個(gè)從所述鎖等待隊(duì)列添加至所述鎖持有隊(duì)列。在有DDL語句在對(duì)MDL鎖進(jìn)行申請(qǐng)時(shí),因?yàn)镈DL語句所申請(qǐng)的是排他性的MDL鎖,此時(shí)獲取的DML語句需要申請(qǐng)的共享級(jí)的MDL鎖與DDL語句所申請(qǐng)的排他性MDL鎖互斥,即DDL語句即使申請(qǐng)成功,DML語句也無法與其共享MDL鎖,因此,此時(shí)獲取的DML語句被添加至MDL的鎖等待隊(duì)列。當(dāng)所述DDL語句被執(zhí)行退出處理后,被添加至MDL鎖等待隊(duì)列的DML語句可由鎖等待隊(duì)列中被添加至鎖持有隊(duì)列,若其后的鎖等待隊(duì)列中還有DML語句,因?yàn)榫鶠樯暾?qǐng)共享級(jí)MDL鎖,所以均添加至鎖持有隊(duì)列直至有申請(qǐng)互斥級(jí)別MDL鎖的語句出現(xiàn)停止添加。進(jìn)一步地,所述第一單元用于在退出對(duì)所述DDL語句的執(zhí)行處理后,當(dāng)所述鎖持有隊(duì)列或所述鎖等待隊(duì)列中存在語句對(duì)應(yīng)排他性所述MDL鎖時(shí),將所述DML語句中至少一個(gè)添加至所述鎖等待隊(duì)列。在有DDL語句在對(duì)MDL鎖進(jìn)行申請(qǐng)時(shí),因?yàn)镈DL語句所申請(qǐng)的是排他性的MDL鎖, 此時(shí)獲取的DML語句需要申請(qǐng)的共享級(jí)的MDL鎖與DDL語句所申請(qǐng)的排他性MDL鎖互斥,即DDL語句即使申請(qǐng)成功,DML語句也無法與其共享MDL鎖,因此,此時(shí)獲取的DML語句被添加至MDL的鎖等待隊(duì)列,同樣MDL鎖等待隊(duì)列里還有其它因申請(qǐng)排他性MDL鎖的DDL語句。當(dāng)所述DDL語句被執(zhí)行退出處理后,被添加至MDL鎖等待隊(duì)列的DML語句若之前的隊(duì)列中存在申請(qǐng)排他性MDL鎖的語句或當(dāng)前MDL鎖持有隊(duì)列語句持有的是排他性MDL鎖,則此時(shí)獲取的MDL語句至少有一個(gè)添加至所述鎖等待隊(duì)列。圖2示出根據(jù)本申請(qǐng)另一個(gè)方面的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法流程圖。其中,包括步驟S1、步驟S2和步驟S3。其中,在步驟S1中設(shè)備1獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息;在步驟S2中設(shè)備1申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖;在步驟S3中設(shè)備1若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。具體地,在步驟S1中設(shè)備1獲取用戶提交的關(guān)于目標(biāo)表的DDL語句,其中,所述DDL語句包括對(duì)應(yīng)的等待設(shè)置信息。其中,獲取用戶提交所述關(guān)于目標(biāo)表的DDL語句的方式可以通過數(shù)據(jù)庫管理系統(tǒng)進(jìn)行,DDL語句是數(shù)據(jù)庫定義語言,關(guān)于目標(biāo)表的DDL語句在執(zhí)行前出于為了提供對(duì)并發(fā)訪問內(nèi)存中字典對(duì)象緩存的保護(hù),以及確保一些數(shù)據(jù)庫語言操作的互斥性等目的,需要申請(qǐng)MDL鎖對(duì)表中數(shù)據(jù)在執(zhí)行語句的時(shí)候進(jìn)行保護(hù)。所述等待設(shè)置信息是在DDL語句申請(qǐng)MDL鎖被阻塞時(shí)的相應(yīng)執(zhí)行動(dòng)作的設(shè)置信息,包括用戶希望DDL語句被阻塞后所進(jìn)行的動(dòng)作,所述動(dòng)作包括繼續(xù)等待或立即退出等待等相關(guān)操作。例如,在DDL語句申請(qǐng)排他性MDL鎖時(shí)與之前申請(qǐng)共享級(jí)MDL鎖的DML語句發(fā)生執(zhí)行沖突,因此進(jìn)入鎖等待隊(duì)列等待DML語句執(zhí)行完再進(jìn)行MDL鎖申請(qǐng),此時(shí)后續(xù)的DML的語句均會(huì)因?yàn)镈DL語句在等待而同樣進(jìn)入鎖等待隊(duì)列從而造成阻塞,若DDL語句包括對(duì)應(yīng)的等待設(shè)置信息,則在所舉例DDL語句進(jìn)入鎖等待隊(duì)列時(shí),會(huì)依據(jù)所述等待設(shè)置信息等待一定時(shí)間退出或立即退出,從而避免造成申請(qǐng)MDL鎖語句阻塞而所致的數(shù)據(jù)庫業(yè)務(wù)受阻或中斷。優(yōu)選地,所述等待設(shè)置信息包括以下至少任一項(xiàng):設(shè)定的等待時(shí)間;零等待。其中,設(shè)定的等待時(shí)間即在DDL語句中設(shè)置等待設(shè)定的時(shí)間,超過設(shè)定時(shí)間即立即使得DDL語句的執(zhí)行任務(wù)失敗退出,例如,DDL語句設(shè)置為Altertabletestwait1addcol1number,即在申請(qǐng)MDL鎖失敗后等待1秒鐘,從而使得其在MDL鎖等待隊(duì)列中被刪除,被阻塞的申請(qǐng)共享級(jí)的DML語言因此可以減少等待時(shí)間或在當(dāng)前MDL鎖為共享級(jí)時(shí)與當(dāng)前語句共同執(zhí)行。零等待,即在DDL語句中設(shè)置得到申請(qǐng)MDL鎖失敗的反饋之后立即使得DDL語句的執(zhí)行任務(wù)失敗退出,例如,DDL語句設(shè)置為Altertabletestno_waitaddcol1number,同樣使得后續(xù)在MDL鎖等待隊(duì)列中的DML語言能夠減少等待時(shí)間或在當(dāng)前MDL鎖為共享級(jí)時(shí)與當(dāng)前語句共同執(zhí)行,減少數(shù)據(jù)庫相關(guān)業(yè)務(wù)不可用的時(shí)間。本領(lǐng)域技術(shù)人員應(yīng)能理解上述設(shè)置設(shè)定的等待時(shí)間以及零等待的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的根據(jù)所述設(shè)置設(shè)定的等待時(shí)間以及零等待的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。接著,在步驟S2中設(shè)備1申請(qǐng)所述目標(biāo)表所對(duì)應(yīng)的排他性MDL鎖。其中,所述排他性MDL鎖是DDL語句在執(zhí)行之前出于保護(hù)作為語句執(zhí)行對(duì)象的目標(biāo)表在被改變的時(shí)候不會(huì)與其它數(shù)據(jù)庫語言(例如數(shù)據(jù)庫操縱語言DML)并發(fā)執(zhí)行的時(shí)候產(chǎn)生沖突,例如,DDL語句在執(zhí)行對(duì)目標(biāo)表的整表刪除時(shí)DML語句執(zhí)行對(duì)同一目標(biāo)表的插入操作,此時(shí)即產(chǎn)生所述并發(fā)執(zhí)行沖突,為了避免這種情況,在關(guān)系型數(shù)據(jù)庫中DDL語句會(huì)在執(zhí)行前申請(qǐng)排他性MDL鎖,使得DDL在執(zhí)行時(shí)DML語句被排斥在目標(biāo)表外無法同時(shí)執(zhí)行,從而提升數(shù)據(jù)庫語言的執(zhí)行效率,保護(hù)表中的數(shù)據(jù)。接著,在步驟S3中設(shè)備1若申請(qǐng)所述排他性MDL鎖失敗,根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理。因?yàn)镈DL語句申請(qǐng)排他性MDL鎖,因此當(dāng)對(duì)目標(biāo)表操作的對(duì)應(yīng)鎖持有隊(duì)列中的語句對(duì)應(yīng)共享級(jí)的MDL鎖時(shí),出于排他性MDL鎖無法進(jìn)行共享DDL語句申請(qǐng)失敗,DDL語句進(jìn)入鎖等待隊(duì)列,此時(shí),會(huì)觸發(fā)DDL語句中等待設(shè)置信息,觸發(fā)方法包括設(shè)置獲取MDL鎖申請(qǐng)失敗后的反饋信息后啟動(dòng)設(shè)置信息對(duì)應(yīng)程 序,讀取設(shè)置信息,并據(jù)此執(zhí)行設(shè)置動(dòng)作。其中,所述等待設(shè)置信息包括用戶希望DDL語句被阻塞后所進(jìn)行的動(dòng)作,所述動(dòng)作包括繼續(xù)等待或立即退出等待等相關(guān)操作,在等待設(shè)置信息被觸發(fā)后會(huì)依據(jù)所述等待設(shè)置信息等待一定時(shí)間退出或立即退出DDL語句的執(zhí)行,從而避免DDL語句在鎖等待隊(duì)列中等待時(shí)間過長(zhǎng)而阻塞之后可使用共享級(jí)MDL鎖的DML語句。上文所述鎖持有隊(duì)列為關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)庫語言在申請(qǐng)MDL鎖成功后所在的隊(duì)列,相應(yīng)地,所述鎖等待隊(duì)列為數(shù)據(jù)庫語言申請(qǐng)MDL鎖因?yàn)樗暾?qǐng)鎖類型互斥而失敗后,等待MDL鎖持有語句操作完畢繼續(xù)申請(qǐng)MDL鎖的隊(duì)列。本領(lǐng)域技術(shù)人員應(yīng)能理解上述根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的根據(jù)所述等待設(shè)置信息對(duì)所述DDL語句執(zhí)行退出處理的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。優(yōu)選地,在步驟S3中設(shè)備1若申請(qǐng)所述排他性MDL鎖成功,執(zhí)行所述DDL語句。即DDL語句申請(qǐng)排他性MDL鎖時(shí),未有其它語句持有與排他性MDL互斥類型的MDL鎖,DDL語句獲取排他性MDL鎖,進(jìn)入鎖持有隊(duì)列繼而執(zhí)行語句內(nèi)容,對(duì)目標(biāo)表進(jìn)行相應(yīng)的操作。更優(yōu)選地,所述等待設(shè)置信息包括設(shè)定的等待時(shí)間,其中,在步驟S3中設(shè)備1若申請(qǐng)所述排他性MDL鎖失敗,按所述等待時(shí)間等待后,再次申請(qǐng)所述排他性MDL鎖;若仍申請(qǐng)所述排他性MDL鎖失敗,退出對(duì)所述DDL語句的執(zhí)行處理。即在設(shè)定的等待時(shí)間開始執(zhí)行立即使得DDL語句執(zhí)行任務(wù)失敗退出之前,可以加入重新申請(qǐng)MDL鎖的設(shè)置信息,即在等待所設(shè)置時(shí)間后,例如接上文舉例,在等待1秒中后,繼續(xù)發(fā)起申請(qǐng)MDL鎖,若此時(shí)MDL鎖不被持有,即可申請(qǐng)成功并在持有排它性MDL鎖的情況下被執(zhí)行,若此時(shí)MDL鎖仍被持有,且與DDL所申請(qǐng)的MDL鎖沖突,則執(zhí)行立即使得DDL語句執(zhí)行任務(wù)失敗退出,從而使得DDL申請(qǐng)MDL鎖的幾率增加,提高對(duì)MDL鎖的申請(qǐng)效率。進(jìn)一步地,所述等待設(shè)置信息包括零等待,其中,在步驟S3中設(shè)備1若申請(qǐng)所述排他性MDL鎖失敗,退出對(duì)所述DDL語句的執(zhí)行處理。即在 DDL語句獲取申請(qǐng)排他性MDL鎖失敗的反饋之后,根據(jù)零等待的設(shè)置,立即使得DDL語句執(zhí)行任務(wù)失敗退,從而使得DDL語句在MDL鎖等待隊(duì)列中被刪除,因此可以減少M(fèi)DL鎖等待隊(duì)列中其它語句的等待時(shí)間,避免因等待時(shí)間過長(zhǎng)造成數(shù)據(jù)庫相關(guān)業(yè)務(wù)中斷或應(yīng)用訪問受阻。根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的一種用于處理關(guān)系型數(shù)據(jù)庫中DDL語句的方法流程(未示出)。所述流程包括步驟S1、步驟S2和步驟S3,其中,步驟S1和步驟S2均在圖2所示的步驟S1和步驟S2的基礎(chǔ)上增加數(shù)據(jù)操縱語言DML的處理情況,步驟S3包括步驟S31,在步驟S31中設(shè)備1退出對(duì)所述DDL語句的執(zhí)行處理后,將所述DML語句中至少一個(gè)添加至所述MDL鎖的鎖持有隊(duì)列或鎖等待隊(duì)列。具體地,在步驟S1中設(shè)備1還獲取用戶提交的關(guān)于所述目標(biāo)表的DML語句,其中,在步驟S3中還包括步驟S31,在步驟S31中設(shè)備1在退出對(duì)所述DDL語句的執(zhí)行處理后,將所述DML語句中至少一個(gè)添加至所述MDL鎖的鎖持有隊(duì)列或鎖等待隊(duì)列。其中,所獲取的用戶提交關(guān)于所述目標(biāo)表的數(shù)據(jù)庫語言除DDL外還包括DML,因此,在退出DDL語句的執(zhí)行處理后,DDL語句從MDL鎖等待隊(duì)列中被刪除,后續(xù)在MDL鎖等待隊(duì)列中的DML語句將按照排列的順序進(jìn)行處理,根據(jù)隊(duì)列中對(duì)MDL鎖的類型需求,至少將一個(gè)DML語句添加至MDL鎖持有或鎖等待隊(duì)列,例如,若當(dāng)前MDL鎖持有隊(duì)列中數(shù)據(jù)庫語言語句的所持有的MDL鎖類型與鎖等待隊(duì)列中的DML語句不互斥可共享,則依照次序添加DML語句至鎖持有隊(duì)列直至有互斥需求的數(shù)據(jù)庫語句出現(xiàn),并將該語句排除在MDL鎖持有隊(duì)列外,仍然留在MDL鎖等待隊(duì)列,若當(dāng)前MDL鎖持有隊(duì)列中數(shù)據(jù)庫語言語句的所持有的MDL鎖類型與鎖等待隊(duì)列中的DML語句互斥,則將獲取的DML語句添加至MDL鎖等待隊(duì)列,從而喚醒被阻塞的DML語句,使得數(shù)據(jù)庫相關(guān)應(yīng)用訪問效率提升或業(yè)務(wù)速度加快。優(yōu)選地,在步驟S31中設(shè)備1在退出對(duì)所述DDL語句的執(zhí)行處理后,當(dāng)所述鎖持有隊(duì)列及所述鎖等待隊(duì)列中的語句均對(duì)應(yīng)共享級(jí)所述MDL鎖時(shí),將所述DML語句中至少一個(gè)添加至所述鎖持有隊(duì)列。其中,DML語句包括再次處理以及首次處理的DML語句,即退出對(duì)所述DDL語句的執(zhí) 行處理后,在所述DML語句所在的鎖等待隊(duì)列位置之前使的語句以及當(dāng)前所持有隊(duì)列中的語句均對(duì)應(yīng)共享及MDL鎖,則DML語句可與其所在鎖等待隊(duì)列位置之前的所述鎖等待隊(duì)列中語句一同被添加至所述鎖持有隊(duì)列,例如,dml1與dml2指代兩個(gè)DML語句其持有共享級(jí)的MDL鎖,dml3、dml4、dml5指代在鎖等待隊(duì)列中的DML語句其需要申請(qǐng)共享級(jí)的MDL鎖,dml6是指代剛獲取的用戶提交的需要申請(qǐng)共享級(jí)的MDL鎖的DML英語劇,在排列在dml3之前的DDL語句被刪除后,dml3至6均可被添加至所述鎖持有隊(duì)列,使得DDL語句退出執(zhí)行處理后,DML語句執(zhí)行因?yàn)橥瑸樯暾?qǐng)共享級(jí)MDL鎖而加快。更優(yōu)選地,在步驟S2中設(shè)備1還將所述DML語句添加至所述MDL鎖的鎖等待隊(duì)列,其中,在步驟S31中設(shè)備1在退出對(duì)所述DDL語句的執(zhí)行處理后,當(dāng)所述鎖持有隊(duì)列及所述鎖等待隊(duì)列中的語句均對(duì)應(yīng)共享級(jí)所述MDL鎖時(shí),將所述DML語句中至少一個(gè)從所述鎖等待隊(duì)列添加至所述鎖持有隊(duì)列。在有DDL語句在對(duì)MDL鎖進(jìn)行申請(qǐng)時(shí),因?yàn)镈DL語句所申請(qǐng)的是排他性的MDL鎖,此時(shí)獲取的DML語句需要申請(qǐng)的共享級(jí)的MDL鎖與DDL語句所申請(qǐng)的排他性MDL鎖互斥,即DDL語句即使申請(qǐng)成功,DML語句也無法與其共享MDL鎖,因此,此時(shí)獲取的DML語句被添加至MDL的鎖等待隊(duì)列。當(dāng)所述DDL語句被執(zhí)行退出處理后,被添加至MDL鎖等待隊(duì)列的DML語句可由鎖等待隊(duì)列中被添加至鎖持有隊(duì)列,若其后的鎖等待隊(duì)列中還有DML語句,因?yàn)榫鶠樯暾?qǐng)共享級(jí)MDL鎖,所以均添加至鎖持有隊(duì)列直至有申請(qǐng)互斥級(jí)別MDL鎖的語句出現(xiàn)停止添加。進(jìn)一步地,在步驟S31中設(shè)備1退出對(duì)所述DDL語句的執(zhí)行處理后,當(dāng)所述鎖持有隊(duì)列或所述鎖等待隊(duì)列中存在語句對(duì)應(yīng)排他性所述MDL鎖時(shí),將所述DML語句中至少一個(gè)添加至所述鎖等待隊(duì)列。在有DDL語句在對(duì)MDL鎖進(jìn)行申請(qǐng)時(shí),因?yàn)镈DL語句所申請(qǐng)的是排他性的MDL鎖,此時(shí)獲取的DML語句需要申請(qǐng)的共享級(jí)的MDL鎖與DDL語句所申請(qǐng)的排他性MDL鎖互斥,即DDL語句即使申請(qǐng)成功,DML語句也無法與其共享MDL鎖,因此,此時(shí)獲取的DML語句被添加至MDL的鎖等待隊(duì)列, 同樣MDL鎖等待隊(duì)列里還有其它因申請(qǐng)排他性MDL鎖的DDL語句。當(dāng)所述DDL語句被執(zhí)行退出處理后,被添加至MDL鎖等待隊(duì)列的DML語句若之前的隊(duì)列中存在申請(qǐng)排他性MDL鎖的語句或當(dāng)前MDL鎖持有隊(duì)列語句持有的是排他性MDL鎖,則此時(shí)獲取的MDL語句至少有一個(gè)添加至所述鎖等待隊(duì)列。對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本發(fā)明。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1