本申請(qǐng)涉及數(shù)據(jù)備份,尤其涉及一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法及設(shè)備。
背景技術(shù):
1、在數(shù)據(jù)容災(zāi)備份的場(chǎng)景中,全表查詢無(wú)法充分地利用索引優(yōu)勢(shì),從而導(dǎo)致查詢效率降低,大數(shù)據(jù)字段表、大數(shù)據(jù)量表尤其明顯。而數(shù)據(jù)分片查詢則可以通過(guò)分片鍵的選舉與分片區(qū)間的確立,很好地解決此問(wèn)題。
2、數(shù)據(jù)分片指的是數(shù)據(jù)水平分片,即把一個(gè)數(shù)據(jù)表拆分成多份進(jìn)行查詢,每一份的表結(jié)構(gòu)都是一樣的,但記錄數(shù)量有可能不同。當(dāng)一個(gè)表的數(shù)據(jù)量過(guò)大,明顯影響查詢性能時(shí),可以通過(guò)數(shù)據(jù)分片來(lái)提高查詢性能。
3、但是現(xiàn)有技術(shù)中利用數(shù)據(jù)分片的方式從源端數(shù)據(jù)庫(kù)向備端數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)抽取裝載時(shí),依然存在著回表查詢導(dǎo)致查詢效率降低的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、為至少在一定程度上克服相關(guān)技術(shù)中利用數(shù)據(jù)分片的方式從源端數(shù)據(jù)庫(kù)向備端數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)抽取裝載時(shí),存在著回表查詢導(dǎo)致查詢效率降低的的問(wèn)題,本申請(qǐng)?zhí)峁┮环N從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法及設(shè)備。
2、本申請(qǐng)的方案如下:
3、根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法,包括:
4、將源端數(shù)據(jù)庫(kù)中的待抽取數(shù)據(jù)的索引首列選舉為分片鍵;
5、根據(jù)所述源端數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果和歷史抽取數(shù)據(jù)記錄確定分片閾值;
6、基于預(yù)設(shè)的第一sql查詢語(yǔ)句查詢所述分片鍵,并將分片鍵查詢結(jié)果進(jìn)行升序排列,以排列后的分片鍵查詢結(jié)果和所述分片閾值確立分片區(qū)間;
7、根據(jù)所述分片區(qū)間構(gòu)建第二sql查詢語(yǔ)句;所述第二sql查詢語(yǔ)句的查詢條件為命中索引;
8、執(zhí)行所述第二sql查詢語(yǔ)句,在所述源端數(shù)據(jù)庫(kù)中對(duì)所述待抽取數(shù)據(jù)進(jìn)行范圍查詢;
9、將查詢到的所述待抽取數(shù)據(jù)進(jìn)行抽取;
10、將抽取的數(shù)據(jù)裝載到備端數(shù)據(jù)庫(kù)。
11、優(yōu)選地,將源端數(shù)據(jù)庫(kù)中的待抽取數(shù)據(jù)的索引首列選舉為分片鍵,包括:
12、判斷待抽取數(shù)據(jù)是否存在主鍵索引;
13、若待抽取數(shù)據(jù)存在主鍵索引,則將待抽取數(shù)據(jù)的主鍵索引首列選舉為分片鍵;
14、若待抽取數(shù)據(jù)不存在主鍵索引,則判斷待抽取數(shù)據(jù)是否存在唯一索引;
15、若待抽取數(shù)據(jù)存在唯一索引,則將待抽取數(shù)據(jù)的唯一索引首列選舉為分片鍵;
16、若待抽取數(shù)據(jù)不存在唯一索引,則判斷待抽取數(shù)據(jù)是否具有普通索引;
17、若待抽取數(shù)據(jù)存在普通索引,則將待抽取數(shù)據(jù)的普通索引首列選舉為分片鍵。
18、優(yōu)選地,所述方法還包括:
19、若待抽取數(shù)據(jù)不存在普通索引,則在所述源端數(shù)據(jù)庫(kù)中對(duì)所述待抽取數(shù)據(jù)執(zhí)行全表查詢。
20、優(yōu)選地,根據(jù)所述源端數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果和歷史抽取數(shù)據(jù)記錄確定分片閾值后,所述方法還包括:
21、判斷所述待抽取數(shù)據(jù)的表數(shù)據(jù)量是否小于所述分片閾值;
22、若所述待抽取數(shù)據(jù)的表數(shù)據(jù)量小于所述分片閾值,則在所述源端數(shù)據(jù)庫(kù)中對(duì)所述待抽取數(shù)據(jù)執(zhí)行全表查詢。
23、優(yōu)選地,在所述源端數(shù)據(jù)庫(kù)中對(duì)所述待抽取數(shù)據(jù)進(jìn)行范圍查詢,包括:
24、基于多線程,在所述源端數(shù)據(jù)庫(kù)中對(duì)各分片區(qū)間中的待抽取數(shù)據(jù)進(jìn)行范圍查詢。
25、優(yōu)選地,所述第一sql查詢語(yǔ)句在命中索引時(shí),不進(jìn)行回表查詢。
26、優(yōu)選地,所述第一sql查詢語(yǔ)句進(jìn)行單列查詢;
27、所述第二sql查詢語(yǔ)句進(jìn)行全列查詢。
28、根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的設(shè)備,包括:
29、處理器和存儲(chǔ)器;
30、所述處理器與存儲(chǔ)器通過(guò)通信總線相連接:
31、其中,所述處理器,用于調(diào)用并執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的程序;
32、所述存儲(chǔ)器,用于存儲(chǔ)程序,所述程序至少用于執(zhí)行如以上任一項(xiàng)所述的一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法。
33、本申請(qǐng)?zhí)峁┑募夹g(shù)方案可以包括以下有益效果:本申請(qǐng)中的從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法,包括:將源端數(shù)據(jù)庫(kù)中的待抽取數(shù)據(jù)的索引首列選舉為分片鍵;根據(jù)源端數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果和歷史抽取數(shù)據(jù)記錄確定分片閾值;基于預(yù)設(shè)的第一sql查詢語(yǔ)句查詢分片鍵,并將分片鍵查詢結(jié)果進(jìn)行升序排列,以排列后的分片鍵查詢結(jié)果和分片閾值確立分片區(qū)間;根據(jù)分片區(qū)間構(gòu)建第二sql查詢語(yǔ)句;第二sql查詢語(yǔ)句的查詢條件為命中索引;執(zhí)行第二sql查詢語(yǔ)句,在源端數(shù)據(jù)庫(kù)中對(duì)待抽取數(shù)據(jù)進(jìn)行范圍查詢;將查詢到的待抽取數(shù)據(jù)進(jìn)行抽??;將抽取的數(shù)據(jù)裝載到備端數(shù)據(jù)庫(kù)。
34、本申請(qǐng)中的技術(shù)方案,將源端數(shù)據(jù)庫(kù)中的待抽取數(shù)據(jù)的索引首列選舉為分片鍵,通過(guò)合理利用索引,使得基于預(yù)設(shè)的第一sql查詢語(yǔ)句查詢分片鍵命中索引時(shí),查詢分片鍵無(wú)需回表查詢,所以分片區(qū)間的確立非常迅速。分片區(qū)間的迅速確立,為后續(xù)進(jìn)行范圍查詢、數(shù)據(jù)抽取和數(shù)據(jù)裝載數(shù)據(jù)裝載。本申請(qǐng)中的技術(shù)方案極大地提升了從源端數(shù)據(jù)庫(kù)向備端數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)抽取裝載時(shí)的效率。
35、應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請(qǐng)。
1.一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,將源端數(shù)據(jù)庫(kù)中的待抽取數(shù)據(jù)的索引首列選舉為分片鍵,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述源端數(shù)據(jù)庫(kù)的性能測(cè)試結(jié)果和歷史抽取數(shù)據(jù)記錄確定分片閾值后,所述方法還包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述源端數(shù)據(jù)庫(kù)中對(duì)所述待抽取數(shù)據(jù)進(jìn)行范圍查詢,包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一sql查詢語(yǔ)句在命中索引時(shí),不進(jìn)行回表查詢。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一sql查詢語(yǔ)句進(jìn)行單列查詢;
8.一種從源端數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分片抽取裝載的設(shè)備,其特征在于,包括: