数据库的索引节点处理方法和装置、计算机设备及介质与流程

文档序号:33396022发布日期:2023-03-08 13:28阅读:34来源:国知局
1.本技术涉及数据存储
技术领域
:,尤其涉及一种数据库的索引节点处理方法和装置、计算机设备及介质。
背景技术
::2.目前,数据库存储的存储结构主要以b-tree的索引结构为主,且b-tree的索引结构适用于基于ssd的优化存储引擎,但是传统的b-tree的索引结构不能解决处理器产生的物理锁争用问题,也即对于频繁更新节点中的元组频繁竞争物理锁,从而影响数据库的系统性能,因此,如何解决频繁更新节点中与元组竞争物理锁,成为了亟待解决的技术问题。技术实现要素:3.本技术实施例的主要目的在于提出一种数据库的索引节点处理方法和装置、计算机设备及介质,旨在减少节点竞争,且能够节省空间利用率,从而提升数据库的系统性能。4.为实现上述目的,本技术实施例的第一方面提出了一种数据库的索引节点处理方法,所述方法包括:获取内存页面的数据写入信息;其中,所述数据写入信息包括:页面信息和数据写入次数;根据所述页面信息从预设的原始索引节点中筛选出候选索引节点;根据所述数据写入次数和预设的写入次数阈值对所述候选索引节点进行分类处理,得到热门索引节点和冷门索引节点;将所述热门索引节点进行节点分裂处理,得到第一目标节点;将所述冷门索引节点进行节点合并处理,得到第二目标节点。5.在一些实施例,所述获取内存页面的数据写入信息,包括:根据预设时间间隔获取预设的分页表项中数据标志位的状态信息,得到标志位状态信息;其中,所述数据标志位的状态信息用于表征所述内存页面的更新状态;根据预设周期和所述标志位状态信息进行状态更新次数计算,得到数据写入次数;其中,所述预设周期包括至少两个所述预设时间间隔;获取所述分页表项中所述数据标志位的标志位信息,得到所述页面信息。6.在一些实施例,在所述获取内存页面的数据写入信息之前,所述方法还包括:构建所述分页表项,具体包括:根据预设时间间隔获取所述内存页面的页面数据;其中,所述页面数据包括:页面信息和页面更新状态信息;根据所述页面信息在预设的数据表项上设置数据标志位,且根据所述页面更新状态信息设置所述数据标志位的状态信息,得到所述分页表项。7.在一些实施例,所述将所述热门索引节点进行节点分裂处理,得到第一目标节点,包括:获取所述热门索引节点中的元组,得到热门候选元组;对所述热门候选元组进行竞争冲突分析,得到竞争冲突信息;根据所述竞争冲突信息将所述热门候选元组划分为第一热门元组和第二热门元组;将所述热门索引节点进行节点分裂,得到第一分裂节点和第二分裂节点;将所述第一热门元组存入所述第一分裂节点,并将所述第二热门元组存入所述第二分裂节点,得到所述第一目标节点。8.在一些实施例,所述将所述冷门索引节点进行节点合并处理,得到第二目标节点,包括:获取所述冷门索引节点中的元组,得到冷门候选元组;对所述冷门索引节点进行剩余空间计算,得到内存剩余空间;根据所述内存剩余空间将所述冷门索引节点进行合并处理,得到合并节点;根据所述内存剩余空间将所述冷门候选元组合并存储至所述合并节点,得到所述第二目标节点。9.在一些实施例,所述根据所述内存剩余空间将所述冷门索引节点进行合并处理,得到合并节点,包括:将所述内存剩余空间进行求和计算,得到剩余空间总和;根据所述剩余空间总和和预设的节点内存空间从所述冷门索引节点筛选出选定索引节点;将所述选定索引节点进行合并处理,得到所述合并节点。10.在一些实施例,在所述根据所述数据写入次数和预设的写入次数阈值对所述候选索引节点进行分类处理,得到热门索引节点和冷门索引节点之后,所述方法还包括:根据所述冷门索引节点从所述内存页面筛选出目标页面;将所述目标页面存入预设的交换区。11.为实现上述目的,本技术实施例的第二方面提出了一种数据库的索引节点处理装置,所述装置包括:信息获取模块,用于获取内存页面的数据写入信息;其中,所述数据写入信息包括:页面信息和数据写入次数;节点筛选模块,用于根据所述页面信息从预设的原始索引节点中筛选出候选索引节点;节点分类模块,用于根据所述数据写入次数和预设的写入次数阈值对所述候选索引节点进行分类处理,得到热门索引节点和冷门索引节点;节点分裂模块,用于将所述热门索引节点进行节点分裂处理,得到第一目标节点;节点合并模块,用于将所述冷门索引节点进行节点合并处理,得到第二目标节点。12.为实现上述目的,本技术实施例的第三方面提出了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。13.为实现上述目的,本技术实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。14.本技术提出的数据库的索引节点处理方法和装置、计算机设备及介质,其通过获取内存页面的数据写入次数和页面信息,以根据页面信息从原始索引节点筛选出候选索引节点,并将数据写入次数和写入次数阈值进行比较,以对候选索引节点划分为冷门索引节点和热门索引节点,以将热门索引节点进行节点分裂得到第一目标节点,且将冷门索引节点进行节合并得到第二目标节点,以减少节点上不必要的竞争以达到提高并发的目的,同时兼顾了b-tree索引结构空间管理以提升节点空间利用率,从而提升数据库的系统性能。附图说明15.图1是本技术实施例提供的数据库的索引节点处理方法的流程图;图2是本技术另一实施例提供的数据库的索引节点处理方法的流程图;图3是本技术实施例提供的数据库的索引节点处理方法的系统流程图;图4是图1中的步骤s101的流程图;图5是图1中的步骤s104的流程图;图6是本技术实施例提供的数据库的索引节点处理方法的热门索引节点分裂示意图;图7是图1中的步骤s105的流程图;图8是本技术实施例提供的数据库的索引节点处理方法的冷门索引节点合并示意图;图9是图7中的步骤s703的流程图;图10是本技术另一实施例提供的数据库的索引节点处理方法的流程图;图11是本技术实施例提供的数据库的索引节点处理装置的模块框架图;图12是本技术实施例提供的计算机设备的硬件结构示意图。具体实施方式16.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。17.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。18.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。19.首先,对本技术中涉及的若干名词进行解析:b-tree:b-tree是一种常见的索引结构,使用b-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,b通常认为是balance的简称。这个索引结构一般用于数据库的索引,综合效率较高。对于一棵m阶b-tree,每个节点至多可以拥有m个子节点。各节点的关键字和可以拥有的子节点数都有限制,规定m阶b-tree中,根节点至少有2个子节点,除非根节点为叶子节点,相应的,根节点中关键字的个数为1~m-1;非根节点至少有[m/2]([],向上取整)个子节点,相应的,关键字个数为[m/2]-1~m-1。[0020]内存管理单元(memorymanagementunit,mmu):内存管理单元也称作分页内存管理单元(pagedmemorymanagementunit,pmmu)。内存管理单元是一种负责处理中央处理器(cpu)的内存访问请求的计算机硬件。内存管理单元的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bankswitching,尤其是在8位的系统上)。[0021]分页表项(pagetableentry,pte):分页表项是存储机制中的构成元素,由pde(页目录表)指向,每一个表项对应一个物理页。当一个进程请求自己的内存,操作系统负责把程序生成的虚拟地址,映射到实际存储的物理内存上。操作系统在分页表中存储虚拟地址到物理地址的映射。每个映射被称为分页表项。[0022]索引:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。[0023]锁存器(latch):锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制器与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个i/o口既能输出也能输入的问题。[0024]线程(thread):线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在unixsystemv及sunos中也被称为轻量进程(lightweightprocesses),但轻量进程更多指内核线程(kernelthread),而把用户线程(userthread)称为线程。[0025]b-tree作为常见的一种索引结构,b-tree的索引结构因为综合效率较高的特点,被广泛应用于数据库的索引,从而协助快速查询、更新数据库表中数据。同时具有大量节点的平衡索引结构,适用于基于ssd的优化存储引擎。在经典的b-tree索引结构在相关技术的cpu上的扩展性很差,因为b-tree索引结构不能处理相关技术中cpu可能产生的锁存器争用。对于b-tree索引结构而言,如果能高效检测b-tree索引结构中频繁更新的节点,则可以及时对节点进行分割从而分散竞争达到高效竞争管理的目的。但是相关技术中的更新频繁节点的检测技术主要是增加数据库的计算和内存访问成本从而影响数据库的系统性能。相关技术中,为了缩减锁存器竞争的方法主要包括三类:第一,通过将数据分区处理,事务被分配到适当的内核中,且在串行执行,如静态数据分区方法等;第二,实现无索引,如kiss树和bw树等;第三,划分硬件十五区间作为索引阶段和操作阶段,来降低竞争发生的可能性。但是相关技术中会存在以下缺点,第一,不能检测更新频繁的节点,且基于抽样算法比较低成功概率预测更新频繁的节点,所以预测结果存在较大的误差。第二传统静态分区方法无法对跨分区事务选择有效的内核进行分区划分,且无法处理动态变化的热门数据分区问题;第三,针对现有的无索引涉及中,线程不在节点上的竞争,而在增量记录列表的开头竞争,从而导致类似的可扩展性问题。[0026]基于此,本技术实施例提供了一种数据库的索引节点处理方法和装置、计算机设备及介质,通过获取内存页面的数据写入次数,根据数据写入次数和预设的写入次数阈值对候选索引节点进行分类,以将候选索引节点划分为热门索引节点和冷门索引节点,对热门索引节点进行节点分裂得到第一目标节点,以降低频繁对节点的访问次数;对冷门索引节点进行节点合并处理得到第二目标节点,以不增加竞争负担同时提高空间利用率。因此,实现检测出热门索引节点,且不会为了检测增加额外的计算和内存访问成本,同时使用范围广,可以用于基于树型结构的数据库索引中;根据数据写入次数和写入次数阈值将候选索引节点分类出热门索引节点,以准确量化锁竞争并准确预测锁竞争发生的节点;对热门索引节点进行节点分裂处理,能够基于竞争冲突的热门索引节点避免大范围不必要的锁竞争,以提升b-tree索引结构的空间利用率,从而提升数据库的系统性能。[0027]本技术实施例提供的数据库的索引节点处理方法和装置、计算机设备及介质,具体通过如下实施例进行说明,首先描述本技术实施例中的索引节点处理方法。[0028]本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificialintelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。[0029]人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。[0030]本技术实施例提供数据库的索引节点处理方法,涉及数据存储
技术领域
:。本技术实施例提供的数据库的索引节点处理方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现数据库的索引节点处理方法的应用等,但并不局限于以上形式。[0031]本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费计算机设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。[0032]需要说明的是,在本技术的各个具体实施方式中,当涉及到需要根据用户信息、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本技术实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本技术实施例能够正常运行的必要的用户相关数据。[0033]图1是本技术实施例提供的数据库的索引节点处理方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤s101至步骤s105。[0034]步骤s101,获取内存页面的数据写入信息;其中,数据写入信息包括:页面信息和数据写入次数;步骤s102,根据页面信息从预设的原始索引节点中筛选出候选索引节点;步骤s103,根据数据写入次数和预设的写入次数阈值对候选索引节点进行分类处理,得到热门索引节点和冷门索引节点;步骤s104,将热门索引节点进行节点分裂处理,得到第一目标节点;步骤s105,将冷门索引节点进行节点合并处理,得到第二目标节点。[0035]本技术实施例所示意的步骤s101至步骤s105,通过获取内存页面的页面信息和数据写入次数,并根据页面信息从原始索引节点筛选出候选索引节点,也即作为本次进行冷热门分类的候选索引节点,以根据数据写入次数和预设的写入次数阈值对候选索引节点进行分类,也即将候选索引节点划分为热门索引节点和冷门索引节点,以实现高效低开销地检测出热门索引节点,不会为了检测而增加额外的计算和内存访问节点,且准确量化锁存器竞争且准确预测出锁存器竞争的候选索引节点。通过对热门索引节点进行节点分裂处理得到第一目标节点,再将冷门索引节点进行节点合并处理得到第二目标节点,以将热门索引节点分裂以避开大范围不必要的锁存器竞争,从而降低频繁对节点访问次数,且提升b-tree索引结构的空间利用率,以提高数据库的系统性能。[0036]在一些实施例中,在步骤s101之前,数据库的索引节点处理方法还包括构建分页表项。分页表项为操作系统在分页表中存储虚拟地址到物理地址的映射,且每一个映射成为分页表项,且cpu管理单元为每个内存页在分页表项中设置数据标志位,则分页表项上的数据标志位用于表征每一内存页面的状态信息,则可以根据数据标志位确定内存页面的页面更新状态。[0037]请参照图2,构建分页表项可以包括但不限于包括步骤s201至步骤s202:步骤s201,根据预设时间间隔获取内存页面的页面数据;其中,页面数据包括:页面信息和页面更新状态信息;步骤s202,根据页面信息在预设的数据表项上设置数据标志位,且根据页面更新状态信息设置数据标志位的状态信息,得到分页表项。[0038]在一些实施例的步骤s201,通过预设时间间隔获取内存页面的页面信息和页面更新状态信息,以通过页面更新信息知晓内存页面的更新状态。其中,页面更新状态信息包括:被访问状态信息和被修改状态信息,且被访问状态信息表征内存页面被访问,且被修改状态信息表征内存页面被修改。[0039]在一些实施例的步骤s202,根据页面信息在预设的数据表项上设置数据标志位,且每一页面信息对应数据标志位的标志位信息,也即根据内存页面的数量设置数据标志位的数量,并根据页面设置每一数据标志位的数据标志。同时根据页面更新状态信息设置每一个数据标志位的状态信息得到分页表项。则获取内存页面的状态信息时,只需要从分页表项获取数据标志位即可。其中,根据预设时间间隔的页面更新状态信息会重置数据标志位的状态信息。[0040]例如请参照图3,图3是数据库的索引节点处理方法的系统流程图,且数据标志位包括:page0、page1、page2、page3、page4、page5,且每一数据标志位对应一个内存页面。构建数据标志位后,根据预设时间间隔的页面更新状态信息设置数据标志位的状态信息。因此,通过数据标志位的状态信息知晓分页表项的页面更新状态信息,以实现监控对数据库的访问,而这对于数据库系统的正常运行而言几乎没有开销。因此,通过数据标志位表征内存页面的页面更新状态信息,当内存页面被访问或者被修改时,分页表项中对应的数据标志位也会对应修改,也即改变数据标志位的状态信息,以通过数据标志位表征内存页面。[0041]本技术实施例所示意的步骤s201至步骤s202,通过以预设时间间隔获取每一内存页面的页面信息和页面更新状态信息,并根据页面信息设置数据表项上的数据标志位,且根据页面更新状态信息设置数据标志位的状态信息,以得到分页表项。因此,通过分页表项的数据标志位表征内存页面,且数据标志位的状态信息表征内存页面的页面更新状态信息,则获取内存页面的页面更新状态信息时无需对所有的内存页面进行状态采集,只需要获取分页表项的数据标志位的状态信息即可,使得内存页面的数据写入次数计算更加简易。[0042]请参阅图4,在一些实施例中,步骤s101可以包括但不限于包括步骤s401至步骤s403:步骤s401,根据预设时间间隔获取预设的分页表项中数据标志位的状态信息,得到标志位状态信息;其中,数据标志位的状态信息用于表征内存页面的更新状态;步骤s402,根据预设周期和标志位状态信息进行状态更新次数计算,得到数据写入次数;其中,预设周期包括至少两个预设时间间隔;步骤s403,获取分页表项中数据标志位的标志位信息,得到页面信息。[0043]在一些实施例的步骤s401中,由于cpu内存管理单元可以实现高效的虚拟内存管理以达到监控对数据库的访问目的,且操作系统在分页表中存储虚拟地址到物理地址的映射,且每个映射被称为分页表项,所以通过分页表项记载内存页面的更新状态,同时在分页表项上设置数据标志位,且数据标志位用于表征每个内存页面的更新状态。则根据预设时间间隔获取分页表项中数据标志位的状态信息得到标志位状态信息,也即得到了内存页面的更新状态,使得内存页面的更新状态获取简易。因此,通过预设时间间隔,以根据预设时间间隔采集分页表项中数据标志位的状态信息,能够不受数据类型的限制,适用于静态数据场景和动态数据场景,且可以动态处理变化的热门索引数据,以极低开销高效检测出b-tree索引结构中频繁更新的索引节点,也即检测出存在高竞争的热门索引节点,以便于对热门索引节点进行节点分裂,以避免高竞争的发生。[0044]在一些实施例的步骤s402中,由于数据标志位的状态信息会变化,且需要根据预设周期和状态信息变化次数以确定数据标志位对应的内存分页是否频繁进行更新,所以根据预设周期和标识位状态信息进行状态更新次数计算,也即计算标志位状态信息发生变化的次数得到数据写入次数。因此以预设的时间间隔遍历分页表项中数据标志位的状态信息以得到标志位状态信息,同时遍历的同时将数据标志位重置以在下个预设时间间隔的遍历可以及时更新统计数据标志位更新的次数,也即统计内存页面被访问、被修改的次数,使得内存页面更新次数计算简易。[0045]需要说明的是,若设定预设周期,且预设周期包括至少两个预设时间间隔,则获取预设周期内的标志位状态信息,也即得到至少两个标志位状态信息,且每一标志位状态信息对应一个内存页面,并对统计预设周期至少两个标志位状态信息的变化次数得到数据写入次数,也即确定该内存页面的数据写入次数,以根据数据写入次数判断每一内存页面的更新频率。其中,标志位状态信息包括访问状态信息、修改状态信息,所以统计每一数据标志位的访问状态信息和修改状态信息的次数。例如,若预设周期包括5个预设时间间隔,在采集5次标志位状态信息时,获取a数据标志位的访问状态信息为1次,修改状态信息为2次;b数据标志位的访问状态信息为0次,修改状态信息为1次,c数据标志位的访问状态信息为1次,修改状态信息为1次;d数据状态标志位的访问状态信息为1次,且修改状态信息为3次。因此,对每一数据标志位的标志位状态信息进行状态更新次数计算得到a数据标志位的数据写入次数为3次,b数据标志位的数据写入次数为1次,c数据标志位的数据写入次数为2次,d数据标志位的数据写入次数为4次。[0046]在一些实施例的步骤s403中,获取分页表项中数据标志位的标志位信息,且标志位信息对应于内存页面的页面信息,所以将标志位信息作为内存页面的页面信息,使得页面信息获取简易。[0047]在本技术实施例所示意的步骤s401至步骤s403,通过根据预设时间间隔获取分页表项中数据标志位的状态信息得到标志位状态信息,也即得到每一内存页面的状态信息,根据预设周期和标志位状态信息进行状态更新次数计算得到数据写入次数,也即获取在预设周期内标志位状态信息的变化次数得到数据写入次数。同时获取分页表项中数据标志位的标志位信息得到页面信息,以通过页面信息和数据写入次数拼接成内存页面的数据写入信息,以便于根据数据写入次数和内存页面的页面信息判断每一内存页面的更新频率,也即确定内存页面对应的候选索引节点的更新频率。[0048]在一些实施例的步骤s102中,通过根据页面信息从原始索引节点中筛选出候选索引节点,也即获取页面信息对应的原始索引节点作为候选索引节点,获取表征内存页面的候选索引节点。[0049]在一些实施例的步骤s103中,请参照图3,通过b-tree冷热点检测模块进行候选索引节点的冷热点分类,以输出热门索引节点或冷门索引节点。通过计算得到数据写入次数后,预先设置写入次数阈值,则将数据写入次数和预设的写入次数阈值进行比较,若数据写入次数大于写入次数阈值,则将候选索引节点分类为热门索引节点;若数据写入次数小于写入次数阈值,则将候选索引节点分类为冷门索引节点。因此,内存页面被访问、修改的频次大于写入次数阈值,则将内存页面对应的候选索引节点判断热门索引节点,若内存页面被访问、修改的频次小于写入次数阈值,则将内存页面对应的候选索引节点判断为冷门索引节点。因此,通过基于mmu监控内存页面被访问、修改的次数,以划分为热门索引节点和冷门索引节点,以极低高效检测出b-tree索引结构的热门索引节点。[0050]请参阅图5,在一些实施例中,步骤s104可以包括但不限于包括步骤s501至步骤s505:步骤s501,获取热门索引节点中的元组,得到热门候选元组;步骤s502,对热门候选元组进行竞争冲突分析,得到竞争冲突信息;步骤s503,根据竞争冲突信息将热门候选元组划分为第一热门元组和第二热门元组;步骤s504,将热门索引节点进行节点分裂,得到第一分裂节点和第二分裂节点;步骤s505,将第一热门元组存入第一分裂节点,并将第二热门元组存入第二分裂节点,得到第一目标节点。[0051]在一些实施例的步骤s501中,热门索引节点包括至少一个元组,则获取热门索引节点中的元组以得到热门候选元组。[0052]在一些实施例的步骤s502中,通过对热门候选元组进行竞争冲突分析,也即判断频繁更新的元组是否相同以判断热门索引节点是否不必要竞争的高竞争冲突节点,若频繁更新的元组不相同则表示热门候选元组可以通过节点拆分后以避免节点竞争。所以通过判断频繁更新的元组是否相同得到竞争冲突信息。[0053]在一些实施例的步骤s503中,根据竞争冲突信息将热门候选节点划分为第一热门元组和第二热门元组,也即找到频繁更新的两个热门候选元组后,根据热门候选元组之间的位置将候选热门元组划分,以实现频繁更新的热门候选元组划分后存入分裂的节点中,以将频繁更新的热门候选元组分离为受不同锁存器保护的独立节点。[0054]需要说明的是,根据竞争冲突信息确定竞争的两个热门候选元组,并以频繁更新的两个热门候选元组作为基准,将热门索引节点上的热门候选元组划分,也即找出频繁更新的两个热门候选元组的中间位置,以中间位置拆分热门候选元组。例如,请参照图6,图6中的热门索引节点包括a、b、c、d四个热门候选元组,且线程1和线程2频繁更新热门候选元组a和c,因此不必要地争夺热门索引节点的锁存器,为了减少竞争,则在两个频繁更新的热门候选元组a和c之间的中点显示拆分节点,也即在热门候选节点b和c之间,也即将a、b作为第一热门元组,c、d作为第二热门元组。[0055]在一些实施例的步骤s504中,将热门索引节点进行节点分裂后形成两个节点,也即为第一分裂节点和第二分裂节点,以便于通过第一分裂节点和第二分裂节点将两个频繁更新的热门候选元组分开。[0056]在一些实施例的步骤s505中,通过将第一热门元组存入第一分裂节点,第二热门元组存入第二分裂节点以实现频繁更新的元组分裂到不同独立节点,以减少节点上的竞争冲突。[0057]需要说明的是,通过构建了第一分裂节点和第二分裂节点,将第一热门元组a、b存入到第一分裂节点,第二热门元组c、d存入到第二分裂节点,则频繁更新的a、c热门候选元组可以减少竞争。因此,以极低开销高效检测出b-tree热门索引节点并针对存在高竞争的热门索引节点,采取分裂节点的措施以避免高竞争的发生,从而高效灵活的提高并发性能。[0058]本技术实施例所示意的步骤s501至步骤s505,通过获取热门索引节点中热门候选元组,并判断频繁更新的热门候选元组是否相同,若不同得到竞争冲突信息,以根据竞争冲突信息对热门候选元组划分为第一热门元组和第二热门元组,并对热门索引节点进行节点分裂成第一分裂节点和第二分裂节点,并将第一热门元组存入第一分裂节点,第二热门元组存入第二分裂节点,以将冲突竞争的元组分离得到第一目标节点,以避免高竞争发生,从而高效灵活的提高并发性能。[0059]请参阅图7,在一些实施例中,步骤s105可以包括但不限于包括步骤s701至步骤s704:步骤s701,获取冷门索引节点中的元组,得到冷门候选元组;步骤s702,对冷门索引节点进行剩余空间计算,得到内存剩余空间;步骤s703,根据内存剩余空间将冷门索引节点进行合并处理,得到合并节点;步骤s704,根据内存剩余空间将冷门候选元组合并存储至合并节点,得到第二目标节点。[0060]在一些实施例的步骤s701中,当检测出冷门索引节点后,也即检测到可以合并的冷门索引节点,以将冷门索引节点进行合并以节省出一个新的控节点,从而达到增加b-tree索引结构的空间利用率、提高数据库系统性能目的。所以先获取冷门索引节点中的元组得到冷门候选元组,则可以将冷门候选元组融合到一个节点中,以节省出节点。[0061]在一些实施例的步骤s702中,对冷门索引节点进行剩余空间计算得到内存剩余空间,也即计算出每一冷门索引节点的空闲空间,以便于根据内存剩余空间确定哪些冷门索引节点可以进行合并。[0062]在一些实施例的步骤s703中,通过根据内存剩余空间筛选出可以合并的冷门索引节点,并对冷门索引节点进行合并得到合并节点。其中,可以合并的冷门索引节点的位置相邻。[0063]在一些实施例的步骤s704中,通过根据内存剩余空间将冷门候选元组组合,并存入到合并节点,其中,合并冷门索引节点,也即将最中间的冷门索引节点删除,并获取删除冷门索引节点的冷门候选元组,以将冷门候选元组存入到相邻的冷门索引节点中,若相邻的冷门索引节点的内存剩余空间不足,则将部分冷门候选元组存入到另一个冷门索引节点,以完全存储删除的冷门索引节点的冷门候选元组。[0064]例如,请参照图8,若冷门索引节点为m、n、o,且将冷门索引节点合并得到新的节点n’、o’,以提升b-tree索引结构的空间利用率,然后从找到的冷门索引节点的最右侧开始,选择最右两个节点,如例子中的n和o,将节点n下的元组尽可能多的移动到节点o(内存剩余空间为70%);然后移动左侧的m冷门索引节点下的冷门候选元组;由于冷门索引节点n的剩余空间(由20%变成30%)可以容纳冷门索引节点m所有的冷门候选元组,在该次移动后合并操作结束,此时将冷门索引节点m和n合并则得到一个空节点并在父亲节点中删除多余的节点分割符2。[0065]在本技术实施例所示意的步骤s701至步骤s704,通过对每一冷门索引节点进行剩余空间计算得到内存剩余空间,并根据内存剩余空间将冷门索引节点合并成合并节点,且根据内存剩余空间将冷门候选元组存储到合并节点以实现冷门索引节点的节点合并以得到第二目标节点,从而增加b-tree索引结构的空间利用率、提高数据库系统性能。[0066]请参阅图9,在一些实施例中,步骤s703可以包括但不限于包括步骤s901至步骤s903:步骤s901,将内存剩余空间进行求和计算,得到剩余空间总和;步骤s902,根据剩余空间总和和预设的节点内存空间从冷门索引节点筛选出选定索引节点;步骤s903,将选定索引节点进行合并处理,得到合并节点。[0067]在一些实施例的步骤s901和s902中,将几个相邻的冷门索引节点的内存剩余空间求和得到剩余空间总和,若剩余空间总和大于一个节点的节点内存空间,则表示该相邻的冷门索引节点可以进行合并操作,从而达到整理这些空闲空间并得到一个新的空节点的目的,因此筛选出相邻的冷门索引节点作为选定索引节点。[0068]在一些实施例的步骤s903中,通过将选定索引节点进行合并,也即将确定选定节点最中间的选定索引节点删除,然后将最中间的选定索引节点的冷门候选元组分配到两边的选定索引节点,以实现选定索引节点的合并得到合并节点。[0069]在本技术实施例所示意的步骤s901至步骤s903,通过对相邻冷门索引节点的内存剩余空间进行求和计算得到剩余空间和,并将剩余空间和大于一个节点的节点内存空间的冷门索引节点作为选定索引节点,并将选定索引节点进行合并处理得到合并节点。因此对于冷门索引节点进行合并能够增加b-tree数结构的空间利用率、且提高数据库系统性能。[0070]请参照图10,在一些实施例,在步骤s103之后,数据库的索引节点处理方法还包括但不限于包括步骤s1001至步骤s1002:步骤s1001,根据冷门索引节点从内存页面筛选出目标页面;步骤s1002,将目标页面存入预设的交换区。[0071]在本技术实施例所示意的步骤s1001至步骤s1002,通过划分为热门索引节点和冷门索引节点后,以根据热门索引节点和冷门索引节点确定哪些内存页面是经常使用,则根据冷门索引节点从内存页面筛选出目标页面,也即获取冷门索引节点对应的内存页面作为目标页面。然后将目标页面写入到预设的交换区,则可以防止调用频繁更新的内存页面到交换区,以将冷门的内存页面存入交换区。[0072]本技术实施例通过以预设时间间隔获取每一内存页面的页面信息和页面更新状态信息,并根据页面信息设置数据表项上的数据标志位,且根据页面更新状态信息设置数据标志位的状态信息,以得到分页表项。同时根据预设时间间隔获取分页表项中数据标志位的状态信息得到标志位状态信息,也即得到每一内存页面的状态信息,根据预设周期和标志位状态信息进行状态更新次数计算得到数据写入次数,且获取分页表项中数据标志位的标志位信息得到页面信息。根据页面信息从原始索引节点中筛选出候选索引节点。将数据写入次数和预设的写入次数阈值进行比较,若数据写入次数大于写入次数阈值,则将候选索引节点分类为热门索引节点;若数据写入次数小于写入次数阈值,则将候选索引节点分类为冷门索引节点。获取热门索引节点中热门候选元组,并判断频繁更新的热门候选元组是否相同,若不同得到竞争冲突信息,以根据竞争冲突信息对热门候选元组划分为第一热门元组和第二热门元组,并对热门索引节点进行节点分裂成第一分裂节点和第二分裂节点,并将第一热门元组存入第一分裂节点,第二热门元组存入第二分裂节点,以将冲突竞争的元组分离得到第一目标节点。对每一冷门索引节点进行剩余空间计算得到内存剩余空间,并根据内存剩余空间将冷门索引节点合并成合并节点,且根据内存剩余空间将冷门候选元组存储到合并节点以实现冷门索引节点的节点合并以得到第二目标节点,从而增加b-tree索引结构的空间利用率、提高数据库系统性能。[0073]请参阅图11,本技术实施例还提供一种数据库的索引节点处理装置,可以实现上述数据库的索引节点处理方法,该装置包括:信息获取模块1101,用于获取内存页面的数据写入信息;其中,数据写入信息包括:页面信息和数据写入次数;节点筛选模块1102,用于根据页面信息从预设的原始索引节点中筛选出候选索引节点;节点分类模块1103,用于根据数据写入次数和预设的写入次数阈值对候选索引节点进行分类处理,得到热门索引节点和冷门索引节点;节点分裂模块1104,用于将热门索引节点进行节点分裂处理,得到第一目标节点;节点合并模块1105,用于将冷门索引节点进行节点合并处理,得到第二目标节点。[0074]该数据库的索引节点处理装置的具体实施方式与上述数据库的索引节点处理方法的具体实施例基本相同,在此不再赘述。[0075]本技术实施例还提供了一种计算机设备,计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述数据库的索引节点处理方法。该计算机设备可以为包括平板电脑、车载电脑等任意智能终端。[0076]请参阅图12,图12示意了另一实施例的计算机设备的硬件结构,计算机设备包括:处理器1201,可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术实施例所提供的技术方案;存储器1202,可以采用只读存储器(readonlymemory,rom)、静态存储设备、动态存储设备或者随机存取存储器(randomaccessmemory,ram)等形式实现。存储器1202可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1202中,并由处理器1201来调用执行本技术实施例的数据库的索引节点处理方法;输入/输出接口1203,用于实现信息输入及输出;通信接口1204,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信;总线1205,在设备的各个组件(例如处理器1201、存储器1202、输入/输出接口1203和通信接口1204)之间传输信息;其中处理器1201、存储器1202、输入/输出接口1203和通信接口1204通过总线1205实现彼此之间在设备内部的通信连接。[0077]本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述数据库的索引节点处理方法。[0078]存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。[0079]本技术实施例提供的数据库的索引节点处理方法和装置、计算机设备及介质,其通过获取内存页面的数据写入次数和页面信息,以根据页面信息从原始索引节点筛选出候选索引节点,并将数据写入次数和写入次数阈值进行比较,以对候选索引节点划分为冷门索引节点和热门索引节点,以将热门索引节点进行节点分裂得到第一目标节点,且将冷门索引节点进行节合并得到第二目标节点,以减少节点上不必要的竞争以达到提高并发的目的,同时兼顾了b-tree索引结构空间管理以提升节点空间利用率,从而提升数据库的系统性能。[0080]本技术实施例描述的实施例是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。[0081]本领域技术人员可以理解的是,图中示出的技术方案并不构成对本技术实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。[0082]以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0083]本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。[0084]本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。[0085]应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。[0086]在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0087]上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0088]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0089]集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序的介质。[0090]以上参照附图说明了本技术实施例的优选实施例,并非因此局限本技术实施例的权利范围。本领域技术人员不脱离本技术实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本技术实施例的权利范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1