Select*查询的零拷贝优化制造技术

技术编号:36174791 阅读:10 留言:0更新日期:2022-12-31 20:28
一种计算机实现的方法(500)包括接收指定对多个数据块(152)的第一表(158a)执行的操作的查询(20)。第一表中的每个数据块包括相应的引用计数(154),其指示引用数据块的表(158)的数量。该方法还包括确定查询指定的操作包括将第一表中的多个数据块复制到第二表(158b)中,并且作为响应,对于复制到第二表中的第一表中的多个数据块中的每个数据块,递增与第一表中的数据块相关联的相应引用计数,并在第二表的元数据(159)中,添加被复制到第二表中的相应数据块的引用(160)。数据块的引用(160)。数据块的引用(160)。

【技术实现步骤摘要】
【国外来华专利技术】Select*查询的零拷贝优化


[0001]本公开涉及用于数据库操作的零拷贝优化的技术。

技术介绍

[0002]随着分布式存储(即,云存储)变得日益普及并且存储成本降低,云数据库的大小已经急剧增加。例如,如果规模不大,则表通常是太字节(terabyte)。在这些表上的操作(例如,复制表)在系统资源和时间上通常相当昂贵。结构化查询语言(SQL)是关系数据库管理系统的标准语言。用户经常制作SQL查询以与云数据库交互。

技术实现思路

[0003]本公开的一个方面提供了一种方法。该方法包括在数据处理硬件处接收查询,所述查询指定对存储在存储器硬件上的多个数据块的第一表执行的操作,所述存储器硬件与所述数据处理硬件通信,所述第一表中的每个数据块包括相应的引用计数,所述引用计数指示引用所述数据块的表的数量。该方法还包括由数据处理硬件确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到第二表中。该方法还包括,响应于确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到所述第二表中,对于复制到所述第二表中的所述第一表中的所述多个数据块的每个数据块,由数据处理硬件递增与所述第一表中的所述数据块相关联的所述相应的引用计数;以及在所述第二表的元数据中添加被复制到所述第二表中的相应的所述数据块的引用。
[0004]本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,将所述第一表中的所述多个数据块复制到第二表中包括,将所述第一表中的每个数据块复制到所述第二表中,而不重复所述多个数据块中的任何一个。在一些示例中,查询包括SELECT*结构化查询语言(SQL)语句。
[0005]在一些实施方式中,确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到所述第二表中包括,在所述查询的整合期间,确定所述查询的子操作;以及,确定经确定的所述查询的子操作包括,将至少一个数据块写入所述存储器硬件的子操作和从所述存储器硬件读取至少一个数据块的子操作。可选地,将所述至少一个数据块写入所述存储器硬件的子操作包括物化子操作。在一些示例中,从所述存储器硬件读取至少一个数据块的子操作包括扫描子操作。可选地,确定经确定的所述查询的子操作包括读取所述至少一个数据块的所述扫描子操作包括,确定所述经确定的所述查询的子操作仅包括用于读取所述至少一个数据块的单个扫描子操作。
[0006]在一些示例中,确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中包括确定与所述查询相关联的列的列表的顺序,确定所述第一表的列的顺序,以及确定与所述查询相关联的所述列的列表的顺序所述与所述第一表的所述列的顺序相同。在一些实施方式中,所述方法还包括,在确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中的同时,发起由所述查询在所述第一表上指定的所述操作的执
行。可选地,所述方法还包括,响应于确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中,停止所述查询在所述第一表上的执行。在一些实施方式中,所述方法还包括,在将所述多个数据块中的每个数据块的所述引用附加到所述第二表的所述元数据中之后,接收删除所述第一表的请求;以及递减所述第一表的每个数据块的所述引用计数。
[0007]本专利技术的另一方面提供一种系统,其包括数据处理硬件和与所述数据处理硬件通信的存储器硬件。所述存储器硬件存储指令,当所述指令在所述数据处理硬件上执行时使所述数据处理硬件执行操作。所述操作包括接收查询,所述查询指定对存储在存储器硬件上的多个数据块的第一表执行的操作,所述存储器硬件与所述数据处理硬件通信,所述第一表中的每个数据块包括相应的引用计数,所述引用计数指示引用所述数据块的表的数量。该方法还包括确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到第二表中。响应于确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到所述第二表中,对于复制到所述第二表中的所述第一表中的所述多个数据块的每个数据块,所述操作包括递增与所述第一表中的所述数据块相关联的所述相应的引用计数;以及在所述第二表的元数据中添加被复制到所述第二表中的相应的所述数据块的引用。
[0008]本公开的这一方面可以包括一个或多个以下可选特征。在一些实施方式中,将所述第一表中的所述多个数据块复制到第二表中包括,将所述第一表中的每个数据块复制到所述第二表中,而不重复所述多个数据块中的任何一个。在一些示例中,查询包括SELECT*结构化查询语言(SQL)语句。
[0009]在一些实施方式中,确定所述查询指定的所述操作包括将所述第一表中的所述多个数据块复制到所述第二表中包括,在所述查询的整合期间,确定所述查询的子操作;以及,确定经确定的所述查询的子操作包括,将至少一个数据块写入所述存储器硬件的子操作和从所述存储器硬件读取至少一个数据块的子操作。可选地,将所述至少一个数据块写入所述存储器硬件的子操作包括物化子操作。在一些示例中,从所述存储器硬件读取至少一个数据块的子操作包括扫描子操作。在一些实施方式中,确定经确定的所述查询的子操作包括读取所述至少一个数据块的所述扫描子操作包括,确定所述经确定的所述查询的子操作仅包括用于读取所述至少一个数据块的单个扫描子操作。
[0010]在一些示例中,确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中包括确定与所述查询相关联的列的列表的顺序,确定所述第一表的列的顺序,以及确定与所述查询相关联的所述列的列表的顺序所述与所述第一表的所述列的顺序相同。在一些实施方式中,所述操作还包括,在确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中的同时,发起由所述查询在所述第一表上指定的所述操作的执行。可选地,所述操作还包括,响应于确定所述查询包括将所述第一表中的所述多个数据块复制到所述第二表中,停止所述查询在所述第一表上的执行。在一些实施方式中,所述操作还包括,在将所述多个数据块中的每个数据块的所述引用附加到所述第二表的所述元数据中之后,接收删除所述第一表的请求;以及递减所述第一表的每个数据块的所述引用计数。
[0011]本公开的一个或多个实施方式的细节在附图和以下描述中阐述。从说明书和附图以及从权利要求书中,其它方面,特征和优点将是显而易见的。
附图说明
[0012]图1是用于对表的查询进行优化的示例系统的示意图。
[0013]图2A

