存储空间估算方法、装置、电子设备及可读存储介质转让专利

申请号 : CN202010729779.6

文献号 : CN113296689B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 金天波沈国权吕政吴宇昊谢小龙

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本公开实施例公开了一种存储空间估算方法、装置、电子设备及可读存储介质。其中,存储空间估算方法包括:基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;将所述结果数据写入估计出的第一存储空间;基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间,从而在保证空间使用效率的同时保证整体计算性能。

权利要求 :

1.一种存储空间估算方法,其特征在于,包括:基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;

将所述结果数据写入估计出的第一存储空间;

基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间,其中,所述基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间,包括:

将记录所述数据的数据表划分为第一数据块组;

从所述第一数据块组中抽取出第二数据块组;

对所述第二数据块组中的数据块进行计算得到第三数据块组;

计算存储所述第三数据块组中的结果数据块的空间容量的平均值;

利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。

2.根据权利要求1所述的方法,其特征在于,所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间,包括:

申请所述第一存储空间。

3.根据权利要求1所述的方法,其特征在于,所述将记录所述数据的数据表划分为第一数据块组,包括:

将所述数据表平均划分为所述第一数据块组。

4.根据权利要求1所述的方法,其特征在于,从所述第一数据块组中抽取出第二数据块组,包括:

从所述第一数据块组中随机抽取出所述第二数据块组。

5.根据权利要求1所述的方法,还包括:当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存储空间合并,得到第三存储空间。

6.根据权利要求5所述的方法,其特征在于,所述将所述第一存储空间和所述第二存储空间合并,得到第三存储空间,包括:删除所述第一存储空间中未被所述第四数据块组中的结果数据块占用的空间。

7.一种存储空间估算装置,其特征在于,包括:第一存储空间估算模块,被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;

第一存储空间写入模块,被配置为将所述结果数据写入估计出的第一存储空间;

第二存储空间写入模块,被配置基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间,其中,所述第一存储空间估算模块还被配置为:将记录所述数据的数据表划分为第一数据块组;

从所述第一数据块组中抽取出第二数据块组;

对所述第二数据块组中的数据块进行计算得到第三数据块组;

计算存储所述第三数据块组中的结果数据块的空间容量的平均值;

利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。

8.根据权利要求7所述的装置,其特征在于,所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间,包括:

申请所述第一存储空间。

9.根据权利要求7所述的装置,其特征在于,所述将记录所述数据的数据表划分为第一数据块组,包括:

将所述数据表平均划分为所述第一数据块组。

10.根据权利要求7所述的装置,其特征在于,从所述第一数据块组中抽取出第二数据块组,包括:

从所述第一数据块组中随机抽取出所述第二数据块组。

11.根据权利要求7所述的装置,还包括:空间合并模块,被配置为当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存储空间合并,得到第三存储空间。

12.根据权利要求11所述的装置,其特征在于,所述空间合并模块还被配置为:删除所述第一存储空间中未被所述第四数据块组中的结果数据块占用的空间。

13.一种应用于数据库的算子结果空间估算方法,其特征在于,包括:基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结果空间;

将所述结果数据写入估计出的第一算子结果空间;

基于估计出的第一算子结果空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二算子结果空间,所述基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结果空间,包括:

将记录所述数据的数据表划分为第一数据块组;

从所述第一数据块组中抽取出第二数据块组;

对所述第二数据块组中的数据块进行计算得到第三数据块组;

计算存储所述第三数据块组中的结果数据块的空间容量的平均值;

利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一算子结果空间。

14.一种电子设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如权利要求1‑6、13任一项所述的方法。

15.一种可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现如权利要求1‑6、13任一项所述的方法。

说明书 :

存储空间估算方法、装置、电子设备及可读存储介质

技术领域

[0001] 本公开涉及数据库技术领域,具体涉及存储空间估算方法、装置、电子设备及可读存储介质。

背景技术

[0002] 在计算机领域中,经常需要进行大量计算并且针对计算结果申请存储空间。在一些场景下,可以直接申请最大空间或先精确计算结果大小再二次计算输出结果。例如,在数
据库使用场景中,使用多种算子计算都需要先申请计算结果空间,在计算过程中将结果写
入到该结果空间中。目前数据库中使用的方案多为直接申请最大空间或先精确计算结果大
小再二次计算输出结果,会面临空间使用率低和计算性能差的问题。

发明内容

