CN111198660A - 一种b+树遍历的方法及装置 - Google Patents

一种b+树遍历的方法及装置 Download PDF

Info

Publication number
CN111198660A
CN111198660A CN201911371660.XA CN201911371660A CN111198660A CN 111198660 A CN111198660 A CN 111198660A CN 201911371660 A CN201911371660 A CN 201911371660A CN 111198660 A CN111198660 A CN 111198660A
Authority
CN
China
Prior art keywords
node
lock
leaf
bkey
added
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
Application number
CN201911371660.XA
Other languages
English (en)
Inventor
石胜男
王云飞
沈海嘉
郭照斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Zhongke Shuguang Storage Technology Co Ltd
Original Assignee
Tianjin Zhongke Shuguang Storage Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Zhongke Shuguang Storage Technology Co Ltd filed Critical Tianjin Zhongke Shuguang Storage Technology Co Ltd
Priority to CN201911371660.XA priority Critical patent/CN111198660A/zh
Publication of CN111198660A publication Critical patent/CN111198660A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种B+树遍历的方法,包括在读请求过程中,给某一节点加读锁时,并给其父节点解锁;在写请求过程中,给某一节点加写锁时,并给其父节点解锁。本发明对传统B+树遍历机制进行改进,通过及时归还父节点的锁,解决了在IO并发量急剧增加的时候,由于非叶子节点持锁时间长导致的性能下降的问题;通过控制持锁区间,降低了由于不必要的持锁时间导致的开销;有助于提高bcache的IO并发处理能力。

Description

