CN117608473A - 一种内存b+树存储空间优化方法 - Google Patents
一种内存b+树存储空间优化方法 Download PDFInfo
- Publication number
- CN117608473A CN117608473A CN202311558090.1A CN202311558090A CN117608473A CN 117608473 A CN117608473 A CN 117608473A CN 202311558090 A CN202311558090 A CN 202311558090A CN 117608473 A CN117608473 A CN 117608473A
- Authority
- CN
- China
- Prior art keywords
- tree
- record
- node
- key value
- leaf node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000005457 optimization Methods 0.000 title claims abstract description 15
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种内存B+树存储空间优化方法。本方法针对字符串类型的key值,当内存中构建B+树时,B+树的中间节点不存储key值,只存储其孩子节点的地址,需访问中间节点key值时,将最左边叶子节点的第一个key值作为该中间节点记录的key值。本方案可显著减少内存空间的占用,假设B+树的深度为N,树的阶数为M,key的平均长度为L,则可以节省的内存空间为:(M^(N‑1))*L,假设B+树为128阶,树的深度为4,字符串平均长度为256,则可节省空间68719476736,约512MB,随着B+树的规模增大,节省空间越多。
Description
技术领域
本发明属于内存B+树构建方法技术领域,尤其涉及一种内存B+树存储空间优化方法。
背景技术
B+树在内存中的结构如图1所示,每个节点存储了多个key,例如图1中每个节点存储了2个key,实际上非叶子节点的key值等于其孩子节点的第一个key值,所以中间节点存储的key值和其孩子节点的第一个key值相同,因此存在冗余。当key值类型是数字类型时,这种冗余影响不大,但是当key值类型是变长字符串时,则同一个字符串会在内存中存储多次,随着数据的阶数和深度的增加,重复key值占用的内存空间会越来越大,从而造成了严重的内存资源浪费。
发明内容
为了解决B+树在内存中重复key值存储占用大量内存空间的问题,本发明提出了一种新的内存B+树存储空间优化方法。
总体而言,本发明内存B+树存储空间优化方法的设计构思是当内存中加载B+树时,中间节点不存储key值,查询操作时,将最左边叶子节点的第一个key值作为该中间节点记录的key值。
具体地,本发明提供了一种内存B+树存储空间优化方法,本方法包括:针对字符串类型的key值,当内存中构建B+树时,B+树的中间节点不存储key值,只存储其孩子节点的地址,需访问中间节点key值时,将最左边叶子节点的第一个key值作为该中间节点记录的key值。
进一步地,当利用本发明内存B+树存储空间优化方法对B+树中的记录进行查询时,包括以下步骤:
S11.遍历B+树的第一层,对该层的所有记录根据key值进行二分查找;
S12.根据B+树第一层查找所得的孩子节点,对该孩子节点继续进行二分查找;
S13.循环直到B+树最底层的叶子节点,在该叶子节点上进行二分查找,看是否有与待查找的key值相同的记录,如果有,则返回该key值,如果没有,则返回失败。
进一步地,上述内存B+树存储空间优化方法步骤S11中所述的遍历B+树的第一层,对该层的所有记录根据key值进行二分查找,对于每条记录,获取该条记录key值的方式是:递归向下遍历其最左边的孩子节点的第一条记录,取出其key值与待查找的key值进行比较,直到找到key值相同的叶子节点为止,从该叶子节点上取出记录的key值作为返回值。
进一步地,当利用本发明内存B+树存储空间优化方法向B+树中插入新记录时,包括以下步骤:
S21.根据权利要求2所述的方法查找新插入key在B+树上某个叶子节点的插入位置;
S22.如果该叶子节点上已有记录的数量小于B+树的阶数,则直接在该叶子节点相应位置新增一条记录,该叶子节点的父节点不需要发生任何变化;
S23.如果该叶子节点上已有记录的数量等于B+树的阶数,此时该叶子节点发生分裂,在该叶子节点的父节点上增加一条记录,父节点上新增的记录不保存新增孩子节点上最小的key值,而是直接记录新增孩子节点的地址;最后将新记录插入到新增的叶子节点上。
进一步地,当利用本发明内存B+树存储空间优化方法删除B+树中的记录时,包括以下步骤:
S31.根据权利要求2所述的方法查找待删除key在B+树上某个叶子节点的位置;
S32.如果该叶子节点上的记录的数量大于1,则直接删除该叶子节点上需要删除的记录,并将被删除记录后面的记录向前移动一个位置,不需要修改其父节点;
S33.当待删除记录所在叶子节点只有一条记录时,在删除该记录后,释放其所在叶子节点,并将其父节点上的相应记录删除。
另外,本发明还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述的内存B+树存储空间优化方法的步骤。
综上,当在内存中构建key值为字符串类型的B+树时,通过本发明内存B+树存储空间优化方法虽然访问中间节点key值时需查找最左边叶子节点的第一个key值,但由于内存访问速度快,因此对性能影响很小;相比而言,本方案可显著减少内存空间的占用,假设B+树的深度为N,树的阶数为M,key的平均长度为L,则可以节省的内存空间为:(M^(N-1))*L,假设B+树为128阶,树的深度为4,字符串平均长度为256,则可节省空间68719476736,约512MB,随着B+树的规模增大,节省空间越多。
附图说明
为了更清楚地说明背景技术和本发明技术方案,下面对本发明叙述中需要使用的附图作简要介绍,显而易见地,下述附图仅是本发明中记载的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中B+树在内存中的结构示意图。
图2为本发明方法的记录查询流程图。
图3为本发明方法中内存B+树记录的查询过程的结构示意图。
图4为本发明方法中内存B+树插入新记录过程的结构示意图。
图5为本发明方法中内存B+树删除记录过程的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例,本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
同时,应理解,本发明的保护范围并不局限于下述特定的具体实施方案;还应当理解,本发明实施例中使用的术语是为了描述特定的具体实施方案,而不是为了限制本发明的保护范围。
实施例:一种内存B+树存储空间优化方法
当key值为字符串类型,B+树的中间节点不再存储key值,只存储其孩子节点的地址;其会对B+树的查询、插入、删除带来如下变化:
1.查询一条记录(参见图2和图3)
1.1遍历B+树的第一层,对该层的所有记录,根据key值进行二分查找,但是当前每条记录的key值不存在于中间节点上(中间节点不再存储key值),对于每条记录,获取该条记录key值的方式是:递归向下遍历其最左边的孩子节点的第一条记录,取出其key值与待查找的key值进行比较,直到找到key值相同的叶子节点为止,从该叶子节点上取出记录的key值作为返回值。
1.2根据B+树第一层查找所得的孩子节点,对该孩子节点继续进行二分查找,查找流程同上步。
1.3循环直到B+树的最底层的叶子节点,在该叶子节点上进行二分查找,看是否有与待查找的key值相同的记录,如果有,则返回该key值,如果没有,则返回失败。
2.插入一条新记录(参见图4)
2.1首先根据步骤1查找新插入key在B+树上某个叶子节点的插入位置。
2.2如果叶子节点上已有记录数量小于B+树的阶数,则直接在该叶子节点相应位置上新增一条记录,父节点不需要发生任何变化。
2.3如果叶子节点上已有记录数量等于B+树的阶数,此时该叶子节点引起分裂,则需要在父节点上增加一条记录,父节点上新增的记录不会保存新增孩子节点上最小的key值,而是直接记录孩子节点的地址;然后将新记录插入到新增的叶子节点上。
3.删除一条记录(参见图5)
3.1首先根据步骤1查找待删除key在B+树上某个叶子节点的位置。
3.2因为记录只会存在于B+树的叶子节点上,如果该叶子节点上的记录数量大于1,则直接删除该叶子节点上需要删除的记录,将被删除记录后面的记录向前移动一个位置,不需要修改其父节点。
3.3当待删除记录所在叶子节点只有一条记录时,在删除该记录后,需要释放其所在叶子节点,并将其父节点上的相应记录删除。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰获得等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均应包含在本发明的权利要求保护范围之内。
Claims (6)
1.一种内存B+树存储空间优化方法,其特征在于,所述方法包括:针对字符串类型的key值,当内存中构建B+树时,B+树的中间节点不存储key值,只存储其孩子节点的地址,需访问中间节点key值时,将最左边叶子节点的第一个key值作为该中间节点记录的key值。
2.根据权利要求1所述的内存B+树存储空间优化方法,其特征在于,当利用所述方法对B+树中的记录进行查询时,包括以下步骤:
S11.遍历B+树的第一层,对该层的所有记录根据key值进行二分查找;
S12.根据B+树第一层查找所得的孩子节点,对该孩子节点继续进行二分查找;
S13.循环直到B+树最底层的叶子节点,在该叶子节点上进行二分查找,看是否有与待查找的key值相同的记录,如果有,则返回该key值,如果没有,则返回失败。
3.根据权利要求2所述的内存B+树存储空间优化方法,其特征在于,步骤S11中所述的遍历B+树的第一层,对该层的所有记录根据key值进行二分查找,对于每条记录,获取该条记录key值的方式是:递归向下遍历其最左边的孩子节点的第一条记录,取出其key值与待查找的key值进行比较,直到找到key值相同的叶子节点为止,从该叶子节点上取出记录的key值作为返回值。
4.根据权利要求1所述的内存B+树存储空间优化方法,其特征在于,当利用所述方法向B+树中插入新记录时,包括以下步骤:
S21.根据权利要求2所述的方法查找新插入key在B+树上某个叶子节点的插入位置;
S22.如果该叶子节点上已有记录的数量小于B+树的阶数,则直接在该叶子节点相应位置新增一条记录,该叶子节点的父节点不需要发生任何变化;
S23.如果该叶子节点上已有记录的数量等于B+树的阶数,此时该叶子节点发生分裂,在该叶子节点的父节点上增加一条记录,父节点上新增的记录不保存新增孩子节点上最小的key值,而是直接记录新增孩子节点的地址;最后将新记录插入到新增的叶子节点上。
5.根据权利要求1所述的内存B+树存储空间优化方法,其特征在于,当利用所述方法删除B+树中的记录时,包括以下步骤:
S31.根据权利要求2所述的方法查找待删除key在B+树上某个叶子节点的位置;
S32.如果该叶子节点上的记录的数量大于1,则直接删除该叶子节点上需要删除的记录,并将被删除记录后面的记录向前移动一个位置,不需要修改其父节点;
S33.当待删除记录所在叶子节点只有一条记录时,在删除该记录后,释放其所在叶子节点,并将其父节点上的相应记录删除。
6.一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现权利要求1-5任一项所述的内存B+树存储空间优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558090.1A CN117608473A (zh) | 2023-11-22 | 2023-11-22 | 一种内存b+树存储空间优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558090.1A CN117608473A (zh) | 2023-11-22 | 2023-11-22 | 一种内存b+树存储空间优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608473A true CN117608473A (zh) | 2024-02-27 |
Family
ID=89947260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311558090.1A Pending CN117608473A (zh) | 2023-11-22 | 2023-11-22 | 一种内存b+树存储空间优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608473A (zh) |
-
2023
- 2023-11-22 CN CN202311558090.1A patent/CN117608473A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN109683811B (zh) | 一种混合内存键值对存储系统的请求处理方法 | |
US10922288B2 (en) | Method for storing data elements in a database | |
CN105117415A (zh) | 一种优化的ssd数据更新方法 | |
CN103595797B (zh) | 一种分布式存储系统中的缓存方法 | |
CN113821171B (zh) | 一种基于哈希表与lsm树的键值存储方法 | |
WO2018205151A1 (zh) | 数据更新方法和存储装置 | |
CN105912687A (zh) | 海量分布式数据库存储单元 | |
US20140324875A1 (en) | Index for fast batch updates of large data tables | |
CN109299143B (zh) | 基于Redis缓存的数据互操作测试知识库的知识快速索引方法 | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
CN116701440A (zh) | 一种布谷鸟过滤器及数据插入、查询、删除方法 | |
KR102057055B1 (ko) | 인덱스 관리 방법 | |
CN117608473A (zh) | 一种内存b+树存储空间优化方法 | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
CN112527196B (zh) | Cache读写方法、装置、计算机可读存储介质及电子设备 | |
CN115203211A (zh) | 一种唯一哈希序号生成方法和系统 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN109325023B (zh) | 一种数据处理方法及装置 | |
CN1235169C (zh) | 一种嵌入式系统的数据存放及其查找方法 | |
CN112463837B (zh) | 一种关系型数据库数据存储查询方法 | |
CN113688130B (zh) | 一种内存数据库存储引擎管理方法 | |
KR102404174B1 (ko) | 비관계형 데이터베이스 관리 시스템의 메모리 자료구조, 노드를 삽입하는 방법 및 범위 질의를 처리하는 방법 | |
CN117349477A (zh) | 一种基于持久化内存的图数据异构分层存储结构及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |