數(shù)據(jù)庫(kù)處理、數(shù)據(jù)訪(fǎng)問(wèn)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,特別是涉及數(shù)據(jù)庫(kù)處理、數(shù)據(jù)訪(fǎng)問(wèn)方法及系統(tǒng)。
【背景技術(shù)】
[0002]一般而言,互聯(lián)網(wǎng)應(yīng)用系統(tǒng)在為用戶(hù)提供業(yè)務(wù)或者服務(wù)的過(guò)程中,都需要數(shù)據(jù)庫(kù)的支持。例如,電子商務(wù)交易平臺(tái)中,需要在數(shù)據(jù)庫(kù)中保存賣(mài)家用戶(hù)上傳的商品對(duì)象的描述、庫(kù)存信息,等等。但在實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)操作經(jīng)常出現(xiàn)瓶頸問(wèn)題。
[0003]例如,在數(shù)據(jù)庫(kù)系統(tǒng)中,為了保證事務(wù)的ACID特性(原子性、一致性、隔離性、持久性),一般都采用鎖機(jī)制,包括主流的Oracle、MySQL、SQL Server等,各類(lèi)數(shù)據(jù)庫(kù)采用的鎖理論也基本一致。引入鎖機(jī)制之后,在同一時(shí)間點(diǎn)只有一個(gè)會(huì)話(huà)可以操作同一條數(shù)據(jù)。這樣,假設(shè)并發(fā)產(chǎn)生了 10個(gè)會(huì)話(huà)都需要操作該數(shù)據(jù),則只有其中一個(gè)會(huì)話(huà)能夠獲得鎖,其他9個(gè)會(huì)話(huà)都處于鎖等待狀態(tài)。也就是說(shuō),更新同一條數(shù)據(jù)的操作都是串行的,在數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)量很大的情況下,會(huì)使得整體性能以及服務(wù)能力降低。
[0004]因此,迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問(wèn)題就在于:如何在可能會(huì)出現(xiàn)存儲(chǔ)資源不足的情況時(shí),避免由于爭(zhēng)搶存儲(chǔ)資源而造成系統(tǒng)性能下降。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┝藬?shù)據(jù)庫(kù)處理、數(shù)據(jù)訪(fǎng)問(wèn)方法及系統(tǒng),能夠在可能會(huì)出現(xiàn)存儲(chǔ)資源不足的情況時(shí),避免由于爭(zhēng)搶存儲(chǔ)資源而造成系統(tǒng)性能下降。
[0006]本申請(qǐng)?zhí)峁┝巳缦路桨?
[0007]一種數(shù)據(jù)庫(kù)處理方法,包括:
[0008]確定在特定時(shí)間段內(nèi)待遷移的目標(biāo)數(shù)據(jù)以及所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的應(yīng)用;
[0009]將所述目標(biāo)數(shù)據(jù)臨時(shí)遷移到目標(biāo)存儲(chǔ)區(qū);
[0010]將所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息通知給所述應(yīng)用,以便所述應(yīng)用在產(chǎn)生對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)操作時(shí),根據(jù)所述標(biāo)識(shí)信息識(shí)別所述目標(biāo)數(shù)據(jù),并到所述目標(biāo)存儲(chǔ)區(qū)訪(fǎng)問(wèn)所述目標(biāo)數(shù)據(jù)。[0011 ] 一種數(shù)據(jù)訪(fǎng)問(wèn)方法,包括:
[0012]接收通知消息,所述通知消息中攜帶有被臨時(shí)遷移到目標(biāo)存儲(chǔ)區(qū)的目標(biāo)數(shù)據(jù)的標(biāo)識(shí)息;
[0013]當(dāng)產(chǎn)生對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)操作時(shí),根據(jù)所述標(biāo)識(shí)信息識(shí)別待訪(fǎng)問(wèn)的數(shù)據(jù)是否為所述目標(biāo)數(shù)據(jù);
[0014]如果是,則根據(jù)預(yù)置的目標(biāo)存儲(chǔ)區(qū)的地址及端口號(hào),連接到所述目標(biāo)存儲(chǔ)區(qū)訪(fǎng)問(wèn)所述目標(biāo)數(shù)據(jù)。
[0015]一種數(shù)據(jù)庫(kù)處理系統(tǒng),包括:
[0016]目標(biāo)數(shù)據(jù)確定單元,用于確定在特定時(shí)間段內(nèi)待遷移的目標(biāo)數(shù)據(jù)以及所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的應(yīng)用;
[0017]第一數(shù)據(jù)遷移單元,用于將所述目標(biāo)數(shù)據(jù)臨時(shí)遷移到目標(biāo)存儲(chǔ)區(qū);
[0018]通知單元,用于將所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息通知給所述應(yīng)用,以便所述應(yīng)用在產(chǎn)生對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)操作時(shí),根據(jù)所述標(biāo)識(shí)信息識(shí)別所述目標(biāo)數(shù)據(jù),并到所述目標(biāo)存儲(chǔ)區(qū)訪(fǎng)問(wèn)所述目標(biāo)數(shù)據(jù)。
[0019]一種數(shù)據(jù)訪(fǎng)問(wèn)系統(tǒng),包括:
[0020]通知消息接收單元,用于接收通知消息,所述通知消息中攜帶有被臨時(shí)遷移到目標(biāo)存儲(chǔ)區(qū)的目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息;
[0021]目標(biāo)數(shù)據(jù)識(shí)別單元,用于當(dāng)產(chǎn)生對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)操作時(shí),根據(jù)所述標(biāo)識(shí)信息識(shí)別待訪(fǎng)問(wèn)的數(shù)據(jù)是否為所述目標(biāo)數(shù)據(jù);
[0022]連接單元,用于如果是,則根據(jù)預(yù)置的目標(biāo)存儲(chǔ)區(qū)的地址及端口號(hào),連接到所述目標(biāo)存儲(chǔ)區(qū)訪(fǎng)問(wèn)所述目標(biāo)數(shù)據(jù)。
[0023]根據(jù)本申請(qǐng)?zhí)峁┑木唧w實(shí)施例,本申請(qǐng)公開(kāi)了以下技術(shù)效果:
[0024]通過(guò)本申請(qǐng)實(shí)施例,在系統(tǒng)可能會(huì)出現(xiàn)存儲(chǔ)資源不足的情況時(shí),可以臨時(shí)將部分?jǐn)?shù)據(jù)遷移到目標(biāo)存儲(chǔ)區(qū),并將這部分?jǐn)?shù)據(jù)的標(biāo)識(shí)信息通知給各個(gè)應(yīng)用,這樣,應(yīng)用就可以識(shí)別出已經(jīng)被遷移的數(shù)據(jù),進(jìn)而在產(chǎn)生的對(duì)這部分?jǐn)?shù)據(jù)的訪(fǎng)問(wèn)請(qǐng)求時(shí),就會(huì)被引流到目標(biāo)存儲(chǔ)區(qū)。相當(dāng)于一部分訪(fǎng)問(wèn)請(qǐng)求是在原來(lái)的數(shù)據(jù)庫(kù)中進(jìn)行,而另一部分訪(fǎng)問(wèn)請(qǐng)求則是在目標(biāo)存儲(chǔ)區(qū)中進(jìn)行,從而避免由于爭(zhēng)搶存儲(chǔ)資源而造成系統(tǒng)性能下降。
[0025]另外,結(jié)合具體的應(yīng)用場(chǎng)景,本申請(qǐng)實(shí)施例可以實(shí)現(xiàn)將熱點(diǎn)數(shù)據(jù)與非熱點(diǎn)數(shù)據(jù)隔離,避免少量的熱點(diǎn)數(shù)據(jù)影響到大量的非熱點(diǎn)數(shù)據(jù)的處理。另外,待遷移的目標(biāo)數(shù)據(jù)也可以是當(dāng)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)量比較大、數(shù)據(jù)庫(kù)資源不足時(shí),數(shù)據(jù)庫(kù)中任意的一部分?jǐn)?shù)據(jù),將這部分?jǐn)?shù)據(jù)臨時(shí)遷移到其他存儲(chǔ)區(qū),當(dāng)訪(fǎng)問(wèn)量恢復(fù)到日常水平時(shí),還可以再遷移回原來(lái)的數(shù)據(jù)庫(kù),相當(dāng)于實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的動(dòng)態(tài)擴(kuò)容或縮容,并且這種擴(kuò)容或縮容可以是非對(duì)稱(chēng)的。
[0026]再者,本申請(qǐng)實(shí)施例還可以實(shí)現(xiàn)底層存儲(chǔ)的異構(gòu),可以將目標(biāo)數(shù)據(jù)遷移到不同于源數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)的其他數(shù)據(jù)庫(kù)中,靈活性得到提高。另外還可以將目標(biāo)數(shù)據(jù)遷移到緩存中,進(jìn)一步提高系統(tǒng)的性能。
[0027]當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【附圖說(shuō)明】
[0028]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0029]圖1是本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)處理方法的流程圖;
[0030]圖2是本申請(qǐng)實(shí)施例提供的數(shù)據(jù)訪(fǎng)問(wèn)方法的流程圖;
[0031]圖3是本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)處理系統(tǒng)的示意圖;
[0032]圖4是本申請(qǐng)實(shí)施例提供的數(shù)據(jù)訪(fǎng)問(wèn)系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0033]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0034]在本申請(qǐng)實(shí)施例中,在必要的時(shí)候,可以將源數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)遷移到其他的存儲(chǔ)區(qū),之后又可以將數(shù)據(jù)遷移回源數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)動(dòng)態(tài)的數(shù)據(jù)庫(kù)擴(kuò)容或縮容,達(dá)到從整體上提高系統(tǒng)性能及服務(wù)能力的目的。下面對(duì)具體的實(shí)現(xiàn)方式進(jìn)行詳細(xì)的介紹。
[0035]實(shí)施例一
[0036]參見(jiàn)圖1,本申請(qǐng)實(shí)施例一首先提供了一種數(shù)據(jù)庫(kù)處理方法,該方法可以包括以下步驟:
[0037]SlOl:確定在特定時(shí)間段內(nèi)待遷移的目標(biāo)數(shù)據(jù)以及所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的應(yīng)用;
[0038]首先需要說(shuō)明的是,在本申請(qǐng)實(shí)施例提供的技術(shù)方案中,可以提供一個(gè)“運(yùn)維平臺(tái)”,利用該運(yùn)維平臺(tái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)動(dòng)態(tài)的擴(kuò)容或縮容,因此,圖1中所述各個(gè)步驟的執(zhí)行主體就可以是該運(yùn)維平臺(tái)。當(dāng)然,“運(yùn)維平臺(tái)”只是一個(gè)形象化的名詞,在實(shí)際應(yīng)用中,也可以用其他的名稱(chēng),但只要通過(guò)執(zhí)行本申請(qǐng)實(shí)施例中各個(gè)步驟來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的處理方案,都屬于本申請(qǐng)的保護(hù)范圍。當(dāng)然,為了便于描述,本申請(qǐng)實(shí)施例中均以“運(yùn)維平臺(tái)”為例進(jìn)行介紹。
[0039]運(yùn)維平臺(tái)在確定待遷移的目標(biāo)數(shù)據(jù)時(shí),具體需要作為目標(biāo)數(shù)據(jù)被遷移的數(shù)據(jù),也可以根據(jù)實(shí)際的情況而定。
[0040]例如,在實(shí)際應(yīng)用中,可能存在以下情況:數(shù)據(jù)庫(kù)中可能會(huì)存在一些熱點(diǎn)數(shù)據(jù)(例如,熱賣(mài)商品對(duì)象的庫(kù)存記錄,由于參加營(yíng)銷(xiāo)活動(dòng)等原因造成其更新次數(shù)遠(yuǎn)高于其他數(shù)據(jù)),針對(duì)這種熱點(diǎn)數(shù)據(jù),同時(shí)可能會(huì)有10個(gè)以上的會(huì)話(huà)。由于鎖機(jī)制的存在,如果有多個(gè)熱點(diǎn)數(shù)據(jù)出現(xiàn)在同一個(gè)數(shù)據(jù)庫(kù)中,將會(huì)導(dǎo)致大量的會(huì)話(huà)處于等待狀態(tài),只有少數(shù)會(huì)話(huà)可以正常操作,這樣勢(shì)必導(dǎo)致數(shù)據(jù)庫(kù)性能的急劇下降。測(cè)試數(shù)據(jù)顯示,如果同一個(gè)數(shù)據(jù)庫(kù)中出現(xiàn)32個(gè)以上的熱點(diǎn)數(shù)據(jù)時(shí),則單庫(kù)的TPS (每秒處理事務(wù)數(shù))相對(duì)于沒(méi)有熱點(diǎn)數(shù)據(jù)時(shí)要降低3至5倍。
[0041]因此,在本申請(qǐng)實(shí)施例中,就可以將上述熱點(diǎn)數(shù)據(jù)確定為待遷移的目標(biāo)數(shù)據(jù)。也就是說(shuō),為了保證熱點(diǎn)數(shù)據(jù)不會(huì)影響其他大量的非熱點(diǎn)數(shù)據(jù),可以建立一種將熱點(diǎn)數(shù)據(jù)臨時(shí)遷移到別的存儲(chǔ)區(qū)(例如,OceanBase數(shù)據(jù)庫(kù)集群,或者其他的臨時(shí)增加的MySQL數(shù)據(jù)庫(kù))的機(jī)制,對(duì)熱點(diǎn)數(shù)據(jù)使用專(zhuān)門(mén)的數(shù)據(jù)存儲(chǔ)物理資源,以起到對(duì)熱點(diǎn)數(shù)據(jù)進(jìn)行隔離的作用。這樣既能保證熱點(diǎn)數(shù)據(jù)有充足的物理資源,也能保證熱點(diǎn)數(shù)據(jù)的資源爭(zhēng)用不會(huì)影響非熱點(diǎn)數(shù)據(jù)的處理,有利于保證整個(gè)系統(tǒng)的業(yè)務(wù)穩(wěn)定性。
[0042]例如,在電子商務(wù)交易平臺(tái)中,經(jīng)常會(huì)出現(xiàn)一些臨時(shí)性的營(yíng)銷(xiāo)活動(dòng),不同的營(yíng)銷(xiāo)活動(dòng)可能造就不同的熱賣(mài)商品庫(kù)存(也即,使得熱點(diǎn)商品的庫(kù)存信息成為熱點(diǎn)信息)。因此,可以在活動(dòng)前臨時(shí)將熱賣(mài)商品庫(kù)存遷移到獨(dú)立的數(shù)據(jù)庫(kù)上,以保證營(yíng)銷(xiāo)活動(dòng)的順利進(jìn)行。比如在