一种B+树遍历的方法及装置
技术领域
本发明涉及计算机处理技术领域,具体而言,为一种B+树遍历的方法及装置。
背景技术
bcache是linux内核块设备层cache(缓存),它使用类似SSD(固态硬盘)来作为HDD(机械硬盘)硬盘的cache,从而起到加速的作用。如图1所示的是linux Kernel v4.16.12里的bcache版本,SSD盘sdb为sdc系列后端HDD低速磁盘提供bcache服务。bcache将随机写转化为顺序写,它将SSD看做是缓存设备,首先将IO数据写到SSD上,然后通过bcache内部特有的回刷机制,将这些缓存数据有序的写到磁盘或者阵列上,从而获得更高的随机写性能。
bcache是用B+树来管理缓存数据与HDD上数据块的对应关系的。B+树索引的k-v(key-value,键-值)结构在bcache中称为bkey。如图2所示,bcache会将系统中的多块HDD空间编址为一个地址空间。以HDD盘的id(编号)与IO请求的LBA(Logical Block Address,逻辑区地址)为索引建立B+树,叶子节点中存放的是实际的映射。根据这些bkey可以找到缓存数据以及在HDD设备上的位置。
IO的写流程,会先将IO数据写到SSD盘,并根据这笔IO请求的HDD盘的id和LBA地址(HDD offset)、长度(HDD length),以及写入的SSD盘的地址(SSD offset)生成一个bkey,插入到这棵B+树中。IO的读流程,就是将请求的HDD盘的id和LBA地址,作为查询条件去B+树上检索,根据检索到的bkey,找到SSD盘的地址(SSD offset),从而根据这个地址,从SSD盘读取上来相应的缓存数据,返回给请求发起者,如果未从B+树上检索到数据,那么bcache就会从HDD盘读上来相应的数据,同时将其缓存到SSD盘上,将对应的bkey插入到B+树上,便于下次查找命中。可以看出,这棵B+树访问效率对整个系统的性能起着至关重要的作用;它就相当于一个小型的数据库,是整个bcache的核心。
所有的IO请求都会访问B+树,B+树作为公共的资源,使用了读写锁来确保数据访问的一致性。以读请求举例,假设是一个三层结构的B+树(图3-1),要查找的数据对应的bkey在3204中,通过遍历B+树查找到3204中的某个bkey的过程如图3-2所示。
遍历B+树的步骤如下:
(1)根节点3001加读锁;
(2)遍历3001里面的bkey,找到3102;
(3)给3102加读锁;
(4)遍历3102里面的bkey,找到3204;
(5)给3204加读锁;
(6)遍历3204里面的bkey,查找匹配数据;
(7)给3204解锁;
(8)给3102解锁;
(9)给3001解锁;
(10)结束。
由此可以看出根节点3001的加锁时间占据了整个查找过程。B+树用的是读写锁,B+树的访问者分读者和写者,IO的读请求,要对B+树进行读访问,需要获取到读锁;IO的写请求,需要插入bkey,对B+树进行修改,这个时候需要获取到写锁。读写锁的原理是,当读写锁是加写锁状态时,在写锁释放之前,所有的读或写请求都会被阻塞;当读写锁是加读锁状态时,所有试图获取读锁的请求都可以或取到读锁,但是写请求拿不到锁,必须等所有的读者都释放读锁时,才可以拿到写锁。当读写锁处于读模式时,此时如有一个线程试图以写模式或得该锁时,读写锁会拒绝后续的读请求,这样可以避免读者长期占用锁,而等待的写锁请求得不到满足。按照现有的B+树的遍历机制,可以推测,当IO读写请求压力增大的时候,不必要的持锁区间必然导致性能下降。
有鉴于此,特提出本发明。
发明内容
针对现有技术中的缺陷,本发明提供一种B+树遍历的方法和装置,以利于提高bcache的IO并行处理能力。
为了实现上述目的,本发明的技术方案为:
一种B+树遍历的方法,包括
在读请求过程中,给某一节点加读锁时,并给其父节点解锁;
在写请求过程中,给某一节点加写锁时,并给其父节点解锁。
优选的,上述的B+树遍历的方法中,所述“在读请求过程中,给某一节点加读锁时,给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,并给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加读锁时,并给该叶子节点的父节点解锁;
在叶子节点中查找匹配的数据;
给叶子节点解锁;
结束。
优选的,上述的B+树遍历的方法中,所述“在写请求过程中,给某一节点加读锁时,并给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加写锁时,给该叶子节点的父节点解锁;
在叶子节点中插入新增bkey;
给叶子节点解锁;
结束。
优选的,上述的B+树遍历的方法中,当所述在叶子节点中插入新增bkey时该节点中bkey已满,则进行节点分裂;任一节点分裂时,该节点下新增节点的bkey插入到该节点的上级节点中;且给任一节点加写锁时,并给上级节点解锁。
一种B+树遍历的装置,包括处理器和存储器,存储器中存储有程序,程序被处理器运行时,执行:
在读请求过程中,给某一节点加读锁时,并给其父节点解锁;
在写请求过程中,给某一节点加写锁时,并给其父节点解锁。
优选的,上述的B+树遍历的装置中,程序执行所述“在读请求过程中,给某一节点加读锁时,给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,并给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加读锁时,并给该叶子节点的父节点解锁;
在叶子节点中查找匹配的数据;
给叶子节点解锁;
结束。
优选的,上述的B+树遍历的装置中,程序执行所述“在写请求过程中,给某一节点加读锁时,并给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加写锁时,给该叶子节点的父节点解锁;
在叶子节点中插入新增bkey;
给叶子节点解锁;
结束。
优选的,上述的B+树遍历的装置中,当所述在叶子节点中插入新增bkey时该节点中bkey已满,则进行节点分裂;任一节点分裂时,该节点下新增节点的bkey插入到该节点的上级节点中;且给任一节点加写锁时,并给上级节点解锁。
本发明的有益效果为:
本发明方法对传统B+树遍历机制进行改进,通过及时归还父节点的锁,解决了在IO并发量急剧增加的时候,由于非叶子节点持锁时间长导致的性能下降的问题;通过控制持锁区间,降低了由于不必要的持锁时间导致的开销;有助于提高bcache的IO并发处理能力。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为传统技术中bcache服务机制示意图;
图2为传统技术中B+树管理缓存数据与HDD上数据块的对应关系示意图;
图3中3-1为传统技术一个实施例中B+树结构;3-2为遍历图3-1中B+树查找数据的流程图;
图4中:4-1为本发明方法的一个具体实施例的B+树结构;
4-2为图4-1所示B+树的遍历查找流程图;
4-3为图4-1所示B+树的插入流程图;
4-4为图4-1所示B+树的节点分裂示意图;
4-5为读流程加解锁顺序示意图;
4-6为分裂流程的加解锁顺序示意图;
图5为本发明系统一个具体实施例中对B+树的插入流程与查找流程示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
实施例1
一种B+树遍历的方法,对传统的遍历机制进行改进,主要包括
S1.在读请求过程中,给某一节点加读锁时,给其父节点解锁;
S2.在写请求过程中,给某一节点加写锁时,给其父节点解锁。
为了提高bcache的IO并行处理能力,本发明方法中对B+树的遍历机制进行了优化,降低读写锁的粒度,因为只有叶子节点中存的是真正的缓存数据的信息,非叶子节点的锁没有必要一直持有,用完锁可以立即归还。因此在读请求时,以三层B+树为例,如图4-1、4-2所示,假设需要访问节点4201中的一个bkey,则步骤S1.包括:
S11.根节点4001加读锁;
S12.遍历根节点4001的bkey,找到符合条件的节点4101;
S13.给节点4101加读锁,并给根节点4001解锁;
S14.遍历节点4101的bkey,找到符合条件的叶子节点4201;
S15.给叶子节点4201加读锁,并给节点4101解锁
S16.在叶子节点4201中查找匹配的数据;
S17.给叶子节点4201解锁;
S18.结束。
与传统的遍历方法相比,本发明中的便利方法在非叶子节点(4001、4101)的持锁时间明显变短。
若在图4-1中的节点4201中未查找到期望的数据,也就是SSD盘上没有保存这份数据,那么需要从HDD盘将未命中的数据读上来,写到SSD盘,将对应的bkey插入B+树中,并将数据返回给上层调用者,下次再有同样IO请求的话,就能从SSD盘上直接获取返回给上层调用者;因此本发明方法还包括B+树的插入流程,如图4-3所示,步骤S2.包括
S21.根节点4001加读锁;
S22.遍历根节点4001的bkey,找到符合条件的节点4101;
S23.给节点4101加读锁,并给根节点4001解锁;
S24.遍历节点4101的bkey,找到符合条件的叶子节点4201;
S25.给叶子节点4201加写锁,并给节点4101解锁
S26.在叶子节点4201中插入新增bkey;
S17.给叶子节点4201解锁;
S18.结束。
若图4-3中描述的在节点4201中插入一个bkey的操作没有预期的顺序,节点4201中bkey已满,因为B+树节点的大小是有限的,在内存中仅256KB,这就涉及到了节点的分裂。如图4-4,4201这个节点分裂为42010和42011两个节点,这两个新增节点的bkey需要插入到4201的上级节点4101,如果4101节点大小也满,4101也需要分裂成2个节点,41010和41011两个节点,这两个新增节点的bkey要插入到4001中。因为无法预知本次分裂是否会导致父节点的继续分裂,因此bcache原有逻辑,分裂是一直持有根节点的写锁的,直到分裂结束。
当B+树节点要分裂的时候,在分裂结束前需要一直持有根节点的写锁。大量的IO请求访问或修改B+树的时候,原逻辑会有很多根节点的读锁持有者,分裂的操作要拿到写锁必须等待读锁全部释放,如果根节点的读锁未及时归还,获取到根节点写锁的等待时间会加长,整个IO流程的延时必然会加大。但以本发明上述遍历方法,根节点的读锁持锁时间明显变短,获取写锁等待的时间相应的就缩短了。本发明通过上述方法中分区间加锁方式,进行B+树遍历过程,解决了传统技术中关键节点不合理的持锁方式造成的性能瓶颈;即,本发明方法中通过及时归还父节点的锁,解决了在IO并发量急剧增加的时候,由于非叶子节点持锁时间长导致的性能下降的问题;通过控制持锁区间,降低了由于不必要的持锁时间导致的开销。
假设访问节点4201中的数据(如图4-4),经过本发明优化后的读流程加解锁顺序为:
根节点4001加读锁→节点4101加读锁→根节点4001解读锁→节点4201加读锁→节点4101解读锁→节点4201解读锁;如图4-5所示。
假设要往节点4201中插入一个bkey,导致分裂(图4-4),分裂流程的加解锁顺序为:
根节点4001加写锁→节点4101加写锁→节点4201加写锁→节点4201解写锁→节点4101解写锁→节点4001解写锁;如图4-6所示。
则可以得出,首先加锁解锁的数量是匹配的,不会由于遗漏解锁导致死锁。4.6.1的节点4001要拿到写锁,需要等4.5.3的节点4001解读锁,4.6.2的节点4101要拿到写锁,需要等4.5.5的节点4101解读锁完成,4.6.3的节点4201拿到写锁,需要4.5.6的解写锁。假设4.6.3拿到了节点4201的写锁,在4.6.4的解节点4201的写锁之前,4.5.4是无法拿到读锁的。拿锁顺序和归还锁的顺序也是匹配的;不会导致循环等待死锁;因此本发明B+遍历的方法不会引发死锁问题。
实施例2
本发明还提供了实施上述方法的装置,包括处理器和存储器,存储器中存储有程序,程序被处理器运行时,执行:
在读请求过程中,给某一节点加读锁时,并给其父节点解锁;
在写请求过程中,给某一节点加写锁时,并给其父节点解锁。
本发明B+树遍历的装置对应实施例1中的方法步骤,则程序执行所述“在读请求过程中,给某一节点加读锁时,给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,并给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加读锁时,并给该叶子节点的父节点解锁;
在叶子节点中查找匹配的数据;
给叶子节点解锁;
结束。
程序执行所述“在写请求过程中,给某一节点加读锁时,并给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加写锁时,给该叶子节点的父节点解锁;
在叶子节点中插入新增bkey;
给叶子节点解锁;
结束。
当所述在叶子节点中插入新增bkey时该节点中bkey已满,则进行节点分裂;任一节点分裂时,该节点下新增节点的bkey插入到该节点的上级节点中;且给任一节点加写锁时,并给上级节点解锁。
如图5所示的,假设一个IO读请求,要访问节点5205里面的数据,一个IO写请求要在节点5203里插入一个bkey,此时节点5203的内容将满,增加的bkey会触发节点5203的分裂。当前读请求正在进行,如果按照传统的逻辑,读请求所在的线程持有的锁包括节点5001的读锁,节点5102的读锁,节点5205的读锁,分裂逻辑要获取到写锁,需要等到节点5205,节点5102,节点5001的读锁释放之后才可以获取。本发明装置实施过程中,读请求查找到节点5102后便可释放节点5001的锁,此时写请求可顺利拿到节点5001,节点5101,节点5203的写锁,减少了拿锁等待的时间。因B+树节点的内存是256K,bcache中IO请求压力比较大的时候,分裂比较频繁,分裂的时延降低将有助于提高bcache的IO并发处理能力;因为bcache是存在于内核态,对linux操作系统的并行处理能力也大大提升。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (8)

