System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現(xiàn)步驟摘要】
本專利技術涉及內(nèi)存管理,更具體地涉及一種數(shù)據(jù)庫內(nèi)存分配方法、裝置、設備。
技術介紹
1、在數(shù)據(jù)庫管理系統(tǒng)中,內(nèi)存管理是影響系統(tǒng)整體性能的關鍵因素之一,為了應對大規(guī)模數(shù)據(jù)處理需求,數(shù)據(jù)庫系統(tǒng)通常采用多線程架構來提高并發(fā)處理能力。每個線程可能需要獨立分配內(nèi)存用于查詢執(zhí)行、緩存管理、索引維護等操作,內(nèi)存管理的效率對數(shù)據(jù)管理的效率存在影響。
2、在多線程環(huán)境中,頻繁的內(nèi)存分配和釋放操作會增加內(nèi)存管理的開銷,導致內(nèi)存碎片化問題較為嚴重,系統(tǒng)無法有效利用內(nèi)存資源,且當多個線程申請內(nèi)存時,可能會出現(xiàn)資源征用和死鎖現(xiàn)象,限制系統(tǒng)的并發(fā)量和吞吐量。
技術實現(xiàn)思路
1、鑒于上述問題,本專利技術提供了數(shù)據(jù)庫內(nèi)存分配方法、裝置、設備、介質(zhì)和程序產(chǎn)品。
2、根據(jù)本專利技術的第一個方面,提供了一種數(shù)據(jù)庫內(nèi)存分配方法,上述方法應用于數(shù)據(jù)庫操作系統(tǒng),上述數(shù)據(jù)庫操作系統(tǒng)包括多個線程,每個線程分配有子內(nèi)存池,上述方法包括:在目標任務的內(nèi)存需求量小于預設分配閾值的情況下,獲取用于執(zhí)行上述目標任務的目標線程所分配的目標子內(nèi)存池,上述目標子內(nèi)存池由多個鏈表組成,每個上述鏈表包括內(nèi)存容量相同的多個內(nèi)存塊,多個上述鏈表所鏈接的內(nèi)存塊的內(nèi)存容量不同;在上述內(nèi)存需求量大于多個上述鏈表中最大內(nèi)存塊的內(nèi)存容量的情況下,從全局內(nèi)存池中獲取第一目標分配內(nèi)存塊,上述第一目標分配內(nèi)存塊的內(nèi)存容量大于或等于上述內(nèi)存需求量;從上述第一目標分配內(nèi)存塊中提取與上述內(nèi)存需求量對應的任務分配內(nèi)存塊,并將上述任務分配內(nèi)存塊分配給上述
3、根據(jù)本專利技術的實施例,上述目標子內(nèi)存池還包括表頭鏈接,上述表頭鏈接為多個鏈表表頭基于所鏈接的內(nèi)存塊的內(nèi)存容量的有序鏈接,上述方法還包括:基于上述任務分配內(nèi)存塊生成待插入鏈表表頭;基于上述任務分配內(nèi)存塊的內(nèi)存容量,將上述待插入鏈表表頭插入到上述表頭鏈接中;將上述任務分配內(nèi)存塊與上述待插入鏈表表頭進行鏈接。
4、根據(jù)本專利技術的實施例,上述鏈表表頭包括表征所鏈接的內(nèi)存塊的內(nèi)存容量的標識,上述將上述第一目標分配內(nèi)存塊的剩余內(nèi)存塊加入到上述目標子內(nèi)存池中,包括:基于上述標識從上述剩余內(nèi)存塊中確定第一分配內(nèi)存,上述第一分配內(nèi)存的內(nèi)存容量為上述目標子內(nèi)存池中與上述剩余內(nèi)存塊的內(nèi)存容量最接近的第一標識對應的內(nèi)存容量,且上述第一分配內(nèi)存的內(nèi)存容量小于或等于上述剩余內(nèi)存塊的內(nèi)存容量;基于上述剩余內(nèi)存塊和上述第一分配內(nèi)存確定第一剩余內(nèi)存塊;將上述第一分配內(nèi)存鏈接到與上述第一標識對應的鏈表中;在上述第一剩余內(nèi)存塊的內(nèi)存容量大于或等于第二標識對應的內(nèi)存容量的情況下,基于上述第二標識從上述第一剩余內(nèi)存塊中確定第二分配內(nèi)存塊;將上述第二分配內(nèi)存塊鏈接到與上述第二標識對應的鏈表中。
5、根據(jù)本專利技術的實施例,上述數(shù)據(jù)庫操作系統(tǒng)的配置信息中包括預設頁容量,上述從上述第一目標分配內(nèi)存塊中提取與上述內(nèi)存需求量對應的任務分配內(nèi)存塊分配給上述目標任務,包括:基于上述預設頁容量和上述內(nèi)存需求量從上述第一目標分配內(nèi)存塊中提取上述任務分配內(nèi)存塊,上述任務分配內(nèi)存塊的內(nèi)存容量大于或等于上述內(nèi)存需求量,且為上述預設頁容量的整數(shù)倍;將上述任務分配內(nèi)存塊分配給上述目標任務。
6、根據(jù)本專利技術的實施例,上述方法還包括:在上述內(nèi)存需求量大于上述預設分配閾值的情況下,基于上述內(nèi)存需求量從上述全局內(nèi)存池中確定第二目標分配內(nèi)存塊;將上述第二目標分配內(nèi)存塊分配給上述目標任務。
7、根據(jù)本專利技術的實施例,上述方法還包括:上述方法還包括:在上述目標任務結束后,將上述任務分配內(nèi)存塊釋放到上述目標線程的子內(nèi)存池。
8、根據(jù)本專利技術的實施例,上述方法還包括:在上述目標任務結束后,將上述第二目標分配內(nèi)存塊釋放到上述全局內(nèi)存池。
9、根據(jù)本專利技術的實施例,上述將上述任務分配內(nèi)存塊釋放到上述目標線程的子內(nèi)存池,包括:基于上述任務分配內(nèi)存塊的內(nèi)存容量確定目標鏈表;將上述任務分配內(nèi)存塊鏈接到上述目標鏈表。
10、本專利技術的第二方面提供了一種數(shù)據(jù)庫內(nèi)存分配裝置,上述裝置裝配于數(shù)據(jù)庫操作系統(tǒng),上述數(shù)據(jù)庫操作系統(tǒng)包括多個線程,每個線程分配有子內(nèi)存池,上述裝置包括:獲取模塊,用于在目標任務的內(nèi)存需求量小于預設分配閾值的情況下,獲取用于執(zhí)行上述目標任務的目標線程所分配的目標子內(nèi)存池,上述目標子內(nèi)存池由多個鏈表組成,每個上述鏈表包括內(nèi)存容量相同的多個內(nèi)存塊,多個上述鏈表所鏈接的內(nèi)存塊的內(nèi)存容量不同;第一目標分配內(nèi)存塊獲取模塊,用于在上述內(nèi)存需求量大于多個上述鏈表中最大內(nèi)存塊的內(nèi)存容量的情況下,從全局內(nèi)存池中獲取第一目標分配內(nèi)存塊,上述第一目標分配內(nèi)存塊的內(nèi)存容量大于或等于上述內(nèi)存需求量;提取模塊,用于從上述第一目標分配內(nèi)存塊中提取與上述內(nèi)存需求量對應的任務分配內(nèi)存塊,并將上述任務分配內(nèi)存塊分配給上述目標任務;鏈表加入模塊,用于將上述第一目標分配內(nèi)存塊的剩余內(nèi)存塊加入到上述目標子內(nèi)存池中。
11、根據(jù)本專利技術的實施例,上述目標子內(nèi)存池還包括表頭鏈接,上述表頭鏈接為多個鏈表表頭基于所鏈接的內(nèi)存塊的內(nèi)存容量的有序鏈接,上述裝置還包括:表頭生成模塊,用于基于上述任務分配內(nèi)存塊生成待插入鏈表表頭;插入模塊,用于基于上述任務分配內(nèi)存塊的內(nèi)存容量,將上述待插入鏈表表頭插入到上述表頭鏈接中;鏈接模塊,用于將上述任務分配內(nèi)存塊與上述待插入鏈表表頭進行鏈接。
12、根據(jù)本專利技術的實施例,上述鏈表表頭包括表征所鏈接的內(nèi)存塊的內(nèi)存容量的標識,上述鏈表加入模塊包括:第一分配內(nèi)存確定子模塊,用于基于上述標識從上述剩余內(nèi)存塊中確定第一分配內(nèi)存,上述第一分配內(nèi)存的內(nèi)存容量為上述目標子內(nèi)存池中與上述剩余內(nèi)存塊的內(nèi)存容量最接近的第一標識對應的內(nèi)存容量,且上述第一分配內(nèi)存的內(nèi)存容量小于或等于上述剩余內(nèi)存塊的內(nèi)存容量;第一剩余內(nèi)存塊確定子模塊,用于基于上述剩余內(nèi)存塊和上述第一分配內(nèi)存確定第一剩余內(nèi)存塊;第一分配內(nèi)存鏈接子模塊,用于將上述第一分配內(nèi)存鏈接到與第一標識對應的鏈表中;第二分配內(nèi)存塊確定子模塊,用于在上述第一剩余內(nèi)存塊的內(nèi)存容量大于等于第二標識對應的內(nèi)存容量的情況下,基于第二標識從上述第一剩余內(nèi)存塊中確定第二分配內(nèi)存塊;第二鏈接子模塊,用于將上述第二分配內(nèi)存塊鏈接到與上述第二標識對應的鏈表中。
13、根據(jù)本專利技術的實施例,上述數(shù)據(jù)庫操作系統(tǒng)的配置信息中還包括預設頁容量,上述提取模塊包括:任務分配內(nèi)存塊提取子模塊,用于基于上述預設頁容量和上述內(nèi)存需求量從上述第一目標分配內(nèi)存塊中提取上述任務分配內(nèi)存塊,上述任務分配內(nèi)存塊的內(nèi)存容量大于或等于上述內(nèi)存需求量,且為上述預設頁容量的整數(shù)倍;分配子模塊,用于將上述任務分配內(nèi)存塊分配給上述目標任務。
14、根據(jù)本專利技術的實施例,上述裝置還包括:第二目標分配內(nèi)存塊確定模塊,用于在上述內(nèi)存需求量大于上述預設分配閾值的情況下,基于上述內(nèi)存需求量從上述全局內(nèi)存池中確定第二目標分配內(nèi)存塊;第二分配模塊,用于將上述第二目標分配內(nèi)存塊分配給上述目標任務。本文檔來自技高網(wǎng)...
【技術保護點】
1.一種數(shù)據(jù)庫內(nèi)存分配方法,其特征在于,所述方法應用于數(shù)據(jù)庫操作系統(tǒng),所述數(shù)據(jù)庫操作系統(tǒng)包括多個線程,每個線程分配有子內(nèi)存池,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述目標子內(nèi)存池還包括表頭鏈接,所述表頭鏈接為多個鏈表表頭基于所鏈接的內(nèi)存塊的內(nèi)存容量的有序鏈接,所述方法還包括:
3.根據(jù)權利要求2所述的方法,其特征在于,所述鏈表表頭包括表征所鏈接的內(nèi)存塊的內(nèi)存容量的標識,所述將所述第一目標分配內(nèi)存塊的剩余內(nèi)存塊加入到所述目標子內(nèi)存池中,包括:
4.根據(jù)權利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫操作系統(tǒng)的配置信息中包括預設頁容量,所述從所述第一目標分配內(nèi)存塊中提取與所述內(nèi)存需求量對應的任務分配內(nèi)存塊分配給所述目標任務,包括:
5.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權利要求5所述的方法,其特征在于,所述方法還包括:
8.根據(jù)權利要求6所述的方法,其特征在于,所述將所述任務分配內(nèi)存塊釋放到所述
9.一種數(shù)據(jù)庫內(nèi)存分配裝置,其特征在于,所述裝置裝配于數(shù)據(jù)庫操作系統(tǒng),所述數(shù)據(jù)庫操作系統(tǒng)包括多個線程,每個線程分配有子內(nèi)存池,所述裝置包括:
10.一種電子設備,包括:
...【技術特征摘要】
1.一種數(shù)據(jù)庫內(nèi)存分配方法,其特征在于,所述方法應用于數(shù)據(jù)庫操作系統(tǒng),所述數(shù)據(jù)庫操作系統(tǒng)包括多個線程,每個線程分配有子內(nèi)存池,所述方法包括:
2.根據(jù)權利要求1所述的方法,其特征在于,所述目標子內(nèi)存池還包括表頭鏈接,所述表頭鏈接為多個鏈表表頭基于所鏈接的內(nèi)存塊的內(nèi)存容量的有序鏈接,所述方法還包括:
3.根據(jù)權利要求2所述的方法,其特征在于,所述鏈表表頭包括表征所鏈接的內(nèi)存塊的內(nèi)存容量的標識,所述將所述第一目標分配內(nèi)存塊的剩余內(nèi)存塊加入到所述目標子內(nèi)存池中,包括:
4.根據(jù)權利要求1所述的方法,其特征在于,所述數(shù)據(jù)庫操作系統(tǒng)的配置信息中包括預設頁容量,所述從所述第一目...
【專利技術屬性】
技術研發(fā)人員:高華祥,
申請(專利權)人:天津南大通用數(shù)據(jù)技術股份有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。