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

一種數(shù)據(jù)遷移裝置、服務(wù)器及方法與流程

文檔序號:11177262閱讀:329來源:國知局
一種數(shù)據(jù)遷移裝置、服務(wù)器及方法與流程

本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)遷移裝置、服務(wù)器及方法。



背景技術(shù):

mysql(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))數(shù)據(jù)庫是現(xiàn)在常用的一種數(shù)據(jù)存儲,但是當(dāng)存儲的數(shù)據(jù)量達(dá)到一定數(shù)量后,mysql的查詢性能將會出現(xiàn)嚴(yán)重下降,這時候就需要將數(shù)據(jù)庫中的大表做數(shù)據(jù)拆分,拆分成多個分表。

但是在拆分成多個分表后,各個分表還是會存在查詢頻率、數(shù)據(jù)量不一致的情況,若某些分表的查詢頻率、數(shù)據(jù)量均較大,則會出現(xiàn)查詢緩慢的情況,造成查詢效率低下;某些分表的查詢頻率、數(shù)據(jù)量均較小,則數(shù)據(jù)庫利用率不高。



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

本發(fā)明的主要目的在于提出一種數(shù)據(jù)遷移裝置、服務(wù)器及方法,旨在解決現(xiàn)有技術(shù)中,數(shù)據(jù)庫的查詢效率低下、利用率不高的問題。

為解決上述技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)遷移裝置,包括:

計算模塊,用于計算數(shù)據(jù)庫中每個分表的分表遷移值;

比較模塊,用于將每個分表的分表遷移值與閾值進行比較;

選擇模塊,用于從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;

遷移模塊,用于將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中。

其中,計算模塊用于統(tǒng)計數(shù)據(jù)庫中每個分表的數(shù)據(jù)量和查詢頻率;計算所有分表的數(shù)據(jù)量的平均值和查詢頻率的平均值;按照以下公式計算每個分表的分表遷移值:

分表遷移值=(該分表的數(shù)據(jù)量/所有分表數(shù)據(jù)量的平均值)*(該分表的查詢頻率/所有分表查詢頻率的平均值)。

其中,遷移模塊包括:

鎖定子模塊,用于將待遷移用戶鎖定;

第一刪除子模塊,用于刪除該待遷移用戶的分表緩存信息,分表緩存信息用于指示該待遷移用戶數(shù)據(jù)所屬的分表;

插入子模塊,用于將該待遷移用戶的數(shù)據(jù)插入目標(biāo)分表中;

修改子模塊,用于修改該待遷移用戶所屬的分表;

第二刪除子模塊,用于將原分表中該待遷移用戶的數(shù)據(jù)刪除;

解鎖子模塊,用于解除該待遷移用戶的鎖定。

其中,還包括確定模塊,用于在遷移模塊將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中之前,根據(jù)分表遷移值最大的分表中的待遷移用戶遷移到分表遷移值最小的目標(biāo)分表、分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表的規(guī)則,確定出每個待遷移用戶待遷移的目標(biāo)分表。

進一步地,本發(fā)明提供一種服務(wù)器,其特征在于,包括上述的數(shù)據(jù)遷移裝置。

進一步地,本發(fā)明提供一種數(shù)據(jù)遷移方法,包括:

計算數(shù)據(jù)庫中每個分表的分表遷移值;

將每個分表的分表遷移值與閾值進行比較;

從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;

將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中。

其中,計算數(shù)據(jù)庫中每個分表的分表遷移值包括:

統(tǒng)計數(shù)據(jù)庫中每個分表的數(shù)據(jù)量和查詢頻率;

計算所有分表的數(shù)據(jù)量的平均值和查詢頻率的平均值;

按照以下公式計算每個分表的分表遷移值:

分表遷移值=(該分表的數(shù)據(jù)量/所有分表數(shù)據(jù)量的平均值)*(該分表的查詢頻率/所有分表查詢頻率的平均值)。

其中,將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中包括:

將待遷移用戶鎖定;

刪除該待遷移用戶的分表緩存信息,分表緩存信息用于指示該待遷移用戶數(shù)據(jù)所屬的分表;

將該待遷移用戶的數(shù)據(jù)插入目標(biāo)分表中,并修改該待遷移用戶所屬的分表;

將原分表中該待遷移用戶的數(shù)據(jù)刪除;

解除該待遷移用戶的鎖定。

其中,在將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中之前,還包括:

根據(jù)分表遷移值最大的分表中的待遷移用戶遷移到分表遷移值最小的目標(biāo)分表、分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表的規(guī)則,確定出每個待遷移用戶待遷移的目標(biāo)分表。

其中,將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中的順序包括:

依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,同時將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中。

有益效果

本發(fā)明提供了一種數(shù)據(jù)遷移裝置、服務(wù)器及方法,該數(shù)據(jù)遷移裝置包括計算模塊,用于計算數(shù)據(jù)庫中每個分表的分表遷移值;比較模塊,用于將每個分表的分表遷移值與閾值進行比較;選擇模塊,用于從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;遷移模塊,用于將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中;采用上述方案,將分表遷移值大于閾值的分表中的數(shù)據(jù)量最大的用戶,遷移到分表遷移值小于閾值的分表中,提升了數(shù)據(jù)庫的查詢效率,提高了數(shù)據(jù)庫的利用率。

附圖說明

下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中:

圖1為實現(xiàn)本發(fā)明各個實施例一個可選的服務(wù)器的結(jié)構(gòu)示意圖;

圖2為本發(fā)明第一實施例提供的一種數(shù)據(jù)遷移裝置的示意圖;

圖3為本發(fā)明第一實施例提供的另一種數(shù)據(jù)遷移裝置的示意圖;

圖4為本發(fā)明第二實施例提供的一種服務(wù)器的示意圖;

圖5為本發(fā)明第三實施例提供的一種數(shù)據(jù)遷移方法的流程圖;

圖6為本發(fā)明第四實施例提供的另一種數(shù)據(jù)遷移方法的流程圖。

具體實施方式

應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。

如圖1所示,為實現(xiàn)本發(fā)明各個實施例一個可選的服務(wù)器的結(jié)構(gòu)示意圖,該服務(wù)器至少包括:輸入輸出(io)總線11、處理器12、存儲器13、內(nèi)存14和通信裝置15。其中,

輸入輸出(io)總線11分別與自身所屬的服務(wù)器的其它部件(處理器12、存儲器13、內(nèi)存14和通信裝置15)連接,并且為其它部件提供傳送線路。

處理器12通常控制自身所屬的服務(wù)器的總體操作。例如,處理器12執(zhí)行計算和確認(rèn)等操作。其中,處理器12可以是中央處理器(cpu)。

存儲器13存儲處理器可讀、處理器可執(zhí)行的軟件代碼,其包含用于控制處理器12執(zhí)行本文描述的功能的指令(即軟件執(zhí)行功能)。

其中,本發(fā)明提供的數(shù)據(jù)遷移裝置中,實現(xiàn)計算模塊、比較模塊、選擇模塊、遷移模塊和確定模塊的功能的軟件代碼可存儲在存儲器13中,并由處理器12執(zhí)行或編譯后執(zhí)行。

內(nèi)存14,一般采用半導(dǎo)體存儲單元,包括隨機存儲器(ram),只讀存儲器(rom),以及高速緩存(cache),ram是其中最重要的存儲器。內(nèi)存14是計算機中重要的部件之一,它是與cpu12進行溝通的橋梁,計算機中所有程序的運行都是在內(nèi)存中進行的,其作用是用于暫時存放cpu12中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù),只要計算機在運行中,cpu12就會把需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進行運算,當(dāng)運算完成后cpu12再將結(jié)果傳送出來,內(nèi)存的運行也決定了計算機的穩(wěn)定運行。

通信裝置15,通常包括一個或多個組件,其允許自身所屬的服務(wù)器與無線通信系統(tǒng)或網(wǎng)絡(luò)之間的無線電通信。

以下通過具體實施例對本發(fā)明進行詳細(xì)說明。

第一實施例

本實施例提供了一種數(shù)據(jù)遷移裝置,參見圖2,圖2為本實施例提供的一種數(shù)據(jù)遷移裝置的示意圖,該數(shù)據(jù)遷移裝置包括:計算模塊21、比較模塊22、選擇模塊23、遷移模塊24;