1.一种B+树遍历的方法,其特征在于,包括
在读请求过程中,给某一节点加读锁时,并给其父节点解锁;
在写请求过程中,给某一节点加写锁时,并给其父节点解锁。
2.根据权利要求1所述的B+树遍历的方法,其特征在于,所述“在读请求过程中,给某一节点加读锁时,给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,并给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加读锁时,并给该叶子节点的父节点解锁;
在叶子节点中查找匹配的数据;
给叶子节点解锁;
结束。
3.根据权利2所述的B+树遍历的方法,其特征在于,所述“在写请求过程中,给某一节点加读锁时,并给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加写锁时,给该叶子节点的父节点解锁;
在叶子节点中插入新增bkey;
给叶子节点解锁;
结束。
4.根据权利要求3所述的B+树遍历的方法,其特征在于,当所述在叶子节点中插入新增bkey时该节点中bkey已满,则进行节点分裂;任一节点分裂时,该节点下新增节点的bkey插入到该节点的上级节点中;且给任一节点加写锁时,并给上级节点解锁。
5.一种B+树遍历的装置,其特征在于,包括处理器和存储器,存储器中存储有程序,程序被处理器运行时,执行:
在读请求过程中,给某一节点加读锁时,并给其父节点解锁;
在写请求过程中,给某一节点加写锁时,并给其父节点解锁。
6.根据权利要求5所述的B+树遍历的装置,其特征在于,程序执行所述“在读请求过程中,给某一节点加读锁时,给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,并给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加读锁时,并给该叶子节点的父节点解锁;
在叶子节点中查找匹配的数据;
给叶子节点解锁;
结束。
7.根据权利6所述的B+树遍历的方法,其特征在于,程序执行所述“在写请求过程中,给某一节点加读锁时,并给其父节点解锁”中,包括
根节点加读锁;
遍历根节点的bkey,找到符合条件的非叶子节点;
给任一非叶子节点加读锁时,给该非叶子节点的父节点解锁;
遍历非叶子节点的bkey,直至找到符合条件的叶子节点;
给叶子节点加写锁时,给该叶子节点的父节点解锁;
在叶子节点中插入新增bkey;
给叶子节点解锁;
结束。
8.根据权利要求7所述的B+树遍历的装置,其特征在于,当所述在叶子节点中插入新增bkey时该节点中bkey已满,则进行节点分裂;任一节点分裂时,该节点下新增节点的bkey插入到该节点的上级节点中;且给任一节点加写锁时,并给上级节点解锁。
CN201911371660.XA 2019-12-26 2019-12-26 一种b+树遍历的方法及装置 Pending CN111198660A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911371660.XA CN111198660A (zh) 2019-12-26 2019-12-26 一种b+树遍历的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911371660.XA CN111198660A (zh) 2019-12-26 2019-12-26 一种b+树遍历的方法及装置