[0003] 为了解决相关技术中的问题,本公开实施例提供存储空间估算方法、装置、电子设备及可读存储介质。
[0004] 第一方面,本公开实施例中提供了一种存储空间估算方法,包括:
[0005] 基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;
[0006] 将所述结果数据写入估计出的第一存储空间;
[0007] 基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间。
[0008] 结合第一方面,本公开在第一方面的第一种实现方式中,所述基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间,包括:
[0009] 将记录所述数据的数据表划分为第一数据块组;
[0010] 从所述第一数据块组中抽取出第二数据块组;
[0011] 对所述第二数据块组中的数据块进行计算得到第三数据块组;
[0012] 计算存储所述第三数据块组中的结果数据块的空间容量的平均值;
[0013] 利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。
[0014] 结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据
块组的处理结果的第四数据块组的第一存储空间,包括:
[0015] 申请所述第一存储空间。
[0016] 结合第一方面的第一种实现方式,本公开在第一方面的第三种实现方式中,所述将记录所述数据的数据表划分为第一数据块组,包括:
[0017] 将所述数据表平均划分为所述第一数据块组。
[0018] 结合第一方面的第一种实现方式,本公开在第一方面的第四种实现方式中,从所述第一数据块组中抽取出第二数据块组,包括:
[0019] 从所述第一数据块组中随机抽取出所述第二数据块组。
[0020] 结合第一方面的第一种实现方式,本公开在第一方面的第五种实现方式中,还包括:当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和
所述第二存储空间合并,得到第三存储空间。
[0021] 结合第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述将所述第一存储空间和所述第二存储空间合并,得到第三存储空间,包括:删除所述第一存
储空间中未被所述第四数据块组中的结果数据块占用的空间。
[0022] 第二方面,本公开实施例中提供了一种存储空间估算装置,包括:
[0023] 第一存储空间估算模块,被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;
[0024] 第一存储空间写入模块,被配置为将所述结果数据写入估计出的第一存储空间;
[0025] 第二存储空间写入模块,被配置基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间。
[0026] 结合第二方面,本公开在第二方面的第一种实现方式中,所述第一存储空间估算模块还被配置为:
[0027] 将记录所述数据的数据表划分为第一数据块组;
[0028] 从所述第一数据块组中抽取出第二数据块组;
[0029] 对所述第二数据块组中的数据块进行计算得到第三数据块组;
[0030] 计算存储所述第三数据块组中的结果数据块的空间容量的平均值;
[0031] 利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。
[0032] 结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据
块组的处理结果的第四数据块组的第一存储空间,包括:
[0033] 申请所述第一存储空间。
[0034] 结合第二方面的第一种实现方式,本公开在第二方面的第三种实现方式中,所述将记录所述数据的数据表划分为第一数据块组,包括:
[0035] 将所述数据表平均划分为所述第一数据块组。
[0036] 结合第二方面的第一种实现方式,本公开在第二方面的第四种实现方式中,从所述第一数据块组中抽取出第二数据块组,包括:
[0037] 从所述第一数据块组中随机抽取出所述第二数据块组。
[0038] 结合第二方面的第一种实现方式,本公开在第二方面的第五种实现方式中,还包括:
[0039] 空间合并模块,被配置为当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存储空间合并,得到第三存储空间。
[0040] 结合第二方面的第五种实现方式,本公开在第二方面的第六种实现方式中,所述空间合并模块还被配置为:删除所述第一存储空间中未被所述第四数据块组中的结果数据
块占用的空间。
[0041] 第三方面,本公开实施例中提供了一种应用于数据库的算子结果空间估算方法,包括:
[0042] 基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结果空间;
[0043] 将所述结果数据写入估计出的第一算子结果空间;
[0044] 基于估计出的第一算子结果空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二算子结果空间。
[0045] 第四方面,本公开实施例中提供了一种电子设备,包括存储器和处理器;其中,
[0046] 所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式到第一方面的第五种实
现方式、第三方面任一项所述的方法。
[0047] 第五方面,本公开实施例中提供了一种可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到
第一方面的第五种实现方式第三方面,本公开实施例中提供了所述的方法。
[0048] 本公开实施例提供的技术方案可以包括以下有益效果:
[0049] 根据本公开实施例提供的技术方案,通过基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;将所述结果数据写入估计出的第一存储空间;基于
估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结
果数据写入第二存储空间,从而在保证空间使用效率的同时保证整体计算性能。
[0050] 根据本公开实施例提供的技术方案,通过所述基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间,包括:将记录所述数据的数据表划分为第一数
据块组;从所述第一数据块组中抽取出第二数据块组;对所述第二数据块组中的数据块进
行计算得到第三数据块组;计算存储所述第三数据块组中的结果数据块的空间容量的平均
值;利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数
据块组的处理结果的第四数据块组的第一存储空间,从而计算出合理的第一存储空间,在
保证空间使用效率的同时保证整体计算性能。
[0051] 根据本公开实施例提供的技术方案,通过所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的
第一存储空间,包括:申请所述第一存储空间,从而在第一存储空间中实现对计算结果的数
据存储,在保证空间使用效率的同时保证整体计算性能。
[0052] 根据本公开实施例提供的技术方案,通过所述将记录所述数据的数据表划分为第一数据块组,包括:将所述数据表平均划分为所述第一数据块组,从而保证输入计算的第一
数据块组中的数据块大小的一致性,进而计算出合理的第一存储空间。
[0053] 根据本公开实施例提供的技术方案,通过从所述第一数据块组中抽取出第二数据块组,包括:从所述第一数据块组中随机抽取出所述第二数据块组,从而保证计算出合理的
第一存储空间。
[0054] 根据本公开实施例提供的技术方案,通过还包括:当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存储空间合并,得到第三
存储空间,从而提高存储空间的访问效率。
[0055] 根据本公开实施例提供的技术方案,通过所述将所述第一存储空间和所述第二存储空间合并,得到第三存储空间,包括:删除所述第一存储空间中未被所述第四数据块组中
的结果数据块占用的空间,从而提高存储空间的使用效率,避免空间浪费。
[0056] 根据本公开实施例提供的技术方案,通过第一存储空间估算模块,被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;第一存储空间写
入模块,被配置为将所述结果数据写入估计出的第一存储空间;第二存储空间写入模块,被
配置基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余
的所述结果数据写入第二存储空间,从而在保证空间使用效率的同时保证整体计算性能。
[0057] 根据本公开实施例提供的技术方案,通过所述第一存储空间估算模块还被配置为:将记录所述数据的数据表划分为第一数据块组;从所述第一数据块组中抽取出第二数
据块组;对所述第二数据块组中的数据块进行计算得到第三数据块组;计算存储所述第三
数据块组中的结果数据块的空间容量的平均值;利用存储所述第三数据块组中的结果数据
块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存
储空间,从而计算出合理的第一存储空间,在保证空间使用效率的同时保证整体计算性能。
[0058] 根据本公开实施例提供的技术方案,通过所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的
第一存储空间,包括:申请所述第一存储空间,从而在第一存储空间中实现对计算结果的数
据存储,在保证空间使用效率的同时保证整体计算性能。
[0059] 根据本公开实施例提供的技术方案,通过所述将记录所述数据的数据表划分为第一数据块组,包括:将所述数据表平均划分为所述第一数据块组,从而保证输入计算的第一
数据块组中的数据块大小的一致性,进而计算出合理的第一存储空间。
[0060] 根据本公开实施例提供的技术方案,通过从所述第一数据块组中抽取出第二数据块组,包括:从所述第一数据块组中随机抽取出所述第二数据块组,从而保证计算出合理的
第一存储空间。
[0061] 根据本公开实施例提供的技术方案,通过还包括:空间合并模块,被配置为当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存
储空间合并,得到第三存储空间,从而提高存储空间的访问效率。
[0062] 根据本公开实施例提供的技术方案,通过所述空间合并模块还被配置为:删除所述第一存储空间中未被所述第四数据块组中的结果数据块占用的空间,从而提高存储空间
的访问效率。
[0063] 根据本公开实施例提供的技术方案,通过基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结果空间;将所述结果数据写入估计出的第一
算子结果空间;基于估计出的第一算子结果空间写满后还存在剩余的所述结果数据未被写
入,将所述剩余的所述结果数据写入第二算子结果空间,从而在保证数据库的算子结果空
间使用效率的同时保证整体计算性能。
[0064] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0065] 结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
[0066] 图1示出根据本公开一实施方式的存储空间估算方法的流程图;
[0067] 图2示出根据图1所示实施方式包括步骤S101的详细步骤示例的存储空间估算方法的流程图;
[0068] 图3示出根据本公开另一实施方式的存储空间估算方法的流程图;
[0069] 图4示出根据本公开一实施方式的存储空间估算方法的场景示例性示意图;
[0070] 图5示出根据本公开一实施方式的存储空间估算装置的结构框图;
[0071] 图6示出根据本公开另一实施方式的存储空间估算装置的结构框图;
[0072] 图7示出根据本公开一实施方式的电子设备的结构框图;
[0073] 图8是适于用来实现根据本公开一实施方式的存储空间估算方法的计算机系统的结构示意图。