計算模塊21,用于計算數(shù)據(jù)庫中每個分表的分表遷移值;

分表是根據(jù)用戶id進行分表,每個分表中存在的用戶id的數(shù)量大于等于1,由于每個用戶擁有的業(yè)務(wù)數(shù)據(jù)不一致,所以可能存在某些分表數(shù)據(jù)量過大、某些分表數(shù)據(jù)量較小的情況。

每個分表都有對應(yīng)的分表遷移值,分表遷移值是用于比對每個分表性能壓力情況的數(shù)值;分表遷移值越大,則代表該分表的性能壓力越大,需要將該分表內(nèi)數(shù)據(jù)量大的用戶進行數(shù)據(jù)遷移,遷移到分表遷移值較小的分表內(nèi);分表遷移值越小,則可以代表該分表沒有壓力,可將其他分表的用戶數(shù)據(jù)遷移到該分表內(nèi)。

其中,計算模塊21具體用于:

統(tǒng)計數(shù)據(jù)庫中每個分表的數(shù)據(jù)量和查詢頻率;

其中,分表的查詢頻率可以為1分鐘內(nèi)該分表被查詢的次數(shù);

計算所有分表的數(shù)據(jù)量的平均值和查詢頻率的平均值;

按照以下方式計算每個分表的分表遷移值:

計算該分表的數(shù)據(jù)量與所有分表數(shù)據(jù)量的平均值的比值,以及該分表的查詢頻率與所有分表查詢頻率的平均值的比值;

將上述兩個比值的乘積作為該分表的分表遷移值。

也即每個分表的分表遷移值的計算公式為:

分表遷移值=(該分表的數(shù)據(jù)量/所有分表數(shù)據(jù)量的平均值)*(該分表的查詢頻率/所有分表查詢頻率的平均值)

由于緩存中的當(dāng)前分表內(nèi)可能存在用戶數(shù)據(jù)量較小、且數(shù)據(jù)量變化大的情況,所以在計算模塊21計算數(shù)據(jù)庫中每個分表的分表遷移值的過程中,不將緩存中的當(dāng)前分表計算在內(nèi)。

比較模塊22,用于將每個分表的分表遷移值與閾值進行比較;

該閥值可根據(jù)服務(wù)器的不同進行設(shè)置,示例性的,閾值可以設(shè)置為2。

若比較模塊22處理后的結(jié)果為每個分表的分表遷移值均小于等于閾值,則流程結(jié)束。

選擇模塊23,用于從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;

示例性的,若分表遷移值大于閾值的分表有兩個,分別為分表1、分表2,且分表1的分表遷移值大于分表2的分表遷移值;分表遷移值小于閾值的分表有兩個,分別為分表3、分表4,且分表3的分表遷移值大于分表4的分表遷移值;

從分表1內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶a,用戶a為分表1的待遷移用戶;從分表2內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶b,用戶b為分表2的待遷移用戶;將分表3、分表4均作為目標(biāo)分表。

遷移模塊24,用于將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中。

可選的,參見圖3,圖3為本實施例提供的另一種數(shù)據(jù)遷移裝置的示意圖,該數(shù)據(jù)遷移裝置還包括確定模塊25,用于在遷移模塊24將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中之前,根據(jù)分表遷移值最大的分表中的待遷移用戶遷移到分表遷移值最小的目標(biāo)分表、分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表的規(guī)則,確定出每個待遷移用戶待遷移的目標(biāo)分表;

即分表遷移值最大的分表中的待遷移用戶將會遷移到分表遷移值最小的目標(biāo)分表中,分表遷移值第二大的分表中的待遷移用戶將會遷移到分表遷移值第二小的目標(biāo)分表中,以此類推,分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表中。

示例性的,由于上述的分表1的分表遷移值大于分表2的分表遷移值,分表3的分表遷移值大于分表4的分表遷移值,所以可以將分表1中的用戶a的數(shù)據(jù)遷移到分表4中,將分表2中的用戶b的數(shù)據(jù)遷移到分表3中。

其中,遷移模塊24包括:鎖定子模塊241、第一刪除子模塊242、插入子模塊243、修改子模塊244、第二刪除子模塊245、解鎖子模塊246;