2C是将数据块从第一表复制到具有零复制优化的第二表的示意图。
[0014]图3是查询操作的示意图。
[0015]图4是用于比较表列列表的查询优化器的示例性组件的示意图。
[0016]图5是用于优化对表的查询的方法的操作的示例布置的流程图。
[0017]图6是可用于实现本文所述的系统和方法的示例性计算设备的示意图。
[0018]在各个附图中相同的附图标记表示相同的元件。
具体实施方式
[0019]分布式存储(即,云存储)已经越来越多地用于存储大量大本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种计算机实现的方法(500),其特征在于,当在数据处理硬件(144)上执行时,使所述数据处理硬件(144)执行以下操作:接收查询(20),所述查询(20)指定对存储在存储器硬件(146)上的多个数据块(152)的第一表(158a)执行的操作,所述存储器硬件(146)与所述数据处理硬件(144)通信,所述第一表(158a)中的每个数据块(152)包括相应的引用计数(154),所述引用计数(154)指示引用所述数据块(152)的表(158)的数量;确定所述查询(20)指定的所述操作包括将所述第一表(158a)中的所述多个数据块(152)复制到第二表(158b)中;以及响应于确定所述查询(20)指定的所述操作包括将所述第一表(158a)中的所述多个数据块(152)复制到所述第二表(158b)中,对于复制到所述第二表(158b)中的所述第一表(158a)中的所述多个数据块(152)的每个数据块(152):递增与所述第一表(158a)中的所述数据块(152)相关联的所述相应的引用计数(154);以及在所述第二表(158b)的元数据(159)中添加被复制到所述第二表(158b)中的相应的所述数据块(152)的引用(160)。2.如权利要求1所述的方法(500),其特征在于,其中将所述第一表(158a)中的所述多个数据块(152)复制到第二表(158b)中包括,将所述第一表(158a)中的每个数据块(152)复制到所述第二表(158b)中,而不重复所述多个数据块(152)中的任何一个。3.如权利要求1或2所述的方法(500),其特征在于,所述查询(20)包括SELECT*结构化查询语言(SQL)语句。4.如权利要求1

3中任一项所述的方法(500),其特征在于,其中确定所述查询(20)指定的所述操作包括将所述第一表(158a)中的所述多个数据块(152)复制到所述第二表(158b)中包括,在所述查询(20)的整合期间:确定所述查询(20)的子操作;以及确定经确定的所述查询(20)的子操作包括,将至少一个数据块(152)写入所述存储器硬件(146)的子操作和从所述存储器硬件(146)读取至少一个数据块(152)的子操作。5.如权利要求4所述的方法(500),其特征在于,将所述至少一个数据块(152)写入所述存储器硬件(146)的子操作包括物化子操作。6.如权利要求4或5所述的方法(500),其特征在于,其中从所述存储器硬件(146)读取至少一个数据块(152)的子操作包括扫描子操作。7.如权利要求6所述的方法(500),其特征在于,确定经确定的所述查询(20)的子操作包括读取所述至少一个数据块(152)的所述扫描子操作包括,确定所述经确定的所述查询(20)的子操作仅包括用于读取所述至少一个数据块(152)的单个扫描子操作。8.如权利要求1

7中任一项所述的方法(500),其特征在于,其中确定所述查询(20)包括将所述第一表(158a)中的所述多个数据块(152)复制到所述第二表(158b)中包括:确定与所述查询(20)相关联的列(420)的列表的顺序;确定所述第一表(158a)的列(430)的顺序;以及确定与所述查询(20)相关联的所述列(420)的列表的顺序所述与所述第一表(158a)的所述列(430)的顺序相同。
9.如权利要求1

8中任一项所述的方法(500),其特征在于,其中所述操作还包括,在确定所述查询(20)包括将所述第一表(158a)中的所述多个数据块(152)复制到所述第二表(158b)中的同时,发起由所述查询(20)指定的所述操作在所述第一表(158a)上的执行。10.如权利要求9所述的方法(500),其特征在于,所述操作还包括,响应于确定所述查询(20)包括将所述第一表(158a)中的所述多个数据块(152)复制到所述第二表(158b)中,停止所述查询(20)在所述第一表(158a)上的执行。11.如权利要求1

10中任一项所述的方法(500),其特征在于,其中所述操作还包括,在将所述多个数据块(152)中的每个数据块(152)的所述引用(160)附加到所述第二表(158b)的所述元数据(159)中之后:接收删除所述第一表的请求(158a);以及递减所述第一表(158a)的每个数据块(152)的所述引用计数(154)。12.一种系统(100),其特征在于,包括:数据处理硬件(144);和与所述数据处理硬件(...

【专利技术属性】
技术研发人员:帕文
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1