本發(fā)明涉及數(shù)據(jù)庫(kù)管理系統(tǒng),尤其涉及一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng)。
背景技術(shù):
1、在數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)中,內(nèi)存管理是一個(gè)關(guān)鍵問題,直接影響系統(tǒng)的性能和穩(wěn)定性。隨著數(shù)據(jù)庫(kù)系統(tǒng)的復(fù)雜性增加,需要高效地跟蹤和管理內(nèi)存資源,以平衡效率和功能。
2、然而,現(xiàn)有技術(shù)方案各自存在不足:
3、1、直接使用系統(tǒng)原生的內(nèi)存分配機(jī)制進(jìn)行內(nèi)存的申請(qǐng)和釋放。這種方式不能對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)存使用進(jìn)行細(xì)粒度的跟蹤,且因?yàn)闆]有額度管理,不能防止內(nèi)存被數(shù)據(jù)庫(kù)系統(tǒng)用完導(dǎo)致的數(shù)據(jù)庫(kù)服務(wù)進(jìn)程被殺的情況發(fā)生。
4、2、通過單個(gè)內(nèi)存管理器對(duì)內(nèi)存需求量較大的模塊(比如執(zhí)行層算子等)專門進(jìn)行管理。這種方式不能監(jiān)控到數(shù)據(jù)庫(kù)管理系統(tǒng)所有使用的內(nèi)存,缺乏全局視角,同時(shí)在多線程情況下,單個(gè)內(nèi)存管理器可能成為性能瓶頸。
5、3、通過定時(shí)器的方式,每隔一定時(shí)間查詢使用的內(nèi)存狀態(tài),并在數(shù)據(jù)庫(kù)系統(tǒng)執(zhí)行查詢的過程中,通過插入內(nèi)存檢查點(diǎn)的方式來防止數(shù)據(jù)庫(kù)服務(wù)進(jìn)程的內(nèi)存超過額定用量。這種方式由于是一種定期檢測(cè)機(jī)制,存在一定的時(shí)間延遲,不能做到實(shí)時(shí)的內(nèi)存使用量監(jiān)控,同時(shí)也不能做到查詢/算子粒度的內(nèi)存管理。
6、綜上所述,現(xiàn)有的內(nèi)存管理方法普遍面臨以下挑戰(zhàn):缺乏對(duì)不同組件內(nèi)存使用的精細(xì)跟蹤,難以實(shí)現(xiàn)準(zhǔn)確的內(nèi)存配額管理和詳細(xì)的內(nèi)存分析,導(dǎo)致內(nèi)存資源分配不合理,可能出現(xiàn)某些組件過度占用內(nèi)存而其他組件內(nèi)存不足的情況;在多線程環(huán)境下,內(nèi)存使用的統(tǒng)計(jì)和更新可能造成線程安全問題,影響系統(tǒng)的穩(wěn)定性;不能兼顧從全局到數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部細(xì)粒度的內(nèi)存額度管理。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于提供一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),以解決現(xiàn)有技術(shù)中的內(nèi)存管理方法既無法對(duì)各組件內(nèi)存使用進(jìn)行精細(xì)跟蹤,也不能確保多線程安全,同時(shí)還不能兼顧從全局到數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部細(xì)粒度的內(nèi)存額度管理的問題。
2、為實(shí)現(xiàn)上述目的,本申請(qǐng)采用以下技術(shù)方案:
3、本申請(qǐng)的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),包括:
4、分層內(nèi)存追蹤器模塊,采用樹狀層級(jí)架構(gòu)組織多級(jí)內(nèi)存追蹤器,其中各層級(jí)內(nèi)存追蹤器均內(nèi)置預(yù)留機(jī)制,用于根據(jù)層級(jí)化預(yù)留信息實(shí)施內(nèi)存資源的彈性調(diào)配;
5、內(nèi)存使用定義模塊,用于根據(jù)線程場(chǎng)景特征生成差異化內(nèi)存監(jiān)測(cè)指標(biāo),包含單線程場(chǎng)景下的算子級(jí)細(xì)粒度監(jiān)測(cè)指標(biāo)和多線程場(chǎng)景下的全局監(jiān)測(cè)指標(biāo);
6、混合內(nèi)存分配器模塊,集成所述分層內(nèi)存追蹤器模塊的層級(jí)監(jiān)測(cè)邏輯,用于實(shí)時(shí)獲取內(nèi)存狀態(tài),并根據(jù)所述層級(jí)化預(yù)留信息動(dòng)態(tài)執(zhí)行內(nèi)存分配與回收操作。
7、作為優(yōu)選,所述分層內(nèi)存追蹤器模塊包括:
8、全局內(nèi)存追蹤器,作為根節(jié)點(diǎn),管理全局的內(nèi)存限制及使用情況,當(dāng)內(nèi)存總使用量超過全局內(nèi)存限制時(shí)觸發(fā)內(nèi)存分配異常;
9、查詢內(nèi)存追蹤器,作為子節(jié)點(diǎn)掛載于所述全局內(nèi)存追蹤器下,具有可配置的最大預(yù)留內(nèi)存及可選的最大可使用內(nèi)存限制,并支持從父級(jí)動(dòng)態(tài)申請(qǐng)內(nèi)存;
10、算子內(nèi)存追蹤器,作為查詢內(nèi)存追蹤器的子節(jié)點(diǎn),可配置較小的最大預(yù)留內(nèi)存,采用多級(jí)父級(jí)申請(qǐng)機(jī)制獲取內(nèi)存資源;
11、網(wǎng)絡(luò)內(nèi)存追蹤器,作為子節(jié)點(diǎn)掛載于所述全局內(nèi)存追蹤器下,用于遠(yuǎn)程過程調(diào)用的內(nèi)存管理,可獨(dú)立配置最大預(yù)留內(nèi)存及最大可使用內(nèi)存限制,并支持從父級(jí)動(dòng)態(tài)申請(qǐng)內(nèi)存。
12、作為優(yōu)選,所述查詢內(nèi)存追蹤器的最大可使用內(nèi)存限制可通過會(huì)話配置或查詢參數(shù)動(dòng)態(tài)調(diào)整,當(dāng)子級(jí)追蹤器累計(jì)申請(qǐng)量超過所述最大可使用限制時(shí)觸發(fā)級(jí)聯(lián)內(nèi)存釋放。
13、作為優(yōu)選,所述預(yù)留機(jī)制包括:
14、進(jìn)行內(nèi)存分配時(shí),子級(jí)追蹤器優(yōu)先使用本地預(yù)留內(nèi)存,當(dāng)本地預(yù)留內(nèi)存不足時(shí)向其父級(jí)申請(qǐng)最大預(yù)留內(nèi)存塊;
15、進(jìn)行內(nèi)存釋放時(shí),子級(jí)追蹤器優(yōu)先判斷本地預(yù)留內(nèi)存與內(nèi)存釋放量的和是否超過本地最大預(yù)留內(nèi)存,若超過,則向其父級(jí)返回最大預(yù)留內(nèi)存塊。
16、作為優(yōu)選,所述預(yù)留機(jī)制還包括在不同層級(jí)設(shè)置差異化預(yù)留粒度,平衡申請(qǐng)效率與監(jiān)控精度。
17、作為優(yōu)選,預(yù)留申請(qǐng)采用批量預(yù)分配策略,算子級(jí)追蹤器單次申請(qǐng)量為其最大預(yù)留內(nèi)存值。
18、作為優(yōu)選,所述單線程場(chǎng)景下的算子級(jí)細(xì)粒度監(jiān)測(cè)指標(biāo)包括當(dāng)前內(nèi)存量、歷史峰值、累計(jì)分配/釋放量及分配尺寸直方圖分布;
19、所述多線程場(chǎng)景下的全局監(jiān)測(cè)指標(biāo)包括原子化當(dāng)前內(nèi)存量和歷史峰值,支持并發(fā)環(huán)境下的線程安全。
20、作為優(yōu)選,所述混合內(nèi)存分配器模塊包括:
21、通用內(nèi)存分配器,用于在內(nèi)存分配和釋放操作中注入追蹤邏輯,并記錄內(nèi)存使用狀態(tài);
22、stl專用內(nèi)存分配器,用于通過模板特化技術(shù)適配標(biāo)準(zhǔn)容器,并在容器內(nèi)存操作中注入定制化追蹤邏輯。
23、作為優(yōu)選,所述系統(tǒng)還包括調(diào)試模塊,用于判斷內(nèi)存使用情況是否符合預(yù)期。
24、作為優(yōu)選,所述系統(tǒng)還包括基準(zhǔn)測(cè)試模塊,用于根據(jù)測(cè)試用例對(duì)內(nèi)存分配和釋放操作進(jìn)行計(jì)時(shí)和計(jì)數(shù)以確定系統(tǒng)性能。
25、本發(fā)明具有如下有益效果:
26、通過分層內(nèi)存追蹤器和預(yù)留機(jī)制,減少了父級(jí)內(nèi)存追蹤器的使用計(jì)數(shù)器成為瓶頸的可能性,提高了內(nèi)存分配和釋放的效率;還在多線程場(chǎng)景下,通過使用原子計(jì)數(shù)器保證了內(nèi)存使用統(tǒng)計(jì)并發(fā)場(chǎng)景下的線程安全。
1.一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述分層內(nèi)存追蹤器模塊包括:
3.根據(jù)權(quán)利要求2所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述查詢內(nèi)存追蹤器的最大可使用內(nèi)存限制可通過會(huì)話配置或查詢參數(shù)動(dòng)態(tài)調(diào)整,當(dāng)子級(jí)追蹤器累計(jì)申請(qǐng)量超過所述最大可使用限制時(shí)觸發(fā)級(jí)聯(lián)內(nèi)存釋放。
4.根據(jù)權(quán)利要求2所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述預(yù)留機(jī)制包括:
5.根據(jù)權(quán)利要求4所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述預(yù)留機(jī)制還包括在不同層級(jí)設(shè)置差異化預(yù)留粒度,平衡申請(qǐng)效率與監(jiān)控精度。
6.根據(jù)權(quán)利要求5所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,預(yù)留申請(qǐng)采用批量預(yù)分配策略,算子級(jí)追蹤器單次申請(qǐng)量為其最大預(yù)留內(nèi)存值。
7.根據(jù)權(quán)利要求1所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述單線程場(chǎng)景下的算子級(jí)細(xì)粒度監(jiān)測(cè)指標(biāo)包括當(dāng)前內(nèi)存量、歷史峰值、累計(jì)分配/釋放量及分配尺寸直方圖分布;
8.根據(jù)權(quán)利要求1所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述混合內(nèi)存分配器模塊包括:
9.根據(jù)權(quán)利要求1所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述系統(tǒng)還包括調(diào)試模塊,用于判斷內(nèi)存使用情況是否符合預(yù)期。
10.根據(jù)權(quán)利要求1所述的一種基于分層的圖數(shù)據(jù)庫(kù)內(nèi)存管理系統(tǒng),其特征在于,所述系統(tǒng)還包括基準(zhǔn)測(cè)試模塊,用于根據(jù)測(cè)試用例對(duì)內(nèi)存分配和釋放操作進(jìn)行計(jì)時(shí)和計(jì)數(shù)以確定系統(tǒng)性能。