具体实施方式

[0074] 下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部
分。
[0075] 在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、
数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
[0076] 另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
[0077] 在数据库使用场景中,使用多种算子计算都需要先申请结果空间,在计算过程中将结果写入到该结果空间中。目前数据库产品中使用的方案多为直接申请最大空间或先精
确计算结果大小再二次计算输出结果,会面临空间使用率低和计算性能差的问题。
[0078] 例如,当数据库中的两张表进行连接计算时,如果采用最大空间申请方案,则需要以最大可能输出的结果数据量申请空间。如果参与计算的两张表行数分别为a和b,则最大
空间申请方案会以a*b的大小进行空间申请,而实际运算输出的结果行数往往远小于a*b,
最大空间申请方案会造成所申请的结果空间浪费,空间使用率低。而空间精确预计算方案
需要进行两次计算:第一次计算精确统计需要输出的结果数据量,并以此为依据进行结果
空间申请,第二次计算再将结果写入到结果空间中。空间精确预计算方案虽然保证了空间
的高效使用率,但是需要进行两次重复计算,对于数据库的实际应用场景来说,仅一次计算
就可能需要比较长的时间,两次计算会造成性能的严重下降。
[0079] 为了解决上述问题,本公开提出一种存储空间估算方法、装置、电子设备及可读存储介质。
[0080] 根据本公开实施例提供的技术方案,通过基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;将结果数据写入估计出的第一存储空间;基于估计
出的第一存储空间写满后还存在剩余的结果数据未被写入,将剩余的结果数据写入第二存
储空间,从而在保证空间使用效率的同时保证整体计算性能。
[0081] 图1示出根据本公开一实施方式的存储空间估算方法的流程图。如图1所示,消息推送方法包括步骤S101、S102、S103。
[0082] 在步骤S101中,基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间。
[0083] 在步骤S102中,将结果数据写入估计出的第一存储空间。
[0084] 在步骤S103中,基于估计出的第一存储空间写满后还存在剩余的结果数据未被写入,将剩余的结果数据写入第二存储空间。
[0085] 在本公开的一个实施例中,对数据进行采样后,根据采样后的数据的计算结果所占用的存储空间估计采样前的数据计算后所需要占用的第一存储空间。通过对数据进行采
样,并计算采样后的数据的计算结果所占用的存储空间的方式,可以在不对所有数据进行
计算的条件下,较为准确地估计出所有数据计算后所需要占用的空间容量,从而在不浪费
空间容量的同时节约计算资源,提高整体计算性能。在对所有数据进行计算的过程中,将计
算的结果数据写入估计的第一存储空间。当第一存储空间写满后,如果还存在剩余的结果
数据未能写入第一存储空间,则将剩余的结果数据写入第二存储空间,从而使所有结果数
据都能得到有效存储。本领域普通技术人员可以理解,也可以采用其它方式,例如利用数据
间的相关性,利用已知的其它数据计算结果所占用的存储空间来估计数据的计算结果所需
要占用的第一存储空间,本公开对此不再赘述。
[0086] 在本公开的一个实施例中,数据的采样和计算估计数据计算后的结果数据所占的第一存储空间,包括:将记录数据的数据表划分为第一数据块组;从第一数据块组中抽取出
第二数据块组;对第二数据块组中的数据块进行计算得到第三数据块组;计算存储第三数
据块组中的结果数据块的空间容量的平均值;利用存储第三数据块组中的结果数据块的空
间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。
[0087] 图2示出根据图1所示实施方式包括步骤S101的详细步骤示例的存储空间估算方法的流程图。
[0088] 如图2所示,步骤101可以被分解为步骤S201、S202、S203、S204、S205。
[0089] 在步骤S201中,将记录数据的数据表划分为第一数据块组。
[0090] 在步骤S202中,从第一数据块组中抽取出第二数据块组。
[0091] 在步骤S203中,对第二数据块组中的数据块进行计算得到第三数据块组。
[0092] 在步骤S204中,计算存储第三数据块组中的结果数据块的空间容量的平均值。
[0093] 在步骤S205中,利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间。
[0094] 在本公开的一个实施例中,图1中的步骤S101“基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间”可以进行进一步的细化分解。首先将记录数据
的数据表划分为第一数据块组,然后从第一数据块组中抽取(也可以称作,采样)出第二数
据块组。在统计上,第二数据块组可以模拟出第一数据块组的数据特征,从而避免对第一数
据块组中的数据全部进行计算而过多消耗计算资源。对第二数据块组中的数据块进行计
算,得到第三数据块组,第三数据块组中是由第二数据块组中的数据块进行计算得到的结
果数据块。例如,计算方式可以采取各种计算方式,例如,连接计算。连接计算是二元算子,
所涉及的除了第二数据块组中的数据块之外还有其它数据块,其它数据块的容量可以是不
同的,这导致第三数据块组中的结果数据块的容量也可以是不同的。在计算存储第三数据
块组中的结果数据块的空间容量的平均值之后,利用存储第三数据块组中的结果数据块的
空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间。
[0095] 在本公开的一个实施例中,例如,将总行数为A的数据表按照每个数据块b行的方式进行划分,得到第一数据块组,第一数据块组中包括N=A/b个数据块。在N个数据块中,抽
取n个数据块组成第二数据块组。对第二数据块组中的n个数据块和数据表外部的数据块进
行连接运算,得到n个结果数据块。数据表外部的数据块的容量可以是不同的,因此得到的n
个结果数据块的容量可以是不同的。对n个结果数据块的容量取平均值,记为k,则可以估算
出存储包括N个数据块的第一数据块组的处理结果的第四数据块组的第一存储空间的容量
为k*N。k是对n个结果数据块的容量的统计平均值,而且在从第一数据块组的N个数据块中
抽取n个数据块组成第二数据块组的过程中可能出现统计偏差,计算出的第一存储空间的
容量k*N对于存储第一数据块组中的所有数据块的连接运算的结果数据而言可能是不足
的。在对第一数据块组中的所有数据块进行计算计算的过程中,先将计算计算的结果数据
写入估计出的第一存储空间。当写满第一存储空间之后还存在剩余的结果数据未被写入
时,将剩余的结果数据写入第二存储空间。
[0096] 在本公开的一个实施例中,对第二数据块组和第一数据块组中的数据块进行的计算可以是除了连接运算外的其它计算方式,例如聚集计算、选择计算、投影计算等计算方
式,本公开对此不再赘述。
[0097] 根据本公开实施例提供的技术方案,通过基于数据的采样和计算估计数据计算后的结果数据所占的第一存储空间,包括:将记录数据的数据表划分为第一数据块组;从第一
数据块组中抽取出第二数据块组;对第二数据块组中的数据块进行计算得到第三数据块
组;计算存储第三数据块组中的结果数据块的空间容量的平均值;利用存储第三数据块组
中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据
块组的第一存储空间,从而计算出合理的第一存储空间,在保证空间使用效率的同时保证
整体计算性能。
[0098] 在本公开的一个实施例中,利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间,包括:申请第
一存储空间。
[0099] 在本公开的一个实施例中,在利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间后,可以在数
据库内存或Flash、硬盘等外部存储介质中申请第一存储空间,从而实现对第一数据块组中
的数据块的计算结果的有效存储。出于读、写访问效率和数据易失性间的平衡,可以选择数
据库内存介质或Flash、硬盘等外部存储介质,或其它存储介质,本公开对此不再赘述。
[0100] 根据本公开实施例提供的技术方案,通过利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间,
包括:申请第一存储空间,从而在第一存储空间中实现对连接计算结果的数据存储,在保证
空间使用效率的同时保证整体计算性能。
[0101] 在本公开的一个实施例中,将记录所述数据的数据表划分为第一数据块组,包括:将数据表平均划分为第一数据块组。
[0102] 在本公开的一个实施例中,可以使用平均划分的方式,将将数据表划分为第一数据块组。通过平均划分的方式,可以保证输入计算的第一数据块组中的数据块大小的一致
性,计算经计算后的结果数据块的容量平均值时的误差较小,从而计算出较为合理的第一
存储空间,提高存储空间利用效率。本领域普通技术人员可以理解,也可以采用非平均划分
的方式将数据表划分为第一数据块组,可以实现对数据表的灵活处理,本公开对此不再赘
述。
[0103] 根据本公开实施例提供的技术方案,通过将记录所述数据的数据表划分为第一数据块组,包括:将数据表平均划分为第一数据块组,从而保证输入计算的第一数据块组中的
数据块大小的一致性,进而计算出合理的第一存储空间。
[0104] 在本公开的一个实施例中,通过从第一数据块组中抽取出第二数据块,包括:从第一数据块组中随机抽取出第二数据块。
[0105] 在本公开的一个实施例中,从第一数据块组中抽取出第二数据块组时,可以采用随机抽取的方式,从而保证抽取过程中统计上的遍历性,从而保证计算出合理的第一存储
空间。本领域技术人员可以理解,也可以采用均匀抽取、集中抽取等其它方式,从第一数据
块组中抽取出第二数据块组,本公开对此不再赘述。
[0106] 根据本公开实施例提供的技术方案,通过从第一数据块组中抽取出第二数据块组,包括:从第一数据块组中随机抽取出第二数据块组,从而保证计算出合理的第一存储空
间。
[0107] 在本公开的一个实施例中,所述存储空间估算方法还包括:当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和第二存储空间合并,得到第三存储
空间。
[0108] 图3示出根据本公开另一实施方式的存储空间估算方法的流程图。如图3所示,图3中除了包括和图1相同的步骤S101、S102、S103,还包括步骤S301。
[0109] 在步骤S301中,当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和第二存储空间合并,得到第三存储空间。
[0110] 在本公开的一个实施例中,如果将第四数据块组中的结果数据块存储入连续空间,可以提高对第四数据块组的访问效率。因此,可以将第一存储空间和第二存储空间合
并,得到第三存储空间。第三存储空间在内存或Flash、硬盘等外部存储介质中可以是连续
分布的,从而可以加快对第四数据块组的读、写访问速度,提高访问效率。
[0111] 根据本公开实施例提供的技术方案,通过还包括:当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和第二存储空间合并,得到第三存储空间,从而
提高存储空间的访问效率。
[0112] 在本公开的一个实施例中,将第一存储空间和第二存储空间合并,得到第三存储空间包括:删除第一存储空间中未被第四数据块组中的结果数据块占用的空间。
[0113] 在本公开的一个实施例中,第一存储空间是通过第三数据块组中的结果数据块的空间容量的平均值计算得到的,第一存储空间中的每个数据块的容量可以是第三数据块组
中的结果数据块的空间容量的平均值。而在连接计算过程中,第四数据块组中的结果数据
块容量可能小于第三数据块组中的结果数据块的空间容量的平均值,从而造成第一存储空
间并未被第四数据块组中的结果数据块完全占用,第一存储空间中存在未被占用的空闲空
间。第一存储空间和第二存储空间合并得到第三存储空间时,可以将第一存储空间中未被
第四数据块组中的结果数据块占用的空闲空间删除,从而提高存储空间的使用效率,避免
空间浪费。进一步,也可以使得第四数据块组中的结果数据块处于完全连续分布的存储空
间中,提高存储空间的访问效率。本领域普通技术人员可以理解,也可以在将第四数据块组
中的结果数据块存储入第一存储空间时就尽可能连续存储,可以避免第一存储空间中出现
空闲空间的情况,从而提高存储空间的使用效率和访问效率,本公开对此不再赘述。
[0114] 根据本公开实施例提供的技术方案,通过将第一存储空间和第二存储空间合并,得到第三存储空间包括:删除第一存储空间中未被第四数据块组中的结果数据块占用的空
间,从而提高存储空间的使用效率,避免空间浪费。
[0115] 图4示出根据本公开一实施方式的存储空间估算方法的场景示例性示意图,用于示例性描述对连接计算后的第四数据块组中的结果数据进行存储的方式。
[0116] 本领域普通技术人员可以理解,图4为本公开一实施方式的存储空间估算方法的场景示例性示意图,不构成对本公开的存储空间估算方法的限制。
[0117] 如图4所示,存储空间估算方法的场景400包括:连接计算结果数据块组输出Tout(A,B)410,2分块存储空间T 420,索引转换430,连续第三存储空间440。
[0118] 连接计算结果数据块组输出Tout(A,B)410中包括4个结果数据块:结果数据块0、结果数据块1、结果数据块2、结果数据块3。结果数据块0中包括结果数据(1,3)、(2,9);结果数
据块1中包括结果数据(5,8)、(7,5)、(7,8)、(12,15)、(12,17)、(13,5);结果数据块2中包括
结果数据(4,6);结果数据块3中包括结果数据(8,4)、(9,9)、(9,12)、(11,2)、(11,5)。
[0119] 在2分块存储空间T 420中,包括:第一存储空间T.main 421,第二存储空间T.res 422,变换数据表423。第一存储空间T.main 421包含4个存储块,分别为存储块0、存储块1、
存储块2、存储块3,每个存储块可以存储3个数据。第一存储空间T.main 421可以根据存储
第三数据块组中的结果数据块的空间容量的平均值计算得到。
[0120] 在步骤S401中,将连接计算结果数据块组输出Tout(A,B)410中的结果数据块存储入第一存储空间T.main 421中的对应存储块,当第一存储空间T.main 421中的对应存储块
写满后则将剩余结果数据存储入第二存储空间T.res 422,同时逐步更新变换数据表423。
例如,将结果数据块0中的结果数据(1,3)、(2,9)存入存储块0,存储块0的索引2位置由于无
数据存入而空闲;将结果数据块1中的结果数据(5,8)、(7,5)、(7,8)存入存储块1,而将结果
数据块1中未能存入存储块1的剩余结果数据(12,15)、(12,17)、(13,5)存入第二存储空间
T.res 422;将结果数据块2中的结果数据(4,6)存入存储块2,存储块2的索引7、8位置由于
无数据存入而空闲;将结果数据块3中的结果数据(8,4)、(9,9)、(9,12)存入存储块3,而将
结果数据块3中未能存入存储块3的剩余结果数据(11,2)、(11,5)存入第二存储空间T.res 
422。从连接计算结果数据块组410到第一存储空间T.main 421和第二存储空间T.res 422
的数据存储完成后,得到变换数据表423中的存储块数(T.N)为4,表示第一存储空间T.main 
421中共有4个存储块;存储块长(T.F)为3,表示第一存储空间T.main 421的每个存储块中
可以存储3个数据;存储块内数据总量(T.fsam)为9,表示第一存储空间T.main 421中共存
储有9个数据;存储块内数据数(T.cnt)为(2,3,1,3),表示第一存储空间T.main 421的4个
存储块中分别存储有2、3、1、3个数据。
[0121] 在步骤S402中,计算变换数据表423中的存储块内数据数(T.cnt)得到存储块0、存储块1、存储块2、存储块3中的结果数据存入连续第三存储空间440后的首地址,为sc[0:3]
={0,2,5,6}。
[0122] 在步骤S403中,在需要将第一存储空间T.main 421和第二存储空间T.res中的结果数据合并存储入连续空间时,则将第一存储空间T.main 421和第二存储空间T.res中的
结果数据进行合并,存储入连续第三存储空间440。合并存储过程中,参照索引转换430中的
伪代码进行结果数据的合并和存储操作,并删除第一存储空间T.main 421中的空闲。最终,
将第一存储空间T.main 421中的存储块0中索引为0、1的结果数据存入连续第三存储空间
440的索引0、1位置,将存储块1中索引为3~5的结果数据存入连续第三存储空间440的索引
2~4位置,将存储块2中索引为6的结果数据存入连续第三存储空间440的索引5位置,将存
储块3中索引为9~11的结果数据存入连续第三存储空间440的索引6~8位置,最后将第二
存储空间T.res中的5个结果数据存入连续第三存储空间440的索引9~13位置。
[0123] 在本公开的一个实施例中,通过上述S401、S402、S403的操作,将连接计算结果数据块组410中的结果数据存储入2分块存储空间T 420中的第一存储空间T.main 421和第二
存储空间T.res 422,并在必要是合并存储入连续第三存储空间440,在保证空间使用效率
的同时保证整体计算性能,并通过存储空间合并和删除空余的方式提高了存储空间的访问
效率。
[0124] 在本公开的一个实施例中,提供一种应用于数据库的算子结果空间估算方法,包括:基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结
果空间;将所述结果数据写入估计出的第一算子结果空间;基于估计出的第一算子结果空
间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二算子
结果空间。
[0125] 根据本公开实施例提供的技术方案,通过基于数据库中的数据的采样和算子估计所述数据计算后的结果数据所占的第一算子结果空间;将所述结果数据写入估计出的第一
算子结果空间;基于估计出的第一算子结果空间写满后还存在剩余的所述结果数据未被写
入,将所述剩余的所述结果数据写入第二算子结果空间,从而在保证数据库的算子结果空
间使用效率的同时保证整体计算性能。
[0126] 本领域技术人员可以理解,该实施例中的应用于数据库的算子结果空间估算方法可以采用参照图1至图4描述的实施例中的方案,从而使得本实施例中的应用于数据库的算
子结果空间估算方法具备参照图1至图4描述的实施例所实现的技术效果。具体内容可以参
照以上根据图1至图4进行的描述,其具体内容在此不再赘述。
[0127] 在本公开的一个实施例中,存储空间估算装置包括:第一存储空间估算模块,被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;第一存
储空间写入模块,被配置为将结果数据写入估计出的第一存储空间;第二存储空间写入模
块,被配置基于估计出的第一存储空间写满后还存在剩余的结果数据未被写入,将剩余的
所述结果数据写入第二存储空间。
[0128] 图5示出根据本公开一实施方式的存储空间估算装置的结构框图。如图5所示,存储空间估算装置包括:第一存储空间估算模块501、第一存储空间写入模块502、第二存储空
间写入模块503。
[0129] 第一存储空间估算模块501被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间。
[0130] 第一存储空间写入模块502被配置为将结果数据写入估计出的第一存储空间。
[0131] 第二存储空间写入模块503被配置基于估计出的第一存储空间写满后还存在剩余的结果数据未被写入,将剩余的所述结果数据写入第二存储空间
[0132] 根据本公开实施例提供的技术方案,通过第一存储空间估算模块,被配置为基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;第一存储空间写
入模块,被配置为将结果数据写入估计出的第一存储空间;第二存储空间写入模块,被配置
基于估计出的第一存储空间写满后还存在剩余的结果数据未被写入,将剩余的所述结果数
据写入第二存储空间,从而在保证空间使用效率的同时保证整体计算性能。
[0133] 在本公开的一个实施例中,第一存储空间估算模块还被配置为:将记录数据的数据表划分为第一数据块组;从第一数据块组中抽取出第二数据块组;对第二数据块组中的
数据块进行连接计算得到第三数据块组;计算存储第三数据块组中的结果数据块的空间容
量的平均值;利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数
据块组的处理结果的第四数据块组的第一存储空间。
[0134] 在本公开的一个实施例中,通过将数据表划分为第一数据块组,从第一数据块组中抽取出第二数据块组并进行连接计算得到第三数据块组,通过对第三数据块组中结果数
据块的空间容量的平均值进行计算得到存储第一数据块组的处理结果的第四数据块组的
第一存储空间。
[0135] 根据本公开实施例提供的技术方案,通过第一存储空间估算模块还被配置为:将记录数据的数据表划分为第一数据块组;从第一数据块组中抽取出第二数据块组;对第二
数据块组中的数据块进行连接计算得到第三数据块组;计算存储第三数据块组中的结果数
据块的空间容量的平均值;利用存储第三数据块组中的结果数据块的空间容量的平均值计
算存储第一数据块组的处理结果的第四数据块组的第一存储空间,从而计算出合理的第一
存储空间,在保证空间使用效率的同时保证整体计算性能。
[0136] 在本公开的一个实施例中,利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间,包括:申请第
一存储空间。
[0137] 在本公开的一个实施例中,计算第一存储空间的过程可以包括申请第一存储空间,从而实现对连接计算的结果数据的存储。
[0138] 根据本公开实施例提供的技术方案,通过利用存储第三数据块组中的结果数据块的空间容量的平均值计算存储第一数据块组的处理结果的第四数据块组的第一存储空间,
包括:申请第一存储空间,从而在第一存储空间中实现对连接计算结果的数据存储,在保证
空间使用效率的同时保证整体计算性能。
[0139] 在本公开的一个实施例中,将记录数据的数据表划分为第一数据块组,包括:将数据表平均划分为第一数据块组。
[0140] 在本公开的一个实施例中,将数据表平均划分为第一数据块组,可以保证输入连接计算的数据块长度一致,减小计算第一存储空间的误差。
[0141] 根据本公开实施例提供的技术方案,通过将记录数据的数据表划分为第一数据块组,包括:将数据表平均划分为第一数据块组,从而保证输入连接计算的第一数据块组中的
数据块大小的一致性,进而计算出合理的第一存储空间。
[0142] 在本公开的一个实施例中,从第一数据块组中抽取出第二数据块组,包括:从第一数据块组中随机抽取出第二数据块组。
[0143] 在本公开的一个实施例中,随机抽取可以保证第二数据块组的数据块的统计特征的遍历性,从而计算出较为合理的第一存储空间。
[0144] 根据本公开实施例提供的技术方案,通过从第一数据块组中抽取出第二数据块组,包括:从第一数据块组中随机抽取出第二数据块组,从而保证计算出合理的第一存储空
间。
[0145] 在本公开的一个实施例中,存储空间估算装置还包括:空间合并模块,被配置为当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和所述第二存储空
间合并,得到第三存储空间。
[0146] 图6示出根据本公开另一实施方式的存储空间估算装置的结构框图。
[0147] 如图6所示,存储空间估算装置600除了包括和存储空间估算装置500中相同的第一存储空间估算模块501、第一存储空间写入模块502、第二存储空间写入模块503,还包括:
空间合并模块601。
[0148] 空间合并模块601被配置为:当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和所述第二存储空间合并,得到第三存储空间。
[0149] 根据本公开实施例提供的技术方案,通过还包括:空间合并模块,被配置为当第四数据块组中的结果数据块需要存储入连续空间时,将第一存储空间和所述第二存储空间合
并,得到第三存储空间,从而提高存储空间的访问效率。
[0150] 在本公开的一个实施例中,通过空间合并模块还被配置为:删除第一存储空间中未被第四数据块组中的结果数据块占用的空间。
[0151] 在本公开的一个实施例中,在合并过程中,通过删除未被第四数据块组中的结果数据块占用的空间,可以提高存储空间利用效率,避免浪费,同时保持结果数据的存储连续
性,提高存储空间的访问效率。
[0152] 根据本公开实施例提供的技术方案,通过将第一存储空间和第二存储空间合并,得到第三存储空间,包括:删除第一存储空间中未被第四数据块组中的结果数据块占用的
空间,从而提高存储空间的访问效率。
[0153] 图7示出根据本公开一实施方式的电子设备的结构框图。
[0154] 本公开实施方式还提供了一种电子设备,如图7所示,包括至少一个处理器701;以及与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理
器701执行的指令,指令被至少一个处理器701执行以实现以下步骤:
[0155] 基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间;
[0156] 将所述结果数据写入估计出的第一存储空间;
[0157] 基于估计出的第一存储空间写满后还存在剩余的所述结果数据未被写入,将所述剩余的所述结果数据写入第二存储空间。
[0158] 在本公开的一个实施例中,所述基于数据的采样和计算估计所述数据计算后的结果数据所占的第一存储空间,包括:
[0159] 将记录所述数据的数据表划分为第一数据块组;
[0160] 从所述第一数据块组中抽取出第二数据块组;
[0161] 对所述第二数据块组中的数据块进行连接计算得到第三数据块组;
[0162] 计算存储所述第三数据块组中的结果数据块的空间容量的平均值;
[0163] 利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间。
[0164] 在本公开的一个实施例中,所述利用存储所述第三数据块组中的结果数据块的空间容量的平均值计算存储所述第一数据块组的处理结果的第四数据块组的第一存储空间,
包括:
[0165] 申请所述第一存储空间。
[0166] 在本公开的一个实施例中,所述将记录所述数据的数据表划分为第一数据块组,包括:
[0167] 将所述数据表平均划分为所述第一数据块组。
[0168] 在本公开的一个实施例中,从所述第一数据块组中抽取出第二数据块组,包括:
[0169] 从所述第一数据块组中随机抽取出所述第二数据块组。
[0170] 在本公开的一个实施例中,指令被至少一个处理器701执行以实现的步骤还包括:
[0171] 当所述第四数据块组中的结果数据块需要存储入连续空间时,将所述第一存储空间和所述第二存储空间合并,得到第三存储空间。
[0172] 在本公开的一个实施例中,所述将所述第一存储空间和所述第二存储空间合并,得到第三存储空间,包括:删除所述第一存储空间中未被所述第四数据块组中的结果数据
块占用的空间。
[0173] 图8是适于用来实现根据本公开一实施方式的存储空间估算方法的计算机系统的结构示意图。
[0174] 如图8所示,计算机系统800包括处理单元801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行上
述附图所示的实施方式中的各种处理。在RAM803中,还存储有系统800操作所需的各种程序
和数据。处理单元801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805
也连接至总线804。
[0175] 以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;
以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因
特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如
磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出
的计算机程序根据需要被安装入存储部分808。其中,所述处理单元801可实现为CPU、GPU、
TPU、FPGA、NPU等处理单元。
[0176] 特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可
读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样
的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆
卸介质811被安装。
[0177] 附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以
代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个
用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所
标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际
上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要
注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用
执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指
令的组合来实现。
[0178] 描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块
的名称在某种情况下并不构成对该单元或模块本身的限定。
[0179] 作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述节点中所包含的计算机可读存储介质;也可以是单独存在,
未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程
序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
[0180] 以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术
方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行
任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功
能的技术特征进行互相替换而形成的技术方案。