CN114296658B - 一种存储空间分配方法、装置、终端设备及存储介质 - Google Patents
一种存储空间分配方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114296658B CN114296658B CN202111675882.8A CN202111675882A CN114296658B CN 114296658 B CN114296658 B CN 114296658B CN 202111675882 A CN202111675882 A CN 202111675882A CN 114296658 B CN114296658 B CN 114296658B
- Authority
- CN
- China
- Prior art keywords
- virtual
- block
- physical
- address
- data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012544 monitoring process Methods 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 description 18
- 238000007726 management method Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请适用于计算机技术领域,提供了一种存储空间分配方法、装置、终端设备及存储介质,其中,所述方法包括:基于数据库的各表对象的初始存储空间需求分配对应的第一虚拟地址块列表;获得第一对应关系,获得第二对应关系;监测表对象中数据的增删操作;基于第一和第二对应关系,获得表对象中第一数据所对应的第一虚拟地址以及第一物理地址;获得增删操作后第二数据的第二物理地址以及第二虚拟地址;更新第二物理地址及第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态。本申请通过为共享存储空间数据库中每一个表对象都提供了一个对应的虚拟地址块列表,并为各表对象动态管理共享存储空间空间,提升了共享存储空间的使用效率。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种存储空间分配方法、装置、终端设备及存储介质。
背景技术
目前在应用程序运行过程中,会不断进行内存的分配和释放。现有技术中,一般采用内存分配器(如malloc内存分配器)进行内存分配,内存分配器实行分页管理,将进程的虚拟地址空间分成若干具有预定尺寸的页,并加以编号(可基于逻辑地址空间的地址得到编号);相应的,计算机的物理内存也分成同样尺寸的块,并加以编号(可基于物理地址空间的地址得到编号);分页的大小一般为固定空间,例如为4KB。
还有现有技术对物理内存进行指定数目和指定大小的多个大页,再将大页分割为更小固定空间的内存块组成内存池,对内存池中的空闲内存块进行管理。
以上现有技术只能对进程进行固定空间的内存分配,有一部分小于固定空间的空闲内存不能得到有效使用,这不利于提高计算机的存储资源利用率,不利于提高计算机的性能。另外,传统内存分配方法还会产生大量的内存碎片,导致内存的使用效率降低和计算机性能降低。
发明内容
本申请实施例提供了一种存储空间分配的方法及装置,可以解决数据库中各表对象物理存储空间使用效率不足的问题。
第一方面,本申请实施例提供了一种共享存储空间数据库的存储空间分配方法,包括:
基于所述数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,所述第一虚拟地址块列表包括各第一预设空间的虚拟块;
基于第一预先设定的所述数据库中表对象与所述虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
监测所述表对象中数据在所述虚拟块中的增删操作;
根据监测到的所述增删操作,基于所述第一对应关系,获得所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,获得所述第一虚拟地址对应的第一物理块中的第一物理地址;
所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
在第一方面的一种可能的实现方式中,所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,包括:
在所述表对象中进行新增数据的操作获得第二数据;
若所述第一物理块中空闲物理存储空间小于所述第二数据中新增数据的空间,则将所述第二数据中新增数据依次写入所述物理存储空间中至少1个空闲物理块,并获得完全写入后的第二物理块中的第二物理地址;
基于所述第二对应关系,获得完全写入后的所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
将至少1个所述第二虚拟块依次加入到所述第一虚拟块之后形成连续编号的第二虚拟地址块列表。
在本申请的实施例中,所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,还包括:
在所述表对象中进行删除数据的操作获得第二数据;
若第一物理块中物理存储空间大于第二数据的空间,则基于删除数据后的第二数据的空间依次释放物理存储空间中至少1个占用物理块,并获得完全删除后的第二物理块中的第二物理地址;
基于第二对应关系,获得完全删除后的第二物理地址对应的第二虚拟块中的第二虚拟地址;
将至少1个第二虚拟块从第一虚拟块开始依次向前释放形成连续编号的第二虚拟地址列表。
在本申请的实施例中,基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态的步骤,包括:
所述表对象中进行新增数据的操作后,所述第二物理地址的存储状态从空闲更新为占用状态,所述第二物理地址所在的所述第二物理块的存储状态也从空闲更新为占用状态;
所述第二物理地址对应的所述第二虚拟地址的存储状态从空闲同步更新为占用状态,所述第二虚拟地址所在的所述第二虚拟块的存储状态也从空闲同步更新为占用状态。
在本申请的实施例中,基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态的步骤,还包括:
所述表对象中进行删除数据的操作后,将所述第二物理地址的存储状态继续设为占用状态,所述第二物理地址所在的所述第二物理块的存储状态也继续设为占用状态;
将第三物理地址的存储状态从占用更新为空闲状态,将所述第一物理地址所在的所述第一物理块的存储状态也从占用更新为空闲状态,所述第三物理地址为所述第一物理地址到所述第二物理地址之间的物理地址段;
将所述第二物理地址对应的所述第二虚拟地址的存储状态继续设为占用状态,所述第二物理地址所在的所述第二物理块对应的所述第二虚拟块的存储状态也继续设为占用状态;
将所述第三物理地址对应的第三虚拟地址的存储状态从占用同步更新为空闲状态,将所述第一虚拟地址所在的所述第一虚拟块的存储状态也从占用同步更新为空闲状态,所述第三虚拟地址为所述第一虚拟地址到所述第二虚拟地址之间的虚拟地址段。
在本申请的实施例中,基于第一预先设定的所述数据库中表对象与所述虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中物理块的对应关系获得第二对应关系的步骤之后,还包括:
并发地监测各所述表对象中数据在所述虚拟块中的增删操作;
根据并发地监测到的所述增删操作,基于所述第一对应关系,并发地获得各所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,并发地获得各所述第一虚拟地址对应的第一物理块中的第一物理地址;
并发地所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,并发地获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
基于并发地所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并发地同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
在本申请的实施例中,所述第一预设空间与所述第二预设空间相等,都设置为小于或者等于4MB;
所述预设长度设置为小于或者等于2147483648。
第二方面,本申请实施例提供了一种共享存储空间数据库的存储空间分配的装置,包括:
分配初始存储空间模块,用于基于所述数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,所述第一虚拟地址块列表包括各第一预设空间的虚拟块;
建立对应关系模块,用于基于第一预先设定的所述数据库中表对象与所述第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
监测增删操作模块,用于监测所述表对象中数据在所述虚拟块中的增删操作;
第一获取地址模块,用于根据监测到的所述增删操作,基于所述第一对应关系,获得所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,获得所述第一虚拟地址对应的第一物理块中的第一物理地址;
第二获取地址模块,用于所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
更新存储状态模块,用于基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
第三方面,本申请实施例提供了一种终端设备,包括:
存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面内容中任一项所述共享存储空间数据库的存储空间分配的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面内容中任一项所述共享存储空间数据库的存储空间分配的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述共享存储空间数据库的存储空间分配的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:
本申请的实施例通过为共享存储空间数据库中每一个表对象都提供了一个对应的虚拟地址块列表,并为各表对象动态管理共享存储空间空间,提升了共享存储空间的使用效率。本申请的实施例既可以按各表对象的固定大小进行存储空间分配,也可以按各表对象的指定大小进行动态存储空间分配。此外,本申请的实施例还能在回收存储空间时与相邻空闲块进行合并,以减少存储空间碎片,提高计算机的性能及存储资源利用率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种数据库的存储空间分配方法流程示意图;
图2是本申请一实施例提供的共享存储空间扩容时物理块和虚拟块映射示意图;
图3是本申请一实施例提供的S140步骤中新增数据时流程示意图;
图4是本申请一实施例提供的S140步骤中删除数据时流程示意图;
图5是本申请另一实施例提供的一种数据库的存储空间分配装置结构框架示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
下面通过具体的实施例来说明本申请的技术方案。
实施例1
现有技术中,任何一个数据库中表对象需要的存储空间是随着数据的写入和删除而不断发生变化的,而由操作***提供的存储空间分配过程不能适应这种动态变化,需要一种虚拟存储管理方案来解决上述问题。
如图1所示,本申请的实施例提供了一种共享存储空间数据库的存储空间分配方法,包括如下步骤:
S100,基于数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,第一虚拟地址块列表包括各第一预设空间的虚拟块;
S110,基于第一预先设定的数据库中表对象与第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
S120,监测表对象中数据在虚拟块中的增删操作;
S130,根据监测到的增删操作,基于第一对应关系,获得表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于第二对应关系,获得第一虚拟地址对应的第一物理块中的第一物理地址;
S140,增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,获得第二物理地址对应的第二虚拟块中的第二虚拟地址;
S150,基于增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态。
本实施例通过为共享存储空间数据库中每一个表对象都提供了一个对应的虚拟地址空间块列表,并对各表对象的共享存储空间空间的扩容和释放进行动态管理,实现了存储空间虚拟化管理,从而提升了共享存储空间的使用效率。本实施例既可以按各表对象的固定大小存储空间进行共享存储空间分配,也可以按各表对象的指定大小存储空间进行动态存储空间分配。此外,本实施例还能在各表对象释放存储空间时进行存储空间回收处理,且在回收存储空间时能与相邻空闲存储空间块进行合并,以减少共享存储空间的碎片,从而提高计算机的性能和共享存储空间的使用效率。
在本实施例中,存储空间不限于物理内存空间和共享物理内存空间,还包括磁盘、光盘、USB、移动硬盘等各种外部存储空间。
下面具体地按各个步骤说明本实施例的技术方案。
一种共享存储空间数据库的存储空间分配方法,包括如下步骤:
S100,基于数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,第一虚拟地址块列表包括各第一预设空间的虚拟块。
在本实施例中,当共享存储空间中数据库初始化时,数据库***根据数据库中各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,其中,第一虚拟地址块列表包括各第一预设空间的虚拟块,优选地,第一虚拟地址块列表至少包括1个第一个预设空间的虚拟块,所述虚拟块为虚拟地址块。
具体地,在本实施例中,“***”或“数据库***”指的是本实施例的数据库的管理***,负责整个数据库的运行管理,指数据库服务端的***。所述数据库***在Linux操作***环境中建立。
进一步地,在本实施例中,预设长度设置为小于或者等于2147483648,例如数据库***为数据库中每个表对象都分配一个虚拟地址空间,虚拟地址空间的序位一共有2147483648个,序位从0开始直到2147483647。这些序位组成了一个虚拟地址块列表,每个虚拟地址块包括指定数目的连续编号的序位,虚拟地址块列表中各个虚拟块的按照从0开始依次进行连续的编号,指定数目优选设置100个序位形成一个虚拟地址块,这样每个虚拟块能存储100条记录。而每个序位能存放的数据长度根据表对象结构定义的数据行长度来确定。数据库***为每个表对象初始分配至少1个虚拟块组成第一虚拟地址块列表,优选地,为每个表对象初始分配1个虚拟块。其中,每个虚拟块初始化时会预设空间大小,第一预设空间设置为小于或者等于4MB,优选地,第一预设空间设置为4MB。
将虚拟地址空间的序位数目设置为数值大于2亿的上限,能涵盖大部分行业的表对象的需求,避免序位数目设置过小造成不能满足部分行业的表对象的需求。将每个虚拟块的第一预设空间优选设置为4MB也能满足大部分行业的表对象的需求,避免设置过小而造成部分行业的表对象无法全部写入到一个虚拟块中,也避免了设置过大造成空间浪费,使得虚拟地址空间得到有效利用。
S110,基于第一预先设定的数据库中表对象与第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
具体地,在本实施例中,对数据库中表对象与第一虚拟地址块列表的虚拟块中各虚拟地址进行第一预先设定的对应关系,从而获得第一对应关系,对虚拟块与预分配的物理存储空间中物理块进行第二预先设定的对应关系,从而获得第二对应关系。其中,对物理存储空间进行分割形成多个物理块,对每个物理块进行第二预设空间的设置,第二预设空间设置为小于或者等于4MB,优选地,第二预设空间设置为4MB。
根据S110中的内容,例如如果某个表对象有150条记录,则一共有2个虚拟块,第一个虚拟块编号为“0”,第二个虚拟块编号为“1”,其中第1个虚拟块存储第1到第100条记录的虚拟地址,第2个虚拟块存储第101到第150条记录的虚拟地址,第1到第150条记录对应的虚拟地址为0到149,以上为第一预先设定。根据第一预先设定,则各表对象中的每条记录在第一虚拟地址块列表的虚拟块中都有各自对应的虚拟地址,而且能通过表对象中记录对应的虚拟地址序号准确找到对应的虚拟块以及虚拟块中具体的虚拟地址,以上第一对应关系。例如虚拟地址序号为123的记录,通过地址映射能计算到该记录存放在表对象中虚拟块号为“1”,块内地址偏移为23的虚拟空间中。
进一步地,在本实施例中,第一预设空间设置为和第二预设空间相等,都设置为4MB,每个物理块中也设为100个物理地址。将表对象已经分配并使用的每个物理块与表对象对应的每个虚拟块按从先到后的分配顺序一一进行对应,其中,数据库***给表对象提供数据存储功能时,是提供一个虚拟的连续地址空间,所以表对象的各个虚拟块编号也是连续编号,而表对象已经分配并使用的各物理块能为连续编号也能为不连续编号,是根据物理块的存储状态是否为空闲进行分配,以上为第二预先设定。根据第二预先设定,则每个第一编号物理块的开始地址与对应第二编号的虚拟块的开始地址进行相互映射,即每个物理块内的物理地址从开始到末尾的地址与对应虚拟块中的从开始到末尾的地址一一对应,以上为第二对应关系。
如图2所示,例如表对象的虚拟地址块列表中有从0到3连续编号的4个虚拟块,其中编号“0”的虚拟块对应编号为“2”的物理块,编号“1”的虚拟块对应编号为“7”的物理块,编号“2”的虚拟块对应编号为“0”的物理块,编号“3”的虚拟块对应编号为“5”的物理块,这4个物理块的编号为不连续编号。例如上述的虚拟地址序号为123的记录,通过地址映射能计算到该记录存放在表对象中虚拟块号为“1”,块内地址偏移为23的虚拟地址中。基于第二预先设定和第二对应关系,将虚拟块号映射为物理块号,则将表对象中虚拟块号为“1”的虚拟块映射到共享物理存储空间中物理块号为“7”的块,所以虚拟地址序号为123的记录实际的物理地址为7×100+23=723,从物理地址为723的位置上可以读取出相应的记录内容。
具体的地址映射计算过程为:
首先计算记录所在的虚拟块号;
例如,采用int iBlockNo=123/100=1;//虚拟块号为1的方式获得虚拟块号。
然后计算记录所在块内的地址偏移量;
例如,采用int iBitNo=123%100=23;//块内偏移为23的方式获得块内地址偏移量。
再根据第二预先设定和第二对应关系获得记录所在实际的物理地址位置;
例如,基于第二预先设定和第二对应关系,获得实际的物理地址为723位置。
S120,监测表对象中数据在虚拟块中的增删操作;
具体地,数据库***检测表对象中各条数据记录在物理块中的增加数据或者删除数据操作,以便根据增删操作的结果随时进行存储空间的分配或者释放,以提高共享存储空间的使用效率,提升计算机的性能。在本实施例中,由于查询数据记录的操作并不会造成表对象存储空间的变化,所以没有进行检测,以便节约计算机的资源。
S130,根据监测到的增删操作,基于第一对应关系,获得表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于第二对应关系,获得第一虚拟地址对应的第一物理块中的第一物理地址;
具体地,在本实施例中,根据检测到的增删操作,基于第一对应关系,能够获得表对象在增删操作开始时表对象中第一数据所对应的第一虚拟块中的第一虚拟地址。即增删操作表对象中数据记录才刚开始,基于第一对应关系,能获得增删操作前数据记录对应的虚拟块号和块内的虚拟地址。例如,要对虚拟地址序位为390的数据记录进行增删操作,则基于第一对应关系,获得虚拟地址序位为390的数据记录的虚拟块编号为“3”,块内地址偏移量为90,则第一数据为虚拟地址序位为390的数据记录,第一虚拟块为编号为“3”的虚拟块,第一虚拟地址为编号“3”虚拟块块内地址偏移量为90。
具体地,在本实施例中,基于第二对应关系,获得第一数据的第一虚拟地址对应的第一物理块中的第一物理地址。例如,第一虚拟地址为编号“3”虚拟块块内地址偏移量为90,所对应的第一物理块为编号“5”的物理块,第一物理块中的第一物理地址为编号“5”物理块块内地址偏移量为90。
S140,增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,获得第二物理地址对应的第二虚拟块中的第二虚拟地址;
具体地,在本实施例中,对于第一数据进行增删操作后的数据形成第二数据,由于增删操作是在物理块内操作,这样增删操作后的第二数据就能获得第二物理块中的第二物理地址,再基于第二对应关系,也能获得第二物理地址对应的第二虚拟块中的第二虚拟地址。在本实施例中,增删操作包括增加数据或者删除数据的操作,两个操作均能导致第一数据的共享存储空间发生变化,增删操作后的第二数据的共享存储空间与第一数据的共享存储空间大小是不同的。所以增删操作后的第二数据的第二物理块中的第二物理地址,以及对应的第二虚拟块中的第二虚拟地址与原来第一数据的物理地址及虚拟地址相比,均发生了变化。
具体地,在本实施例中,增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,获得第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,包括如下步骤:
S1411,在表对象中进行新增数据的操作获得第二数据;
S1412,若第一物理块中空闲物理存储空间小于第二数据中新增数据的空间,则将第二数据中新增数据依次写入物理存储空间中至少1个空闲物理块,并获得完全写入后的第二物理块中的第二物理地址;
S1413,基于第二对应关系,获得完全写入后的第二物理地址对应的第二虚拟块中的第二虚拟地址;
S1414,将至少1个第二虚拟块依次加入到第一虚拟块之后形成连续编号的第二虚拟地址块列表。
具体地,如图3所示,在本实施例中,首先在表对象中进行新增数据的操作获得表对象中的新的数据记录形成第二数据,所述新增数据的操作包括***新的数据、以及修改增加新的数据。对原有表对象中的第一数据进行新增数据的操作会导致表对象中第一数据的共享存储空间增加,需要对第一数据的共享存储空间进行扩容。
其次,对第一数据所在的第一物理块中空闲物理存储空间进行判断,若第一物理块的空闲物理存储空间小于第二数据中新增数据的空间,则将第二数据中新增数据依次写入物理存储空间中首个空闲物理块获得第二物理块中的第二物理地址,实现了对第二数据的物理存储空间扩容。如果第二数据中新增数据过于庞大,超过了一个空闲物理块的空间,则第二数据中新增数据写满物理存储空间中首个空闲物理块获得第二物理块中的第二物理地址后,继续在物理存储空间中寻找空闲物理块队列中首个空闲物理块,并将未写完的新增数据继续依次写入新的空闲物理块,直到将第二数据中新增数据全部写入空闲物理块中,并将第二物理块及块内第二物理地址更新为最后一个空闲物理块及块内物理地址,从而获得第二数据最新的第二物理块及块内的第二物理地址。
然后,基于第二对应关系,第二数据中新增数据获得第二物理地址对应的第二虚拟块中的第二虚拟地址。这样第二数据中新增数据在物理存储空间扩容后的第二物理地址通过第二对应关系能获得虚拟地址空间中新的第二虚拟块以及块内的第二虚拟地址,从而实现第二数据在虚拟地址空间的扩容。
若第二数据中新增数据写入的空闲物理块超过1个,则将第二数据中新增数据完全写入后的空闲物理块及块内物理地址为第二物理块中的第二物理地址,在第二数据中新增数据不断写入空闲物理块的过程中,基于第二对应关系,也不断的在虚拟地址空间获得新的第二虚拟块以及块内的第二虚拟地址,从而实现第二数据在虚拟地址空间的连续扩容。
最后,将至少1个第二虚拟块依次加入到第一虚拟块之后形成连续编号的第二虚拟地址块列表。第二数据虚拟地址空间扩容后产生了新的第二虚拟块以及块内第二虚拟地址,为了保持表对象中数据的连续性,将第二虚拟块加入到第一虚拟地址块列表中第一数据对应的第一虚拟块之后,同时第二虚拟块块号在第一虚拟块块号基础上增加1,从而形成连续编号的第二虚拟地址块列表。
若第二数据中新增数据写入的空闲物理块超过1个,则写入过程中第二虚拟块也会超过1个,会不断的在虚拟地址空间获得新的第二虚拟块以及块内的第二虚拟地址,不断产生的新的第二虚拟块依次加入到第一虚拟块之后形成连续编号的第二虚拟地址块列表,从而保持表对象中数据在虚拟地址空间中的连续性。
例如,第一数据为虚拟地址序位为390的数据记录,第一虚拟块块号为“3”,块内虚拟地址偏移量为90,第一物理块块号为“5”,块内虚拟地址偏移量为90,空闲物理地址还有10个,由于一个物理块设为4MB,则剩余的空闲存储空间约为0.4MB,现在对第一数据进行新增数据的操作从而获得第二数据。
若新增数据的空间大于0.4MB但小于4MB,物理块“5”中的空闲物理存储空间小于第二数据中新增数据的空间,若***存储区中前面10个物理块已经分配出去了,***存储区中首个空闲物理块为块号“10”,则第二数据中的新增数据写满物理块“5”后继续依次写入到物理块“10”中,从而获得完全写入后的第二物理块“10”及块内的第二物理地址。
基于第二对应关系,完全写入后的第二物理块“10”及块内的第二物理地址对应为第二虚拟块及块内第二虚拟地址。
再将第二虚拟块加入到第一虚拟块“3”之后,并根据连续编号的规则,第二虚拟块编号变为“4”,形成5个连续编号虚拟块的第二虚拟地址块列表。
若新增数据的空间大于4MB,如上述实施例,则新增数据依次写入的空闲物理块大于1个,对应的第二虚拟块也会大于1个,最终形成大于5个连续编号虚拟块的第二虚拟地址块列表。
具体地,在本申请的实施例中,增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,获得第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,还包括如下步骤:
S1421,在表对象中进行删除数据的操作获得第二数据;
S1422,若第一物理块中物理存储空间大于第二数据的空间,则基于删除数据后的第二数据的空间依次释放物理存储空间中至少1个占用物理块,并获得完全删除后的第二物理块中的第二物理地址;
S1423,基于第二对应关系,获得完全删除后的第二物理地址对应的第二虚拟块中的第二虚拟地址;
S1424,将至少1个第二虚拟块从第一虚拟块开始依次向前释放形成连续编号的第二虚拟地址列表。
具体地,如图4所示,在本实施例中,首先在表对象中进行删除数据的操作获得表对象中的新的数据记录形成第二数据,所述删除数据的操作包括删除新的数据。对原有表对象中的第一数据进行删除数据的操作会导致表对象中第一数据占用的共享存储空间减少,需要对第一数据的空闲共享存储空间进行释放。
其次,对第一数据所在的第一物理块中空闲物理存储空间进行判断,若第一物理块中物理存储空间大于第二数据的空间,则将第二数据所在的第二物理地址及第二物理块中空闲物理存储空间释放,实现了对第二数据的物理存储空间释放,减少了第二数据占用的共享存储空间,释放的空闲存储空间便于其他表对象或其他数据记录使用,提高了共享存储空间的使用效率,提升了计算机的性能;
如果删除数据比较庞大,大于一个物理块的第二预设空间,则释放的空闲物理存储空间大于1个物理块,释放的空闲物理存储空间按第二数据之前占用的物理地址从后向前依次释放,直到将全部的空闲物理存储空间都释放完,并将第二物理块及块内第二物理地址更新为最后一个释放的空闲物理块及块内物理地址,从而获得第二数据最新的第二物理块及块内的第二物理地址。
然后,基于第二对应关系,删除数据后的第二数据获得第二物理地址对应的第二虚拟块中的第二虚拟地址。这样第二数据在物理存储空间释放后的第二物理地址通过第二对应关系获得虚拟地址空间中新的第二虚拟块中的第二虚拟地址,并将第二虚拟地址及第二虚拟块中空闲虚拟地址释放,从而实现第二数据在虚拟地址空间的释放。
如果删除数据比较庞大,大于一个物理块的第二预设空间,则将删除数据操作中完全删除后第二数据所在物理块及块内物理地址设为第二物理块中的第二物理地址。在不断进行删除数据的过程中,基于基于第二对应关系,也不断的在虚拟地址空间获得新的第二虚拟块以及块内的第二虚拟地址,从而实现第二数据在虚拟地址空间的连续释放。
最后,将至少1个第二虚拟块从第一虚拟块开始依次向前释放形成连续编号的第二虚拟地址列表。第二数据虚拟地址空间释放后产生了新的第二虚拟块以及块内第二虚拟地址,为了保持表对象中数据的连续性,将第二虚拟块从第一虚拟地址块列表中第一数据对应的第一虚拟块开始依次向前释放,同时第二虚拟块块号在第一虚拟块块号基础上减少1,从而形成连续编号的第二虚拟地址列表。
若删除数据后的第二数据释放的占用物理块超过1个,则删除过程中第二虚拟块也会超过1个,会不断的在虚拟地址空间获得新的第二虚拟块以及块内的第二虚拟地址,不断产生的新的第二虚拟块从第一虚拟块开始依次向前释放形成连续编号的第二虚拟地址块列表,从而保持表对象中数据在虚拟地址空间中的连续性。
上述技术方案的具体实施例过程不再赘述。
S150,基于增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态。
具体地,在本实施例中,增删操作后的第二数据所在第二物理地址的存储状态为占用或者空闲,故也需要根据占用或空闲物理存储空间的空间来更新第二物理块的存储状态,并同步对应更新第二虚拟地址及第二虚拟块的存储状态。
进一步地,在本实施例中,基于增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态的步骤,包括:
S1511,表对象中进行新增数据的操作后,第二物理地址的存储状态从空闲更新为占用状态,第二物理地址所在的第二物理块的存储状态也从空闲更新为占用状态;
S1512,第二物理地址对应的第二虚拟地址的存储状态从空闲同步更新为占用状态,第二虚拟地址所在的第二虚拟块的存储状态也从空闲同步更新为占用状态。
具体地,在本实施例中,表对象中进行新增数据的操作后,第二数据已经占用了第二物理地址和第二物理地址所在的第二物理块,故在***存储区中需要将第二物理地址从空闲状态更新为占用状态,也把第二物理地址所在的第二物理块的存储状态也从空闲状态更新为占用状态。
基于第二对应关系,也把第二物理地址对应的虚拟地址空间中第二虚拟地址的存储状态从空闲状态同步更新为占用状态,并把第二虚拟地址所在的第二虚拟块的存储状态也从空闲状态同步更新为占用状态。
例如,如图2所示,物理块“10”被占用后,则需要把物理块“10”从原来的空闲状态更新为占用状态,而物理块“10”对应的虚拟块“4”也同步从原来的空闲状态更新为占用状态。
如果被占用的物理块超过1个,也依次进行存储状态的更新。
进一步地,在本实施例中,基于增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态的步骤,还包括:
S1521,表对象中进行删除数据的操作后,将第二物理地址的存储状态继续设为占用状态,第二物理地址所在的第二物理块的存储状态也继续设为占用状态;
S1522,将第三物理地址的存储状态从占用更新为空闲状态,将第一物理地址所在的第一物理块的存储状态也从占用更新为空闲状态,第三物理地址为第一物理地址到第二物理地址之间的物理地址段;
S1523,将第二物理地址对应的第二虚拟地址的存储状态继续设为占用状态,第二物理地址所在的第二物理块对应的第二虚拟块的存储状态也继续设为占用状态;
S1524,将第三物理地址对应的第三虚拟地址的存储状态从占用同步更新为空闲状态,将第一虚拟地址所在的第一虚拟块的存储状态也从占用同步更新为空闲状态,第三虚拟地址为第一虚拟地址到第二虚拟地址之间的虚拟地址段。
具体地,在本实施例中,首先,表对象中进行删除数据的操作后,第二数据占用的第二物理地址继续保持为占用状态,而第二物理地址所在的第二物理块也继续保持为占用状态;
其次,由于第二数据占用的物理存储空间小于第一物理块的物理存储空间,故需要将删除数据后多余的空闲物理存储空间进行释放,以便让共享存储空间的使用更有效率。故将释放的第一物理地址到第二物理地址之间的物理地址段定义为第三物理地址,将将第三物理地址的存储状态从原来的占用状态更新为空闲状态。由于原来的第一物理地址已经空闲,第二物理地址已经不在第一物理块中,故将第一物理地址所在的第一物理块的存储状态也从占用更新为空闲状态。
此外,若删除数据的空间比较小,导致第二物理地址还在第一物理块中,此时第二物理块等于第一物理块,继续设置第二物理块为占用状态,则会造成第一物理块也继续保持为占用状态,无法得到释放。
然后,由于第二对应关系,第二物理地址的存储状态为占用状态,那对应的第二虚拟地址的存储状态也一样继续设为占用状态,由于第二物理地址所在的第二物理块的存储状态也是占用状态,那对应的第二虚拟块的存储状态也一样继续设为占用状态。
最后,将第一虚拟地址到第二虚拟地址之间的虚拟地址段设为第三虚拟地址,基于第二对应关系,第三物理地址对应第三虚拟地址,由于第三物理地址的存储状态从占用同步更新为了空闲状态,那对应的第三虚拟地址的存储状态也一样从占用同步更新为空闲状态。同时由于第二虚拟地址不在第一虚拟块中,第一虚拟地址已经为空闲状态,所以将第一虚拟地址所在的第一虚拟块的存储状态也从占用同步更新为空闲状态。
此外,若删除数据的空间比较小,导致第二虚拟地址还在第一虚拟块中,此时第二虚拟块等于第一虚拟块,继续设置第二虚拟块为占用状态,则会造成第一虚拟块也继续保持为占用状态,无法得到释放。
上述技术方案的具体实施例过程不再赘述。
此外,在本实施例中,基于第一预先设定的数据库中表对象与虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的虚拟块与预分配的物理存储空间中物理块的对应关系获得第二对应关系的步骤之后,还包括如下步骤:
S1210,并发地监测各表对象中数据在虚拟块中的增删操作;
S1220,根据并发地监测到的增删操作,基于第一对应关系,并发地获得各表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于第二对应关系,并发地获得各第一虚拟地址对应的第一物理块中的第一物理地址;
S1230,并发地增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,并发地获得第二物理地址对应的第二虚拟块中的第二虚拟地址;
S1240,基于并发地增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并发地同步更新第二虚拟地址及第二虚拟块的存储状态。
在本实施例中,各步骤技术方案和上述S120、S130、S140、S150的技术方案基本相同,区别在于上述S120、S130、S140、S150主要为单个表对象中数据进行增删操作的共享存储空间分配方法,而S1210、S1220、S1230、S1240的技术方案主要是可以为并发地多个表对象中数据进行增删操作的共享存储空间分配方法。
进一步地,本实施例还提供了一种共享内存数据库的内存分配方法,包括以下步骤:
基于所述数据库的各表对象的初始内存需求分配对应的预设长度的第一虚拟地址块列表,所述第一虚拟地址块列表包括各第一预设空间的虚拟块;
基于第一预先设定的所述数据库中表对象与所述第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理内存中第二预设空间物理块的对应关系获得第二对应关系;
监测所述表对象中数据在所述虚拟块中的增删操作;
根据监测到的所述增删操作,基于所述第一对应关系,获得所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,获得所述第一虚拟地址对应的第一物理块中的第一物理地址;
所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
由于共享内存的空间有限,当多程序并发地访问共享内存数据库时,采用本实施例的方法能更为有效的动态管理数据库中表对象的内存空间大小,能提高共享内存的利用率,提升计算机的性能。
本实施例与现有技术相比存在的有益效果是:
本实施例能为数据库中各表对象创建一个虚拟的存储空间,虚拟的存储空间根据表对象的大小进行预设,表对象实际分配的物理存储空间是随着数据写入或删除而动态增加和收缩的,解决了***中的物理存储空间使用效率不足及存储空间产生碎片的问题,实现了数据存储虚拟化管理。
本实施例通过为数据库中每一个表对象都提供了一个对应的虚拟地址块列表,并为各表对象动态管理共享存储空间空间,能为各表对象采用动态分配和动态释放共享存储空间,并且采用虚拟地址空间和物理存储空间相互映射,可以对虚拟地址空间和物理存储空间分别管理,也能根据映射关***一管理。
本实施例既可以按各表对象的固定大小进行存储空间分配和释放,也可以按各表对象的指定大小进行动态存储空间分配和释放,由于虚拟地址空间是连续的虚拟块列表,故扩容后多块物理存储空间可以通过映射关系仍然形成一个连续的物理存储空间,数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低,提升了共享存储空间的使用效率。
同时,本实施例还能在多个程序连接到共享存储空间数据是,每个程序打开的共享存储空间已经全部被映射到各程序中虚拟地址空间中,并被加载到各个客户端程序中,各程序访问数据库相当于在自己程序内部中访问数据库,各个表对象的共享存储空间扩容后,各个进程无需重新映射共享存储空间到程序的虚拟地址空间中,提高了数据库中的各表对象在扩容期间多进程访问数据库的访问效率并降低了数据库各表对象共享存储空间扩容管理的复杂性,提升了计算机的性能。
此外,本申请的实施例还能在回收存储空间时与相邻空闲块进行合并,以减少存储空间碎片,提升了计算机的性能。
实施例2
第二方面,如图5所示,本实施例提供了一种共享存储空间数据库的存储空间分配的装置,包括:
分配初始存储空间模块,用于基于数据库的各表对象的初始存储空间需求分配对应的预设长度的虚拟地址块列表,虚拟地址块列表包括各第一预设空间的虚拟块;
建立对应关系模块,用于基于第一预先设定的数据库中表对象与虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
监测增删操作模块,用于监测表对象中数据在虚拟块中的增删操作;
第一获取地址模块,用于根据监测到的增删操作,基于第一对应关系,获得表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于第二对应关系,获得第一虚拟地址对应的第一物理块中的第一物理地址;
第二获取地址模块,用于增删操作后的第二数据获得第二物理块中的第二物理地址,并基于第二对应关系,获得第二物理地址对应的第二虚拟块中的第二虚拟地址;
更新存储状态模块,用于基于增删操作后的第二物理地址的存储状态,更新第二物理块的存储状态,并同步更新第二虚拟地址及第二虚拟块的存储状态。
本实施例与现有技术相比存在的有益效果是:
本实施例通过提供一种共享存储空间数据库的存储空间分配的装置,为共享存储空间数据库中每一个表对象都提供了一个对应的虚拟地址块列表,并为各表对象动态管理共享存储空间空间,能为各表对象采用动态分配和动态释放共享存储空间,并且采用虚拟地址空间和物理存储空间相互映射,可以对虚拟地址空间和物理存储空间分别管理,也能根据映射关***一管理。
本实施例既可以按各表对象的固定大小进行存储空间分配和释放,也可以按各表对象的指定大小进行动态存储空间分配和释放,由于虚拟地址空间是连续的虚拟块列表,故扩容后多块物理存储空间可以通过映射关系仍然形成一个连续的物理存储空间,数据库在存取数据时,不用跨段查找,扩容前后,性能不会降低,提升了共享存储空间的使用效率。
同时,本实施例还能在多个程序连接到共享存储空间数据时,每个程序打开的共享存储空间已经全部被映射到各程序中虚拟地址空间中,并被加载到各个客户端程序中,各程序访问数据库相当于在自己程序内部中访问数据库,各个表对象的共享存储空间扩容后,各个进程无需重新映射共享存储空间到程序的虚拟地址空间中,提高了数据库中的各表对象在扩容期间多进程访问数据库的访问效率并降低了数据库各表对象共享存储空间扩容管理的复杂性,提升了计算机的性能。
此外,本申请的实施例还能在回收存储空间时与相邻空闲块进行合并,以减少存储空间碎片,提升了计算机的性能。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
实施例3
第三方面,本申请实施例提供了一种终端设备,包括:
存储器、处理器以及存储在存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面内容中任一项所述共享存储空间数据库的存储空间分配的方法。
实施例4
第四方面,本申请实施例提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面内容中任一项所述共享存储空间数据库的存储空间分配的方法。
实施例5
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述共享存储空间数据库的存储空间分配的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例提供的一种数据库的存储空间分配的方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。
所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据库的存储空间分配方法,其特征在于,包括:
基于所述数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,所述第一虚拟地址块列表包括各第一预设空间的虚拟块;
基于第一预先设定的所述数据库中表对象与所述第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
监测所述表对象中数据在所述虚拟块中的增删操作;
根据监测到的所述增删操作,基于所述第一对应关系,获得所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,获得所述第一虚拟地址对应的第一物理块中的第一物理地址;
所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
2.如权利要求1所述的数据库的存储空间分配方法,其特征在于,所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,包括:
在所述表对象中进行新增数据的操作获得第二数据;
若所述第一物理块中空闲物理存储空间小于所述第二数据中新增数据的空间,则将所述第二数据中新增数据依次写入所述物理存储空间中至少1个空闲物理块,并获得完全写入后的第二物理块中的第二物理地址;
基于所述第二对应关系,获得完全写入后的所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
将至少1个所述第二虚拟块依次加入到所述第一虚拟块之后形成连续编号的第二虚拟地址块列表。
3.如权利要求1所述的数据库的存储空间分配方法,其特征在于,所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址的步骤,还包括:
在所述表对象中进行删除数据的操作获得第二数据;
若第一物理块中物理存储空间大于第二数据的空间,则基于删除数据后的第二数据的空间依次释放物理存储空间中至少1个占用物理块,并获得完全删除后的第二物理块中的第二物理地址;
基于第二对应关系,获得完全删除后的第二物理地址对应的第二虚拟块中的第二虚拟地址;
将至少1个第二虚拟块从第一虚拟块开始依次向前释放形成连续编号的第二虚拟地址列表。
4.如权利要求1所述的数据库的存储空间分配方法,其特征在于,基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态的步骤,包括:
所述表对象中进行新增数据的操作后,所述第二物理地址的存储状态从空闲更新为占用状态,所述第二物理地址所在的所述第二物理块的存储状态也从空闲更新为占用状态;
所述第二物理地址对应的所述第二虚拟地址的存储状态从空闲同步更新为占用状态,所述第二虚拟地址所在的所述第二虚拟块的存储状态也从空闲同步更新为占用状态。
5.如权利要求1所述的数据库的存储空间分配方法,其特征在于,基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态的步骤,还包括:
所述表对象中进行删除数据的操作后,将所述第二物理地址的存储状态继续设为占用状态,所述第二物理地址所在的所述第二物理块的存储状态也继续设为占用状态;
将第三物理地址的存储状态从占用更新为空闲状态,将所述第一物理地址所在的所述第一物理块的存储状态也从占用更新为空闲状态,所述第三物理地址为所述第一物理地址到所述第二物理地址之间的物理地址段;
将所述第二物理地址对应的所述第二虚拟地址的存储状态继续设为占用状态,所述第二物理地址所在的所述第二物理块对应的所述第二虚拟块的存储状态也继续设为占用状态;
将所述第三物理地址对应的第三虚拟地址的存储状态从占用同步更新为空闲状态,将所述第一虚拟地址所在的所述第一虚拟块的存储状态也从占用同步更新为空闲状态,所述第三虚拟地址为所述第一虚拟地址到所述第二虚拟地址之间的虚拟地址段。
6.如权利要求1所述的数据库的存储空间分配方法,其特征在于,基于第一预先设定的所述数据库中表对象与所述虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中物理块的对应关系获得第二对应关系的步骤之后,还包括:
并发地监测各所述表对象中数据在所述虚拟块中的增删操作;
根据并发地监测到的所述增删操作,基于所述第一对应关系,并发地获得各所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,并发地获得各所述第一虚拟地址对应的第一物理块中的第一物理地址;
并发地所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,并发地获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
基于并发地所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并发地同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
7.如权利要求1至6中任一项所述的数据库的存储空间分配方法,其特征在于,
所述第一预设空间与所述第二预设空间相等,都设置为小于或者等于4MB;
所述预设长度设置为小于或者等于2147483648。
8.一种数据库的存储空间分配的装置,其特征在于,包括:
分配初始存储空间模块,用于基于所述数据库的各表对象的初始存储空间需求分配对应的预设长度的第一虚拟地址块列表,所述第一虚拟地址块列表包括各第一预设空间的虚拟块;
建立对应关系模块,用于基于第一预先设定的所述数据库中表对象与所述第一虚拟地址块列表的虚拟块中各虚拟地址的对应关系获得第一对应关系,基于第二预先设定的所述虚拟块与预分配的物理存储空间中第二预设空间物理块的对应关系获得第二对应关系;
监测增删操作模块,用于监测所述表对象中数据在所述虚拟块中的增删操作;
第一获取地址模块,用于根据监测到的所述增删操作,基于所述第一对应关系,获得所述表对象中第一数据所对应的第一虚拟块中的第一虚拟地址,基于所述第二对应关系,获得所述第一虚拟地址对应的第一物理块中的第一物理地址;
第二获取地址模块,用于所述增删操作后的第二数据获得第二物理块中的第二物理地址,并基于所述第二对应关系,获得所述第二物理地址对应的第二虚拟块中的第二虚拟地址;
更新存储状态模块,用于基于所述增删操作后的所述第二物理地址的存储状态,更新所述第二物理块的存储状态,并同步更新所述第二虚拟地址及所述第二虚拟块的存储状态。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述数据库的存储空间分配的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据库的存储空间分配的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111675882.8A CN114296658B (zh) | 2021-12-31 | 2021-12-31 | 一种存储空间分配方法、装置、终端设备及存储介质 |
PCT/CN2022/125973 WO2023124423A1 (zh) | 2021-12-31 | 2022-10-18 | 一种存储空间分配方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111675882.8A CN114296658B (zh) | 2021-12-31 | 2021-12-31 | 一种存储空间分配方法、装置、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114296658A CN114296658A (zh) | 2022-04-08 |
CN114296658B true CN114296658B (zh) | 2024-06-21 |
Family
ID=80975636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111675882.8A Active CN114296658B (zh) | 2021-12-31 | 2021-12-31 | 一种存储空间分配方法、装置、终端设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114296658B (zh) |
WO (1) | WO2023124423A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114296658B (zh) * | 2021-12-31 | 2024-06-21 | 深圳市兆珑科技有限公司 | 一种存储空间分配方法、装置、终端设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583979A (zh) * | 2012-09-27 | 2015-04-29 | 英特尔公司 | 动态物理存储器分区技术 |
CN105868028A (zh) * | 2015-01-23 | 2016-08-17 | 华为技术有限公司 | 一种进程间共享数据的方法、装置及终端 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004038828A (ja) * | 2002-07-08 | 2004-02-05 | Yuitoku Go | データ記憶媒体のメモリスペースを複数の仮想分割エリアに分割する方法 |
CN102405460B (zh) * | 2009-02-11 | 2016-05-04 | 艾梵尼达有限公司 | 虚拟存储***及其运行方法 |
US20140019706A1 (en) * | 2012-07-16 | 2014-01-16 | Infinidat Ltd. | System and method of logical object management |
CN109086002A (zh) * | 2018-06-28 | 2018-12-25 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
CN109508150B (zh) * | 2018-11-13 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种存储空间分配的方法和装置 |
CN110955488A (zh) * | 2019-09-10 | 2020-04-03 | 中兴通讯股份有限公司 | 一种持久性内存的虚拟化方法及*** |
CN113094003B (zh) * | 2021-05-12 | 2022-12-09 | 湖南国科微电子股份有限公司 | 数据处理方法、数据存储装置及电子设备 |
CN114296658B (zh) * | 2021-12-31 | 2024-06-21 | 深圳市兆珑科技有限公司 | 一种存储空间分配方法、装置、终端设备及存储介质 |
-
2021
- 2021-12-31 CN CN202111675882.8A patent/CN114296658B/zh active Active
-
2022
- 2022-10-18 WO PCT/CN2022/125973 patent/WO2023124423A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583979A (zh) * | 2012-09-27 | 2015-04-29 | 英特尔公司 | 动态物理存储器分区技术 |
CN105868028A (zh) * | 2015-01-23 | 2016-08-17 | 华为技术有限公司 | 一种进程间共享数据的方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
WO2023124423A1 (zh) | 2023-07-06 |
CN114296658A (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
US10761731B2 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
EP3309685B1 (en) | Method and apparatus for writing data to cache | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
KR20070075640A (ko) | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 | |
CN112306415B (zh) | Gc流控方法、装置、计算机可读存储介质及电子设备 | |
CN108304259B (zh) | 内存管理方法及*** | |
EP3865992A2 (en) | Distributed block storage system, method, apparatus and medium | |
CN110858162A (zh) | 内存管理方法及装置、服务器 | |
CN112148736B (zh) | 缓存数据的方法、设备及存储介质 | |
CN114296658B (zh) | 一种存储空间分配方法、装置、终端设备及存储介质 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN114676072A (zh) | 数据处理方法以及装置 | |
WO2012008731A2 (ko) | 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
CN117130955A (zh) | 用于管理相关联的存储器的方法和*** | |
CN113778688B (zh) | 内存管理***、内存管理方法、内存管理装置 | |
CN110658999B (zh) | 一种信息更新方法、装置、设备及计算机可读存储介质 | |
US20160335198A1 (en) | Methods and system for maintaining an indirection system for a mass storage device | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN117093508B (zh) | 一种内存资源管理方法、装置、电子设备及存储介质 | |
WO2022021337A1 (zh) | 闪存控制方法和装置 | |
CN111813327B (zh) | 存储器***、存储器控制器和检测半匹配的方法 | |
CN114661238B (zh) | 带缓存的存储***空间回收的方法及应用 | |
CN117093160B (zh) | Cache的数据处理方法、装置、计算机设备和介质 |
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 | ||
GR01 | Patent grant |