鎖定子模塊241,用于將待遷移用戶鎖定;

將待遷移用戶鎖定的目的是為了防止待遷移用戶在同步數(shù)據(jù)時進行數(shù)據(jù)庫操作,引起數(shù)據(jù)錯誤;

第一刪除子模塊242,用于刪除該待遷移用戶的分表緩存信息,分表緩存信息用于指示該待遷移用戶數(shù)據(jù)所屬的分表;

業(yè)務(wù)系統(tǒng)中有緩存用戶的數(shù)據(jù)存在在哪個分表,需要刪除改緩存;

插入子模塊243,用于將該待遷移用戶的數(shù)據(jù)插入目標(biāo)分表中;

修改子模塊244,用于修改該待遷移用戶所屬的分表;

其中,有專門的數(shù)據(jù)庫表用于記錄用戶業(yè)務(wù)所屬的分表;

第二刪除子模塊245,用于將原分表中該待遷移用戶的數(shù)據(jù)刪除;

解鎖子模塊246,用于解除該待遷移用戶的鎖定;

通過上述各個子模塊的處理之后,則完成了待遷移用戶的數(shù)據(jù)的遷移。

在一種實施方式中,遷移模塊24將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中的順序包括:

依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

可以是按照分表的序號由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表的序號由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,同時將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中。

通過本實施例的實施,將查詢頻率、數(shù)據(jù)量均較大的分表內(nèi)的數(shù)據(jù)量最大的用戶數(shù)據(jù)遷移到查詢頻率、數(shù)據(jù)量均較小的分表中,也即將分表遷移值大于閾值的分表中的數(shù)據(jù)量最大的用戶,遷移到分表遷移值小于閾值的分表中,提升了數(shù)據(jù)庫的查詢效率,提高了數(shù)據(jù)庫的利用率。

第二實施例

本實施例提供一種服務(wù)器,參見圖4,圖4為本實施例提供的一種服務(wù)器的示意圖,該服務(wù)器包括第一實施例中的數(shù)據(jù)遷移裝置。

上述數(shù)據(jù)遷移裝置的各功能模塊執(zhí)行的功能可通過圖1中的部分硬件來實現(xiàn),當(dāng)然,各硬件執(zhí)行的功能也可由上述功能模塊實現(xiàn)。上述各功能模塊的功能具體由如下硬件實現(xiàn):

計算模塊21、比較模塊22、選擇模塊23、鎖定子模塊241、第一刪除子模塊242、插入子模塊243、修改子模塊244、第二刪除子模塊245、解鎖子模塊246、確定模塊25的功能均可通過處理器12來實現(xiàn);處理器12通常控制自身所屬的服務(wù)器的總體操作。例如,處理器12執(zhí)行計算、比較和確認(rèn)等操作。其中,處理器12可以是中央處理器(cpu)。

處理器12,用于計算數(shù)據(jù)庫中每個分表的分表遷移值;

分表是根據(jù)用戶id進行分表,每個分表中存在的用戶id的數(shù)量大于等于1,由于每個用戶擁有的業(yè)務(wù)數(shù)據(jù)不一致,所以可能存在某些分表數(shù)據(jù)量過大、某些分表數(shù)據(jù)量較小的情況。

每個分表都有對應(yīng)的分表遷移值,分表遷移值是用于比對每個分表性能壓力情況的數(shù)值;分表遷移值越大,則代表該分表的性能壓力越大,需要將該分表內(nèi)數(shù)據(jù)量大的用戶進行數(shù)據(jù)遷移,遷移到分表遷移值較小的分表內(nèi);分表遷移值越小,則可以代表該分表沒有壓力,可將其他分表的用戶數(shù)據(jù)遷移到該分表內(nèi)。

其中,處理器12具體用于:

統(tǒng)計數(shù)據(jù)庫中每個分表的數(shù)據(jù)量和查詢頻率;

其中,分表的查詢頻率可以為1分鐘內(nèi)該分表被查詢的次數(shù);

計算所有分表的數(shù)據(jù)量的平均值和查詢頻率的平均值;

按照以下方式計算每個分表的分表遷移值:

計算該分表的數(shù)據(jù)量與所有分表數(shù)據(jù)量的平均值的比值,以及該分表的查詢頻率與所有分表查詢頻率的平均值的比值;

