一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

索引空间处理方法、装置、设备及计算机存储介质与流程

2022-03-26 16:30:26 来源:中国专利 TAG:


1.本公开涉及数据库技术领域,尤其涉及一种索引空间处理方法、装置、设备及计算机存储介质。


背景技术:

2.数据库是为适应数据处理而发展起来的一种长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较高的数据独立性和易扩展性。
3.但在常用的数据库中,由于多版本并发控制(multi-version concurrency control,mvcc)机制的存在,逻辑元组进行更新时其对应的索引数据也会进行更新,数据库会分裂出新的索引页面用来保存新的索引数据。但在删除索引数据时,分裂出的索引页面并不会被合并还原,导致数据库中无用存储空间增长。


技术实现要素:

4.为了解决上述技术问题,本公开提供了一种索引空间处理方法、装置、设备及计算机存储介质,以减少索引页面分裂的次数,从而避免无用空间的增长。
5.第一方面,本公开实施例提供一种索引空间处理方法,包括:
6.对元组进行更新,获取更新后元组对应的索引数据;
7.判断当前索引空间是否全部被占用;
8.若当前索引空间全部被占用,则对当前索引空间中数据进行清除;
9.判断清除后的索引空间是否出现空余空间;
10.若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间。
11.第二方面,本公开实施例提供一种索引空间处理装置,包括:
12.获取模块,用于对元组进行更新,获取更新后元组对应的索引数据;
13.第一确认模块,用于判断当前索引空间是否全部被占用;
14.清除模块,若当前索引空间全部被占用,则对当前索引空间中数据进行清除;
15.第二确认模块,用于判断清除后的索引空间是否出现空余空间;
16.第一存储模块,用于若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间。
17.第三方面,本公开实施例提供一种电子设备,包括:
18.存储器;
19.处理器;以及
20.计算机程序;
21.其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
22.第四方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现第一方面所述的方法。
23.第五方面,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如上所述的索引空间处理方法。
24.本公开实施例提供的索引空间处理方法、装置、设备及计算机存储介质,通过在存储之前对索引空间中符合条件的旧数据进行清除,如果有清除出的存储空间则将索引数据直接存入,避免了每次存储索引数据时都要重新申请新的存储空间,从而节省了索引空间中的存储空间,有效避免了无用空间增长。
附图说明
25.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
26.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1为本公开实施例提供的索引空间处理方法流程图;
28.图2为本公开实施例提供的一种应用场景的示意图;
29.图3为本公开另一实施例提供的索引空间处理方法流程图;
30.图4为本公开另一实施例提供的索引空间处理方法流程图;
31.图5为本公开实施例提供的索引空间处理装置的结构示意图;
32.图6为本公开实施例提供的电子设备的结构示意图。
具体实施方式
33.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
34.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
35.在关系数据库中,存在着mvcc机制,用于实现对数据库的并发访问,因此对于一个逻辑元组可能会保存有多个版本,每个逻辑元组都对应一个独立的索引记录,用于记录该逻辑元组的相关索引信息。在对逻辑元组进行更新时,每一个更新后的元组都会和原始元组共存一段时间,其对应的索引也会相应地更新和并存。在平衡多路查找树(balanced tree,b-tree)的中,更新索引是基于分裂索引页面实现的,但删除索引并不会合并已经分裂的页面,这就导致已经分裂的页面中已经没有有效数据,但仍占据这一部分存储空间,进而导致数据库中无用的空间增长。尤其是对元组进行频繁的更新操作时,索引也会频繁更新,无用的空间增长情况更为严重。针对该问题,本公开实施例提供了一种索引空间处理方法,下面结合具体的实施例对该方法进行介绍。
36.图1为本公开实施例提供的索引空间处理方法流程图。该方法可以应用于图2所示
的应用场景,该应用场景中包括运行有数据库的设备21和数据库22,其中,设备21具体可以是终端,例如,智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备等。数据库22中包括一个或多个元组及分别与其对应的一个或多个索引空间。如图2所示,以元组23及其所对应的索引空间为例,索引空间24用于保存元组23的索引数据。可以理解的是,本公开实施例提供的索引空间处理方法还可以应用在其他场景中。
37.下面结合图2所示的应用场景,对图1所示的索引空间处理方法进行介绍,该方法包括的具体步骤如下:
38.s101、对元组进行更新,获取更新后元组对应的索引数据。
39.用户通过设备21进行操作,输入指令,数据库22根据该指令对相应的元组23进行更新。具体地,该更新可以是对已有元组的数据进行修改,或者插入新的元组,当对已有元组的数据进行修改时,在其对应的索引空间内保存新版本的索引数据,当插入新的元组时,创建与其对应的新的索引空间用于存储新插入元组的索引数据。元组23进行更新时,元组23对应的索引数据也会相应地进行更新,获得新版本的索引数据,该新版本的索引数据需要另外保存在索引空间24中,同时更新前的元组23对应的索引数据仍在存在在索引空间24中,不会被数据库22立即删除。
40.s102、判断当前索引空间是否全部被占用。
41.在新版本的索引数据保存到索引空间24之前,数据库22对索引空间24进行检查,判断其中是否还有剩余的存储空间未被占用。
42.s103、若当前索引空间全部被占用,则对当前索引空间中数据进行清除。
43.若数据库22经过检查,确认索引空间24中的存储空间已经全部被占用,则对索引空间24中符合预设条件的数据进行清除。
44.s104、判断清除后的索引空间是否出现空余空间。
45.数据库22对索引空间24中数据进行清除后,再次判断索引空间24中是否有空余的存储空间,即判断经过s103的清扫操作后,索引空间24中是否出现了空余存储空间。
46.s105、若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间。
47.数据库22将s101中得到的新版本的索引数据参数存入索引空间24中的空余存储空间中。
48.本公开实施例通过对元组进行更新,获取更新后元组对应的索引数据;判断当前索引空间是否全部被占用;若当前索引空间全部被占用,则对当前索引空间中数据进行清除;判断清除后的索引空间是否出现空余空间;若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间,由于在存储之前对索引空间中符合条件的旧数据进行清除,如果有清除出的存储空间则将索引数据直接存入,避免了每次存储索引数据时都要重新申请新的存储空间,从而节省了索引空间中的存储空间,有效避免了无用空间增长。
49.图3为本公开另一实施例提供的索引空间处理方法流程图,如图3所示,该方法包括如下几个步骤:
50.s301、对元组进行更新,获取更新后元组对应的索引数据。
51.s302、判断当前索引空间是否全部被占用。
52.具体的,s301~s302和s101~s102的实现过程和原理一致,此处不再赘述。
53.s303、确认当前索引空间未被全部占用,将所述索引数据存入当前索引空间。
54.数据库22确认当前索引空间24中还有剩余的存储空间,则直接将所述索引数据存入索引空间24中。
55.s304、若当前索引空间全部被占用,检查当前索引空间中是否有过期的索引数据,并删除所述过期的索引数据。
56.数据库22确认当前索引空间24中没有剩余的存储空间,则检查索引空间24中所有的索引数据的存入时间,若存入时间较早,代表该索引数据对应的元组中数据版本较旧;若存入时间较晚,代表该索引数据对应的元组中数据版本较新。因此,通过索引数据的存入时间即可判断索引数据的版本以及其对应的元组中数据的版本,将存在超过预设时间的元组版本对应的索引数据删除,即可将其占用的索引空间中存储空间释放出来,用于存放新的索引数据。可以理解的是,所述预设时间可以是根据用户使用需要进行设置、调整,也可以是数据库根据数据更新的频率进行计算与设置。
57.s305、判断清除后的索引空间是否出现空余空间。
58.具体的,s305和s104的实现过程和原理一致,此处不再赘述。
59.s306、确认清除后的索引空间没有出现空余空间,在所述清除后的索引空间中进行分裂,得到分裂后的索引空间,将所述索引数据存入所述分裂后的索引空间。
60.在一个索引空间中可能有一个或多个索引页面,每个索引页面的存储容量都是一致的,用于存储索引数据。数据库22经过对索引空间24中所有索引数据进行检查与清除,由于索引空间24中没有已经存在超过预设时间的索引数据,即没有过期是索引数据可以被清除,因此索引空间24中不会出现空余空间。此时,数据库22会为索引空间24新分配一部分存储空间,即在索引空间中进行分裂。具体地,将索引空间24中的索引页面分裂出更多的索引页面。例如,索引空间24中有一组索引页面,其中包括八个索引页面,且这原始的八个索引页面已经存满索引数据,若要存入新的索引数据,则需要将这八个索引页面分为两组,每组四个索引页面,再给这两组索引页面分别分配四个索引页面作为新的存储空间,即原始的一组索引页面分裂成两组索引页面,原始的八个索引页面分裂成两组共十六个索引页面,每组索引页面中包含八个索引页面,其中四个索引页面存储着既有数据,另外四个索引页面为数据库22新分配的存储空间,用于存储新的索引数据。
61.s307、若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间。
62.具体的,s307和s105的实现过程和原理一致,此处不再赘述。
63.本公开实施例通过对元组进行更新,获取更新后元组对应的索引数据;判断当前索引空间是否全部被占用;确认当前索引空间未被全部占用,将所述索引数据存入当前索引空间;若当前索引空间全部被占用,检查当前索引空间中是否有过期的索引数据,并删除所述过期的索引数据;判断清除后的索引空间是否出现空余空间;确认清除后的索引空间没有出现空余空间,在所述清除后的索引空间中进行分裂,得到分裂后的索引空间,将所述索引数据存入所述分裂后的索引空间;若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间,通过索引数据的存在时间是否超过预设时间对判断索引数据是否过期,并将过期的索引数据及时删除,清理出存储空间用于存放新的数据,显著减少了
索引空间中索引页面的分裂次数,一方面在数据频繁更新时节约了计算机的运算资源,另一方面避免索引空间中无用空间不断增长,造成存储空间的浪费,提高了数据库内存储空间的利用率。
64.图4为本公开另一实施例提供的索引空间处理方法流程图,如图4所示,该方法包括如下几个步骤:
65.s401、对元组进行更新,获取更新后元组对应的所应数据。
66.用户通过设备21进行操作,输入指令,数据库22根据该指令对相应的元组23进行更新。具体地,该更新可以是对已有元组的数据进行修改,或者插入新的元组,当对已有元组的数据进行修改时,在其对应的索引空间内保存新版本的索引数据,当插入新的元组时,创建与其对应的新的索引空间用于存储新插入元组的索引数据。元组23进行更新时,元组23对应的索引数据也会进行更新,获得新版本的索引数据,该新版本的索引数据需要另外保存在索引空间24中,同时更新前的元组23对应的索引数据仍在存在在索引空间24中,不会立即被数据库22删除。
67.s402、判断索引空间是否需要分裂。若是,执行s403;若否,执行s406。
68.在新版本的索引数据保存到索引空间24之前,数据库22对索引空间24进行检查,判断其中是否还有剩余的存储空间未被占用。若索引空间24中没有剩余的存储空间,则确认索引空间24需要分裂,执行s403;若索引空间24中有剩余的存储空间未被占用,则确认索引空间不需要分裂,执行s406。
69.s403、删除死元组对应的索引数据。
70.若索引空间24中没有剩余的存储空间,则确认索引空间24需要分裂,但在进行分裂前,数据库22先对索引空间24中的索引数据进行检查,通过索引数据的存入时间即可判断索引数据的版本以及其对应的元组中数据的版本,一般认为存在时间过长的元组版本为死元组,用户几乎不会再回滚到该版本,因此将存在超过预设时间的死元组对应的索引数据删除,即可将死元组对应的索引数据占用的索引空间中存储空间释放出来,用于存放新的索引数据。可以理解的是,所述预设时间可以是根据用户使用需要进行设置、调整,也可以是数据库根据数据更新的频率进行计算与设置。
71.s404、判断索引空间是否需要分裂。若是,执行s405;若否,执行s406。
72.数据库22对索引空间24中所有索引数据进行检查,并将符合预设条件的索引数据清除完成后,由于原有的索引数据中可能没有已经存在超过预设时间的索引数据,因此需要再次判断索引空间24中是否有剩余的存储空间未被占用,即判断经过清除后索引空间24中是否出现空余存储空间。若索引空间24中没有剩余的存储空间,即经过清除后索引空间24中没有出现空余存储空间,则确认索引空间24需要分裂,执行s405;若索引空间24中有剩余的存储空间未被占用,即经过清除后索引空间24中出现了空余存储空间,则确认索引空间24不需要分裂,执行s406。
73.s405、分裂索引空间。
74.索引空间24中没有剩余的存储空间来存储新的索引数据时,数据库22会分裂索引空间24,即分配新的存储空间给索引空间24。具体地,将索引空间24中的索引页面分裂出更多的索引页面。例如,索引空间24中有一组索引页面,其中包括八个索引页面,且这原始的八个索引页面已经存满索引数据,若要存入新的索引数据,则需要将这八个索引页面分为
两组,每组四个索引页面,再给这两组索引页面分别分配四个索引页面作为新的存储空间,即原始的一组索引页面分裂成两组索引页面,原始的八个索引页面分裂成两组共十六个索引页面,每组索引页面中包含八个索引页面,其中四个索引页面存储着既有数据,另外四个索引页面为数据库22新分配的存储空间,用于存储新的索引数据。
75.s406、存储索引数据。
76.数据库22将新的索引数据存储到索引空间24中。
77.s407、结束。
78.用户再次通过设备21进行操作,输入指令,数据库22接收到用户指令后,循环执行s401~s407。
79.本公开实施例通过在分裂存储空间前对原有存储数据增加一次检查与清除的操作,避免了每次对元组更新时,索引进行更新都会导致索引页面分裂,有效节省计算机运算资源,避免数据库中无用的空间增长,尤其是在对元组进行频繁更新时效果更为显著。
80.图5为本公开实施例提供的索引空间处理装置的结构示意图。该索引空间处理装置可以是如上实施例所述的数据库,或者该索引空间处理装置可以是该数据库中的部件或组件。本公开实施例提供的索引空间处理装置可以执行索引空间处理方法实施例提供的处理流程,如图5所示,索引空间处理装置500包括:获取模块510、第一确认模块520、清除模块540、第二确认模块550、第一存储模块570;其中,获取模块510用于对元组进行更新,获取更新后元组对应的索引数据;第一确认模块520用于判断当前索引空间是否全部被占用;清除模块540用于若当前索引空间全部被占用,则对当前索引空间中数据进行清除;第二确认模块550用于判断清除后的索引空间是否出现空余空间;第一存储模块570用于若清除后的索引空间出现空余空间,则将所述索引数据存入清除后的索引空间。
81.可选的,所述装置还包括第二存储模块530,用于确认当前索引空间未被全部占用,将所述索引数据存入当前索引空间。
82.可选的,所述清除模块540还用于检查当前索引空间中是否有过期的索引数据;删除所述过期的索引数据。
83.可选的,所述装置还包括第三存储模块560,用于确认清除后的索引空间没有出现空余空间,在所述清除后的索引空间中进行分裂,得到分裂后的索引空间;将所述索引数据存入所述分裂后的索引空间。
84.图5所示实施例的索引空间处理装置可用于执行上述索引空间处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
85.图6为本公开实施例提供的电子设备的结构示意图。本公开实施例提供的电子设备可以执行索引空间处理方法实施例提供的处理流程,如图6所示,电子设备设备60包括:存储器61、处理器62、计算机程序和通讯接口63;其中,计算机程序存储在存储器61中,并被配置为由处理器62执行如上所述的索引空间处理方法。
86.另外,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的索引空间处理方法。
87.此外,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如上所述的索引空间处理方法。
88.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一
个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
89.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献