Publications (1)

Publication Number Publication Date
CN111198660A true CN111198660A (zh) 2020-05-26

Family

ID=70746878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911371660.XA Pending CN111198660A (zh) 2019-12-26 2019-12-26 一种b+树遍历的方法及装置

Country Status (1)

Country Link
CN (1) CN111198660A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204435A (zh) * 2021-07-01 2021-08-03 阿里云计算有限公司 数据处理方法以及系统
WO2022068289A1 (zh) * 2020-09-29 2022-04-07 北京金山云网络技术有限公司 一种数据访问方法、装置、设备及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102654863A (zh) * 2011-03-02 2012-09-05 华北计算机系统工程研究所 一种实时数据库历史数据组织管理方式
US20130185271A1 (en) * 2012-01-17 2013-07-18 Apple Inc. Optimized b-tree
CN103858103A (zh) * 2011-08-29 2014-06-11 甲骨文国际公司 资源分配树
CN109582677A (zh) * 2018-12-03 2019-04-05 东北大学 基于孩子节点的多粒度分布式读写锁的r树索引优化方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102654863A (zh) * 2011-03-02 2012-09-05 华北计算机系统工程研究所 一种实时数据库历史数据组织管理方式
CN103858103A (zh) * 2011-08-29 2014-06-11 甲骨文国际公司 资源分配树
US20130185271A1 (en) * 2012-01-17 2013-07-18 Apple Inc. Optimized b-tree
CN109582677A (zh) * 2018-12-03 2019-04-05 东北大学 基于孩子节点的多粒度分布式读写锁的r树索引优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
阿里云数据库: "MySQL 引擎特性 B+树并发控制机制的前世今" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022068289A1 (zh) * 2020-09-29 2022-04-07 北京金山云网络技术有限公司 一种数据访问方法、装置、设备及计算机可读存储介质
CN113204435A (zh) * 2021-07-01 2021-08-03 阿里云计算有限公司 数据处理方法以及系统