將上述兩個比值的乘積作為該分表的分表遷移值。

也即每個分表的分表遷移值的計算公式為:

分表遷移值=(該分表的數(shù)據(jù)量/所有分表數(shù)據(jù)量的平均值)*(該分表的查詢頻率/所有分表查詢頻率的平均值)

由于緩存中的當(dāng)前分表內(nèi)可能存在用戶數(shù)據(jù)量較小、且數(shù)據(jù)量變化大的情況,所以在處理器12計算數(shù)據(jù)庫中每個分表的分表遷移值的過程中,不將緩存中的當(dāng)前分表計算在內(nèi)。

處理器12,用于將每個分表的分表遷移值與閾值進行比較;

該閥值可根據(jù)服務(wù)器的不同進行設(shè)置,示例性的,閾值可以設(shè)置為2。

若處理器12處理后的結(jié)果為每個分表的分表遷移值均小于等于閾值,則流程結(jié)束。

處理器12,用于從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;

示例性的,若分表遷移值大于閾值的分表有兩個,分別為分表1、分表2,且分表1的分表遷移值大于分表2的分表遷移值;分表遷移值小于閾值的分表有兩個,分別為分表3、分表4,且分表3的分表遷移值大于分表4的分表遷移值;

從分表1內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶a,用戶a為分表1的待遷移用戶;從分表2內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶b,用戶b為分表2的待遷移用戶;將分表3、分表4均作為目標(biāo)分表。

處理器12,用于將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中。

可選的,處理器12用于在將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中之前,根據(jù)分表遷移值最大的分表中的待遷移用戶遷移到分表遷移值最小的目標(biāo)分表、分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表的規(guī)則,確定出每個待遷移用戶待遷移的目標(biāo)分表;

即分表遷移值最大的分表中的待遷移用戶將會遷移到分表遷移值最小的目標(biāo)分表中,分表遷移值第二大的分表中的待遷移用戶將會遷移到分表遷移值第二小的目標(biāo)分表中,以此類推,分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表中。

示例性的,由于上述的分表1的分表遷移值大于分表2的分表遷移值,分表3的分表遷移值大于分表4的分表遷移值,所以可以將分表1中的用戶a的數(shù)據(jù)遷移到分表4中,將分表2中的用戶b的數(shù)據(jù)遷移到分表3中。

處理器12,用于將待遷移用戶鎖定;

將待遷移用戶鎖定的目的是為了防止待遷移用戶在同步數(shù)據(jù)時進行數(shù)據(jù)庫操作,引起數(shù)據(jù)錯誤;

處理器12,用于刪除該待遷移用戶的分表緩存信息,分表緩存信息用于指示該待遷移用戶數(shù)據(jù)所屬的分表;

業(yè)務(wù)系統(tǒng)中有緩存用戶的數(shù)據(jù)存在在哪個分表,需要刪除改緩存;

處理器12,用于將該待遷移用戶的數(shù)據(jù)插入目標(biāo)分表中;

處理器12,用于修改該待遷移用戶所屬的分表;

其中,有專門的數(shù)據(jù)庫表用于記錄用戶業(yè)務(wù)所屬的分表;

處理器12,用于將原分表中該待遷移用戶的數(shù)據(jù)刪除;

處理器12,用于解除該待遷移用戶的鎖定;

通過上述處理器12的處理之后,則完成了待遷移用戶的數(shù)據(jù)的遷移。

在一種實施方式中,處理器12將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中的順序包括:

依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

可以是按照分表的序號由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表的序號由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,同時將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中。

通過本實施例的實施,將查詢頻率、數(shù)據(jù)量均較大的分表內(nèi)的數(shù)據(jù)量最大的用戶數(shù)據(jù)遷移到查詢頻率、數(shù)據(jù)量均較小的分表中,也即將分表遷移值大于閾值的分表中的數(shù)據(jù)量最大的用戶,遷移到分表遷移值小于閾值的分表中,提升了數(shù)據(jù)庫的查詢效率,提高了數(shù)據(jù)庫的利用率。

第三實施例

本實施例提供了一種數(shù)據(jù)遷移方法,參見圖5,圖5為本實施例提供的一種數(shù)據(jù)遷移方法的流程圖,該數(shù)據(jù)遷移方法包括以下步驟:

s501:計算數(shù)據(jù)庫中每個分表的分表遷移值;

分表是根據(jù)用戶id進行分表,每個分表中存在的用戶id的數(shù)量大于等于1,由于每個用戶擁有的業(yè)務(wù)數(shù)據(jù)不一致,所以可能存在某些分表數(shù)據(jù)量過大、某些分表數(shù)據(jù)量較小的情況。

每個分表都有對應(yīng)的分表遷移值,分表遷移值是用于比對每個分表性能壓力情況的數(shù)值;分表遷移值越大,則代表該分表的性能壓力越大,需要將該分表內(nèi)數(shù)據(jù)量大的用戶進行數(shù)據(jù)遷移,遷移到分表遷移值較小的分表內(nèi);分表遷移值越小,則可以代表該分表沒有壓力,可將其他分表的用戶數(shù)據(jù)遷移到該分表內(nèi)。

其中,s501具體包括:

統(tǒng)計數(shù)據(jù)庫中每個分表的數(shù)據(jù)量和查詢頻率;

其中,分表的查詢頻率可以為1分鐘內(nèi)該分表被查詢的次數(shù);

計算所有分表的數(shù)據(jù)量的平均值和查詢頻率的平均值;

按照以下方式計算每個分表的分表遷移值:

計算該分表的數(shù)據(jù)量與所有分表數(shù)據(jù)量的平均值的比值,以及該分表的查詢頻率與所有分表查詢頻率的平均值的比值;

將上述兩個比值的乘積作為該分表的分表遷移值。

也即每個分表的分表遷移值的計算公式為:

分表遷移值=(該分表的數(shù)據(jù)量/所有分表數(shù)據(jù)量的平均值)*(該分表的查詢頻率/所有分表查詢頻率的平均值)

由于緩存中的當(dāng)前分表內(nèi)可能存在用戶數(shù)據(jù)量較小、且數(shù)據(jù)量變化大的情況,所以在計算數(shù)據(jù)庫中每個分表的分表遷移值的過程中,不將緩存中的當(dāng)前分表計算在內(nèi)。

s502:將每個分表的分表遷移值與閾值進行比較;

該閥值可根據(jù)服務(wù)器的不同進行設(shè)置,示例性的,閾值可以設(shè)置為2。

若比較后的結(jié)果為每個分表的分表遷移值均小于等于閾值,則流程結(jié)束。

s503:從每個大于閾值的分表中,選擇出每個大于閾值的分表分別對應(yīng)的數(shù)據(jù)量最大的用戶,并將其作為該分表的待遷移用戶;將小于閾值的分表作為目標(biāo)分表;

示例性的,若分表遷移值大于閾值的分表有兩個,分別為分表1、分表2,且分表1的分表遷移值大于分表2的分表遷移值;分表遷移值小于閾值的分表有兩個,分別為分表3、分表4,且分表3的分表遷移值大于分表4的分表遷移值;

從分表1內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶a,用戶a為分表1的待遷移用戶;從分表2內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶b,用戶b為分表2的待遷移用戶;將分表3、分表4均作為目標(biāo)分表。

s504:將每個待遷移用戶的數(shù)據(jù)遷移到目標(biāo)分表中。

在s504之前,還包括:根據(jù)分表遷移值最大的分表中的待遷移用戶遷移到分表遷移值最小的目標(biāo)分表、分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表的規(guī)則,確定出每個待遷移用戶待遷移的目標(biāo)分表;

即分表遷移值最大的分表中的待遷移用戶將會遷移到分表遷移值最小的目標(biāo)分表中,分表遷移值第二大的分表中的待遷移用戶將會遷移到分表遷移值第二小的目標(biāo)分表中,以此類推,分表遷移值最小的分表中的待遷移用戶遷移到分表遷移值最大的目標(biāo)分表中。

示例性的,由于上述的分表1的分表遷移值大于分表2的分表遷移值,分表3的分表遷移值大于分表4的分表遷移值,所以可以將分表1中的用戶a的數(shù)據(jù)遷移到分表4中,將分表2中的用戶b的數(shù)據(jù)遷移到分表3中。