Similar Documents

Publication Publication Date Title
US9846645B1 (en) Managing objects stored in memory
US11023453B2 (en) Hash index
US10296462B2 (en) Method to accelerate queries using dynamically generated alternate data formats in flash cache
WO2020186549A1 (zh) 一种元数据管理方法、系统及介质
US11204813B2 (en) System and method for multidimensional search with a resource pool in a computing environment
Zhong et al. {REMIX}: Efficient Range Query for {LSM-trees}
US20180011892A1 (en) Foster twin data structure
CN107544756B (zh) 基于SCM的Key-Value日志型本地存储方法
CN103229164B (zh) 数据访问方法和装置
US20130290636A1 (en) Managing memory
US11449430B2 (en) Key-value store architecture for key-value devices
CN111316255B (zh) 数据存储系统以及用于提供数据存储系统的方法
CN107888687B (zh) 一种基于分布式存储系统的代理客户端存储加速方法及系统
CN111198660A (zh) 一种b+树遍历的方法及装置
US20240086332A1 (en) Data processing method and system, device, and medium
CN106202459A (zh) 虚拟化环境下的关系型数据库存储性能优化方法及系统
US9223690B2 (en) Freeing memory safely with low performance overhead in a concurrent environment
CN113722320A (zh) 一种基于并行的图数据索引的持久化方法
KR102321346B1 (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
Wang et al. Circ-Tree: A B+-Tree variant with circular design for persistent memory
CN116226232A (zh) 面向分布式数据库的持久内存数据存储方法及系统
CN114489480A (zh) 高并发存储数据的方法及系统
CN114969034A (zh) LSM-Tree架构数据库有序表的查询方法和装置
CN113127211A (zh) 与键-值式数据库系统相关联的锁管理
Kalita et al. Durablefs: A file system for persistent memory

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