其中,s504包括:

將待遷移用戶鎖定;

將待遷移用戶鎖定的目的是為了防止待遷移用戶在同步數(shù)據(jù)時進行數(shù)據(jù)庫操作,引起數(shù)據(jù)錯誤;

刪除該待遷移用戶的分表緩存信息,分表緩存信息用于指示該待遷移用戶數(shù)據(jù)所屬的分表;

業(yè)務(wù)系統(tǒng)中有緩存用戶的數(shù)據(jù)存在在哪個分表,需要刪除改緩存;

將該待遷移用戶的數(shù)據(jù)插入目標(biāo)分表中,并修改該待遷移用戶所屬的分表;

其中,有專門的數(shù)據(jù)庫表用于記錄用戶業(yè)務(wù)所屬的分表;

將原分表中該待遷移用戶的數(shù)據(jù)刪除;

解除該待遷移用戶的鎖定。

通過上述步驟之后,則完成了待遷移用戶的數(shù)據(jù)的遷移。

在一種實施方式中,將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中的順序包括:

依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

可以是按照分表的序號由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表的序號由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由大到小的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,可以是按照分表遷移值由小到大的順序依次將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中;

或者,同時將每個待遷移用戶的數(shù)據(jù)按照預(yù)設(shè)規(guī)則遷移到目標(biāo)分表中。

通過本實施例的實施,將查詢頻率、數(shù)據(jù)量均較大的分表內(nèi)的數(shù)據(jù)量最大的用戶數(shù)據(jù)遷移到查詢頻率、數(shù)據(jù)量均較小的分表中,也即將分表遷移值大于閾值的分表中的數(shù)據(jù)量最大的用戶,遷移到分表遷移值小于閾值的分表中,提升了數(shù)據(jù)庫的查詢效率,提高了數(shù)據(jù)庫的利用率。

第四實施例

本實施例提供了一種數(shù)據(jù)遷移方法,參見圖6,圖6為本實施例提供的一種數(shù)據(jù)遷移方法的流程圖,包括以下步驟:

s601:計算數(shù)據(jù)庫中每個分表的分表遷移值;

s602:將每個分表的分表遷移值與閾值進行比較,比較的結(jié)果為:分表遷移值大于閾值的分表有兩個,分別為分表1、分表2,且分表1的分表遷移值大于分表2的分表遷移值;分表遷移值小于閾值的分表有兩個,分別為分表3、分表4,且分表3的分表遷移值大于分表4的分表遷移值;

s603:從分表1內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶a,用戶a為分表1的待遷移用戶;從分表2內(nèi)選擇出該分表對應(yīng)的數(shù)據(jù)量最大的用戶,該用戶為用戶b,用戶b為分表2的待遷移用戶;將分表3作為用戶b待遷移的目標(biāo)分表,將分表4作為用戶a待遷移的目標(biāo)分表。

s604:將分表1中的用戶a的數(shù)據(jù)遷移到分表4中,將分表2中的用戶b的數(shù)據(jù)遷移到分表3中。

通過本實施例的實施,將查詢頻率、數(shù)據(jù)量均較大的分表內(nèi)的數(shù)據(jù)量最大的用戶數(shù)據(jù)遷移到查詢頻率、數(shù)據(jù)量均較小的分表中,也即將分表遷移值大于閾值的分表中的數(shù)據(jù)量最大的用戶,遷移到分表遷移值小于閾值的分表中,提升了數(shù)據(jù)庫的查詢效率,提高了數(shù)據(jù)庫的利用率。

需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例的方法。

以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
五寨县| 汪清县| 新营市| 宜黄县| 桦川县| 葫芦岛市| 含山县| 遵义县| 津市市| 两当县| 虞城县| 房产| 东乌| 榆树市| 渭南市| 荥经县| 麻城市| 平潭县| 太和县| 囊谦县| 荥经县| 富平县| 长子县| 威信县| 东乡族自治县| 阜新| 英吉沙县| 施甸县| 漯河市| 枣阳市| 华容县| 奉化市| 开原市| 松原市| 龙泉市| 临夏县| 长治市| 平泉县| 兰溪市| 泰安市| 洛隆县|