CN113227986A - 存储查询计划的方法和系统 - Google Patents
存储查询计划的方法和系统 Download PDFInfo
- Publication number
- CN113227986A CN113227986A CN201980084933.4A CN201980084933A CN113227986A CN 113227986 A CN113227986 A CN 113227986A CN 201980084933 A CN201980084933 A CN 201980084933A CN 113227986 A CN113227986 A CN 113227986A
- Authority
- CN
- China
- Prior art keywords
- query plan
- query
- compression
- storage tier
- storage
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000006835 compression Effects 0.000 claims abstract description 133
- 238000007906 compression Methods 0.000 claims abstract description 133
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000008859 change Effects 0.000 claims description 26
- 230000014509 gene expression Effects 0.000 claims description 13
- 230000006837 decompression Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101100112804 Arabidopsis thaliana CDA2 gene Proteins 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24524—Access plan code generation and invalidation; Reuse of access plans
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Operations Research (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于将查询计划存储在缓存部中的方法和计算机系统。所述方法可以包括以下步骤:确定查询计划的使用频率;基于所确定的使用频率来确定用于存储查询计划的目标存储层,其中,缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;根据目标存储层的压缩级别来处理查询计划;以及将经处理的查询计划存储在目标存储层中。
Description
背景技术
通常可以响应于来自用户的查询来访问数据库以提供查询结果。例如,结构化查询语言(“SQL”)是用于访问数据库(例如,分析数据库)的计算机语言。可以生成查询计划以提供查询结果。例如,分析数据库系统(“ADS”)可以处理SQL语句,以生成查询计划以供执行。查询计划可以存储在ADS的缓存部中。因此,当ADS接收到后续SQL语句时,ADS可以在缓存部中查找与SQL语句匹配的查询计划。因此可以避免重复生成查询计划的成本。
然而,缓存部的存储量有限,并且可能无法存储所有可用查询计划。当查询计划未存储在缓存部中时,可能需要实时生成查询计划,从而增加了服务所述查询的等待时间。因此,需要关于存储查询计划的改进。
发明内容
本公开的实施方式提供了一种将查询计划存储在缓存部中的方法。所述方法包括以下步骤:确定所述查询计划的使用频率;基于所确定的使用频率来确定用于存储所述查询计划的目标存储层,其中,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;根据所述目标存储层的所述压缩级别来处理所述查询计划;以及将经处理的查询计划存储在所述目标存储层中。
本公开的实施方式还提供了一种用于存储查询计划的计算机系统。所述计算机系统包括:缓存部,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;存储器,所述存储器存储有指令集;以及至少一个处理器,所述至少一个处理器被配置为执行所述指令集,以使所述计算机系统执行以下操作:确定所述查询计划的使用频率;基于所确定的使用频率来确定用于存储所述查询计划的目标存储层,其中,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;根据所述目标存储层的所述压缩级别来处理所述查询计划;以及将经处理的查询计划存储在所述目标存储层中。
本公开的实施方式还提供了一种查询数据库系统的方法。所述方法包括以下步骤:接收用户查询;从缓存部检索与所述用户查询相对应的查询计划;以及发送所检索的查询计划以供所述数据库系统执行,其中,所述缓存部包括用于存储查询计划的至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联。
附图说明
在下面的详细描述和附图中例示了本公开的实施方式和各个方面。图中所示的各种特征未按比例绘制。
图1A例示了实践本文描述的各种实现方式的分析数据库系统的示例性示意图。
图1B例示了用于实现与本公开一致的实施方式的前节点(front node)的示例性示意图。
图2A例示了根据本公开的实施方式的示例性查询计划200。
图2B例示了根据本公开的实施方式的SQL语句的示例性表达式(expression)。
图3例示了根据本公开的实施方式的用于存储查询计划的示例性前节点。
图4例示了根据本公开的实施方式的用于存储查询计划的示例性查询计划缓存部。
图5例示了根据本公开的实施方式的查询计划的示例性压缩改变。
图6是根据本公开的实施方式的用于将查询计划存储在缓存部中的示例性计算机实现的方法的流程图。
图7例示了根据本公开的实施方式的对数据库系统进行查询的示例性计算机实现的方法的流程图。
具体实施方式
现在将详细参考示例性实施方式,该示例性实施方式的示例在附图中例示出。在所有附图中,只要可能,就将使用相同的附图标记指代相同或相似的部分。
如本文所使用的,用语“包括(comprises)”、“包括(comprising)”或其任何其它变型旨在涵盖非排他性包括,使得包括一系列要素的处理、方法、组合物、物品或装置不仅包括这些要素,而且可以包括未明确列出或这种处理、方法、组合物、物品或装置所固有的其它要素。用语“示例性”以“示例”而不是“理想”的意义使用。
本公开中描述的技术具有以下技术效果中的一个或更多个技术效果。在一些实现方式中,本公开中描述的技术可以将查询计划缓存部组织为多个层,其中不同层中的查询计划被压缩到不同程度。这允许将频繁访问的查询计划放置在压缩程度较低的层中以提供更快的访问,而将不频繁访问的查询计划放置在压缩程度较高的层处以消耗较少的存储器空间。因此,所述技术可以在查询计划的访问速度与存储空间之间取得平衡。在一些实现方式中,所述技术还可以以递增(incremental)的方式改变查询计划的压缩率。例如,可以压缩/解压缩查询计划的一部分运算符,而不是压缩/解压缩查询计划的所有运算符。因此,所述技术可以以递增的方式逐渐改变查询计划的压缩级别,从而提高压缩/解压缩查询计划的效率。
图1A例示了分析数据库系统(“ADS”)100的示意图。ADS 100可以包括负载均衡器101、前节点103、计算机节点105和数据源107。负载均衡器101可以从用户接收查询(例如,SQL语句)。由于ADS 100通常可以包括多个前节点103,因此负载均衡器101可以确定各个前节点的当前负载并选择前节点103中的一个前节点来处理所接收到的查询,使得可以均衡各个前节点的负载。前节点103可以处理所接收到的查询以生成至少一个查询计划。例如,前节点103可以根据查询语法解析查询,并生成至少一个查询计划。计算机节点105可以接收查询计划、执行查询计划、从数据资源107收集执行结果并将执行结果返回至用户。
当查询很复杂时,查询计划的生成可能比查询计划的执行花费更多时间。除了时间成本外,查询计划的生成还消耗硬件资源(诸如处理单元和存储器)。为了降低时间和硬件两者的成本,前节点103中的各个前节点可以将所生成的查询计划存储在缓存部中。所述缓存部可以称为查询计划缓存部。
图1B例示了前节点103的示意图。如图1B所示,前节点103可以包括查询解析器1031、查询计划器1033和查询计划缓存部1035。查询解析器1031可以解析查询,并且查询计划器1033可以基于所解析的查询生成参数,以在查询计划缓存部1035中查找匹配的查询计划。如果未找到匹配的查询计划,则查询计划器1033可以进一步基于该查询生成新的查询计划。由于许多查询计划可以被查询重复使用,因此可以降低生成查询计划的成本。查询计划通常存储在复杂的数据结构中,并且可以在查询计划缓存部1035中占据大量空间,特别是当存储了大量查询计划以提高查询的匹配率时。为了减少查询计划的占用空间,前节点103可以压缩查询计划。为了检索查询计划,当经压缩的查询计划存储在查询计划缓存部中时,需要进行解压缩。应理解,对查询计划进行解压缩也可能需要花费时间。
鉴于上述问题,本公开的实施方式提供了用于存储查询计划的系统和方法,使得可以实现存储和执行查询计划的空间效率和时间效率。
图2A例示了根据本公开的实施方式的示例性查询计划200。如上文所讨论的,可以基于查询(例如,SQL语句)来生成查询计划。例如,分析数据库系统可以包括具有学校所有员工的信息的数据表。所述信息可以包括员工编号、姓名、年龄和薪资。用户可以如下所示向分析数据库系统输入示例性查询(例如,SQL语句)
SELECT*
FROM employee
WHERE age<40
ORDER BY salary DESC
LIMIT 10
上面的查询可以搜索40岁以下薪资最高的10名员工,并根据薪资的降序显示相关信息(例如,员工编号、姓名、年龄和薪资)。
分析数据库系统可以生成与查询相对应的查询计划200。如图2A所示,查询计划200可以包括第一运算符201、第二运算符203和第三运算符205。第一运算符201可以是包括过滤条件(filter)“age<K”的“SCAN”运算符,其中,在该示例中,“K”是40。第二运算符203可以是包括排序关键词(key)“salary”和顺序“DESE”的“SORT”运算符,使得可以按照薪资的降序对SQL语句的结果进行排序。第三运算符205可以是包括限制“N”的“LIMIT”运算符,其中,在该示例中,“N”是10。因此,可以最终输出由第二运算符203生成的结果中的仅10个结果。可以根据对应查询向查询计划200的“K”和“N”分配任何值。例如,根据上述示例性查询,“K”是40,并且“N”是10。
除了查询计划200外,还可以通过参数化查询来生成关键词。例如,可以根据上述示例性查询生成关键词“SELECT*FROM employee WHERE age<K ORDER BY salary DESCLIMIT N”。因此,可以基于查询来生成关键词和查询计划。
虽然可以根据上述示例性查询来生成查询计划200,但是除了上述示例性查询外的查询也可以访问查询计划200。例如,搜索30岁以下薪资最高的20名员工并根据薪资的降序显示相关信息的另一查询也可以访问查询计划200,但“k”和“N”的值可以被分配不同的值。因此,查询计划可以与一个或更多个查询相关联。
应理解,运算符的类型不限于如上文所讨论的“SCAN”、“SORT”或“LIMIT”。而且,查询计划的以上三个运算符仅是示例性的。查询计划可以包括至少一个运算符,并且运算符的数量不限于三个。例如,针对复杂的查询,查询计划可以包括20个运算符。因此,存储复杂的查询可以占用查询计划缓存部的大量空间。
查询计划的运算符通常可以包括与查询语句相关的一个或更多个查询表达式。例如,“Filter”运算符可以包括表达式作为其过滤条件(例如“Predicate”)。在查询计划的本地对象格式中,表达式可以作为节点或子树存储在通过解析查询语句(例如,SQL语句)而生成的抽象语法树(AST)中。可以通过将这些表达式转换回查询语句中的子字符串来对所述表达式进行压缩,并通过将子字符串解析成AST节点来对该表达式进行解压缩。图2B例示了SQL语句的示例性表达式。例如,SQL语句可以是与图2B的AST中的子树相对应的“column1+column2>1.0”。
图3例示了根据本公开的实施方式的用于存储查询计划的示例性前节点300。前节点300可以被实现为被包括在图1所示的分析数据库系统100中的多个前节点103中的一个前节点。前节点300可以包括接口单元301、处理器303和查询计划缓存部305。
在一些实施方式中,接口单元301可以与分析数据库系统的其它部件进行通信。例如,接口单元301可以从分析数据库系统的负载均衡器接收查询,该负载均衡器根据多个前节点的负载向前节点300分配查询。接口单元301还可以与分析数据库系统的外部存储部310进行通信。分析数据库系统的外部存储部310可以被实现为任何类型的易失性存储器设备或非易失性存储器设备或其组合,诸如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、闪存存储器或者磁盘或光盘。应理解,外部存储部310可以由分析数据库系统的其它部件(例如,计算机节点或数据源)共享。
可以对所接收的查询进行解析,以确定所存储的查询计划是否与查询匹配。例如,可以对查询进行解析,以识别该查询中的参数值,然后将该参数值转换成用占位符替换参数值的形式。基于查询的转换形式,可以识别与查询相对应的所存储的查询计划(例如,查询计划200),并发送出该查询计划以供执行。如果不存在与查询相对应的所存储的查询计划,则可以进一步生成与该查询相对应的查询计划。应理解,查询计划可以存储在查询计划缓存部305或外部存储部310中。
在一些实施方式中,查询计划缓存部305可以包括用于存储具有不同的使用频率的查询计划的至少两个存储层。所述存储层中的各个存储层可以与查询计划的压缩级别相关联。压缩级别可以至少包括未压缩级别、中等压缩级别、高压缩级别或完全压缩级别。查询计划的压缩级别可以与压缩算法相关。例如,Lempel-Ziv-Oberhumer(LZO)压缩算法可以提供中等级别的压缩,而BZ2压缩算法可以提供高级别的压缩。在一些实施方式中,可以通过百分比来测量压缩级别。例如,查询计划的中等压缩级别可以是20%压缩,其指示20%的查询计划运算符被压缩。如上文所讨论的,复杂的查询计划可以包括例如100个运算符,20%压缩可以指示100个运算符中的20个运算符被压缩。在一些实施方式中,查询计划的运算符中的各个运算符可以具有权重,并且压缩的百分比可以进一步与经压缩的运算符的权重相关联。运算符的权重可以与运算符的大小相关。通常,与简单的运算符相比,复杂的运算符可以具有更大的大小并因此具有更大的权重。返回参考图2A,例如,运算符201的权重可为30,运算符203的权重可为50,并且运算符205的权重可为20。在这种情况下,可以通过压缩运算符205来提供查询计划200的20%压缩。
查询计划缓存部305可以被实现为任何类型的易失性存储器设备或非易失性存储器设备或其组合,诸如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)。应理解,查询计划缓存部305相比外部存储部310提供对所存储的查询计划的更快访问。
图4例示了根据本公开的实施方式的用于存储查询计划的示例性查询计划缓存部305。如上文所讨论的,可以基于查询来生成关键词和查询计划。图4进一步例示了可以与查询计划相关联地存储关键词。与查询计划相关联的关键词也可以称为参考关键词。在一些实施方式中,查询计划缓存部可以包括至少两个存储层,并且所述存储层中的各个存储层可以与查询计划的压缩级别相关联。存储层的压缩级别可以包括未压缩级别、中等压缩级别或高压缩级别。根据特定设计要求,可以进一步提供更多的压缩级别。例如,也可以提供完全压缩级别。应理解,具有较低压缩级别的存储层可以提供查询计划的更快访问。在一些实施方式中,因为可能不经常使用具有完全压缩级别的查询计划,所以具有完全压缩级别的查询计划可以存储在外部存储部中。
如图4所示,查询计划缓存部305可以包括分别与未压缩级别、中等压缩级别和高压缩级别相对应的三个层401、403和405。应理解,如上文所讨论的,压缩级别(包括未压缩级别)可以与压缩算法和/或查询计划的被压缩的运算符的百分比相关。
可以将查询计划的容量分配给查询计划缓存部305的各个层。例如,可以通过前节点103的配置来限定各个层的容量。因此,各个压缩级别与查询计划的给定容量相关。在一些实施方式中,可以修改各个层的容量。例如,前节点103的用户可以修改层的容量,使得可以调整查询计划缓存部305的存储结构。在另一示例中,可以根据查询计划缓存部305的自由空间来修改层的容量。当查询计划缓存部305的自由空间小于预设值时,可以扩展具有高压缩级别的层的容量,使得可以将更多的查询计划存储在查询计划缓存部305中。
返回参考图3,处理器303可以包括多个单元,诸如使用频率确定单元3031、层确定单元3033、处理单元3035和存储单元3037。这些单元(以及任何对应的子模块或子单元)可以是处理器303的功能硬件单元(例如,集成电路的一部分),该处理器被设计为与其它部件或(存储在计算机可读介质上的)程序的一部分一起使用,当该程序由处理器303执行时,该程序执行一个或更多个功能。
使用频率确定单元3031可以确定查询计划的使用频率。各个查询计划可以与使用频率的计数器相关联,例如,该计数器对查询访问查询计划的次数进行计数。可以基于计数器来确定使用频率。在一些实施方式中,可以周期性地重设计数器。因此,查询计划的使用频率可以反映一段时间期间访问查询计划的频繁程度。在一些实施方式中,可以手动重设计数器。因此,使用频率还可以反映重设计数器之前的访问总次数。应理解,计数器可以与存储在查询计划缓存部305外部(例如,存储在外部存储部中)的查询计划相关联,从而对查询计划的用户频率进行计数。
例如,查询计划200最初存储在层403中。由于使用频率满足层405的压缩级别(例如,不频繁访问或查询计划缓存部305的存储结构的变化),因此查询计划200可以被移动以存储在层405中。使用频率确定单元3031可以访问查询计划200的计数器,并确定查询计划200的使用频率。
层确定单元3033可以基于使用频率来确定用于查询计划的目标存储层。由于查询计划的使用频率与存储层的压缩级别相关联,因此可以通过层确定单元3033建立使用频率与存储层之间的映射关系。因此,层确定单元3033可以首先确定至少两个存储层的压缩级别。例如,层确定单元3033可以确定层401具有未压缩级别,层403具有中等压缩级别,并且层405具有高压缩级别。层确定单元3033然后可以例如基于映射关系来将具有与使用频率相对应的压缩级别的存储层确定为目标存储层。例如,层确定单元3033可以将具有高压缩级别的层405确定为用于查询计划200的目标存储层。
应理解,由于存储层的容量是可调的,因此使用频率与存储层之间的映射关系是可变的。因此,如果调整了存储部的容量,则层确定单元3033可以更新使用频率与存储层之间的映射关系。
在一些实施方式中,层确定单元3033可以进一步确定目标存储层是否具有用于查询计划的容量。如果确定目标存储层不包含用于查询计划的另外的容量,则可以从目标存储层移除该目标存储层的一个或更多个现有查询计划。例如,可以将一个或更多个现有查询计划进一步压缩并移动至具有更高压缩级别的层。在一些实施方式中,如果目标存储层是查询计划缓存部305的最高压缩级别,则可以将一个或更多个现有查询计划移动至外部存储部310。可以根据驱逐(eviction)策略来选择一个或更多个现有查询计划。驱逐策略可以至少包括时钟(CLOCK)、最近最少使用(LRU)、不频繁使用(NFU)、老化、随机等。
所确定的目标存储层也可以是外部存储部310。例如,当几乎不访问查询计划时,层确定单元3033可以将外部存储部310确定为用于查询计划的目标层,以释放查询计划缓存部305的存储空间。
处理单元3035可以根据目标存储层的压缩级别来处理查询计划。在一些实施方式中,当查询计划200存储在第一层中并且目标存储层是第二层时,处理单元3035可以确定第一层与第二层的压缩级别之间的压缩级别差、基于所述压缩级别差来确定查询计划200的至少一个运算符的压缩改变并执行查询计划200的至少一个运算符的压缩改变。
例如,层403的中等压缩级别需要20%压缩,层405的高压缩级别需要50%压缩,因此压缩级别差可以是30%。压缩改变可以相应地包括查询计划200的30%的查询运算符的压缩。可以根据某种选择策略来选择30%的查询运算符。例如,30%的查询运算符可以是出现在查询计划中的查询运算符的前30%,或者是查询计划中最大的30%查询运算符等。应理解,查询运算符可以被加权,并且查询运算符的选择也可以基于查询运算符的权重。图5例示了根据本公开的实施方式的查询计划的示例性压缩改变。在该示例中,压缩改变是将查询计划200从“中等压缩级别”压缩至“高压缩级别”。如图5所示,权重为30的运算符201可以被进一步压缩。在一些实施方式中,如果确定查询计划存储在压缩程度较低或未被压缩的层中,则压缩改变还可以包括对运算符进行解压缩。
在一些实施方式中,压缩改变可以包括至少一个运算符的一部分的查询表达式的压缩或解压缩。未被压缩的查询表达式可以存储为抽象语法树节点。查询表达式的压缩或解压缩与查询运算符相似,因此省略其描述。
在一些实施方式中,查询计划200可以是针对缓存部的新的查询计划,并且被确定为存储在查询计划缓存部305的存储层(例如,层405)中。如上文所讨论的,查询计划也可以存储在外部存储部310中。针对缓存部的新的查询计划还包括最初存储在外部存储部310中的查询计划,以及基于查询语句生成的查询计划。可以将查询计划以不同的压缩级别(例如,未压缩级别、中等压缩级别或高压缩级别)存储在外部存储部310中。
此外,应理解,可以将压缩改变定向至超过一个的运算符,并且一个运算符的压缩改变可以与另一运算符的压缩改变不同。例如,在示例性压缩改变中,在压缩运算符203的同时,可以不压缩运算符205。
存储单元3037可以将经处理的查询计划存储在由层确定单元3033确定的目标存储层中。例如,存储单元3037可以将经处理的查询计划200存储至层405。
根据本公开的实施方式,前节点300的缓存部可以提供具有不同的压缩级别的至少两个存储层,使得可以平衡查询计划的存储大小和访问速度。而且,可以对查询计划的运算符进行压缩或解压缩以改变该查询计划的压缩级别,使得可以调整查询计划的压缩级别。
图6是根据本公开的实施方式的用于将查询计划存储在缓存部中的示例性计算机实现的方法600的流程图。例如,方法600可以由计算机系统(诸如分析数据库系统的前节点(例如,图1A的前节点103a))来实现。计算机系统可以包括:存储器,该存储器存储有指令集;以及至少一个处理器,该至少一个处理器被配置为执行指令集,以使计算机系统执行方法600。参考图6,方法600可以包括如下所述的步骤601至步骤607。
在步骤601,计算机系统可以确定查询计划(例如,图2的查询计划200)的使用频率。各个查询计划可以与使用频率的计数器相关联,以对访问查询计划以生成查询结果的次数进行计数,并且可以基于该计数器来确定使用频率。
在一些实施方式中,缓存部(例如,图3的查询计划缓存部305)可以包括至少两个存储层(例如,图4的层401、403和405),并且存储层中的各个存储层可以与查询计划的压缩级别相关联。存储层的压缩级别可以至少包括未压缩级别、中等压缩级别或高压缩级别。
缓存部的各个存储层可以与一定范围的使用频率相关联。例如,该范围可以包括上使用频率阈值和下使用频率阈值。在一些实施方式中,可以修改使用频率的范围,以扩展或减少该层内的查询计划。
在步骤603,计算机系统可以基于使用频率来确定用于查询计划的目标存储层。在一些实施方式中,计算机系统可以确定至少两个存储层的压缩级别,并将具有与使用频率相对应的压缩级别的存储层确定为目标存储层。
除了缓存部的存储层外,所确定的目标存储层还可以是外部存储部(例如,图3的外部存储部310)。例如,当几乎不访问查询计划时,计算机系统可以将外部存储部确定为用于查询计划的目标层,以释放查询计划缓存部的存储空间。
在步骤605,计算机系统可以根据目标存储层的压缩级别来处理查询计划。在一些实施方式中,查询计划先前存储在与目标存储层不同的第一存储层中。如上文所讨论的,查询计划可以包括至少一个查询运算符。计算机系统可以确定第一层和目标存储层的压缩级别之间的压缩级别差、基于该压缩级别差来确定对查询计划的至少一个运算符的压缩改变并对查询计划的至少一个运算符执行压缩改变。至少一个运算符可以被加权。在一些实施方式中,压缩改变可以包括至少一个运算符的一部分的压缩或解压缩。例如,对一个运算符的压缩改变可以不同于对另一运算符的压缩改变。在示例性压缩改变中,可以不压缩第一运算符,而压缩第二运算符。
在一些实施方式中,压缩改变可以包括至少一个运算符的一部分的查询表达式的压缩或解压缩。
在一些实施方式中,查询计划可以被确定为存储在外部存储部中。在这种情况下,计算机系统可以将查询计划移出缓存部。在将查询计划移出缓存部前,可以将查询计划压缩或解压缩至期望的压缩级别。例如,可以压缩查询计划中的所有查询运算符。应理解,查询计划的计数器可以与存储在外部存储部中的各个查询计划相关联,该计数器对访问查询计划以生成查询结果的次数进行计数。
在步骤607,计算机系统可以将经处理的查询计划存储在目标存储层中。
然后可以查询、检索和执行所存储的查询计划。图7例示了根据本公开的实施方式的查询数据库系统的方法700的流程图。方法700可以由计算机系统(诸如图1A的分析数据库系统(“ADS”)100)来实现。计算机系统可以包括:存储器,该存储器存储有指令集;以及至少一个处理器,该至少一个处理器被配置为执行指令集,以使计算机系统执行方法700。参考图7,方法700可以包括如下所述的步骤701至步骤705。
在步骤701,计算机系统可以接收用户查询。如上文所讨论的,用户查询可以是SQL语句。
在步骤703,计算机系统可以从缓存部检索与用户查询相对应的查询计划。例如,缓存部可以是图3和图4的查询计划缓存部305。缓存部可以包括用于存储查询计划的至少两个存储层(例如,图4的层401、403和405),并且存储层中的各个存储层与查询计划的压缩级别(例如,未压缩级别、中等压缩级别和高压缩级别)相关联。
可以依次或使用多个线程从缓存部检索查询计划。如上文所讨论的,查询计划可以与参考关键词相关联地存储在缓存部中。可以生成参考关键词和查询计划,并将该参考关键词和查询计划一起存储在缓存部中。因此,当接收到用户查询时,计算机可以通过例如参数化所接收到的用户查询来生成关键词,并且检索与所生成的关键词匹配的参考关键词所关联的查询计划。换句话说,如果确定参考关键词与所生成的关键词匹配,则这指示与参考关键词相关联的查询计划与所接收到的用户查询相对应。
在一些实施方式中,计算机系统可以在存储层中依次搜索与用户查询相对应的查询计划。例如,计算机系统可以在第一存储层和第二存储层中依次搜索查询计划。第一存储层存储具有第一使用频率的第一查询计划,第二存储层存储具有第二使用频率的第二查询计划,并且第一使用频率大于第二使用频率。如上文所讨论的,压缩级别与用户频率具有映射关系。例如,具有较高使用频率的第一存储层可以具有较低的压缩级别。因此,计算机系统可以在压缩程度较低的存储层中搜索查询计划,然后再在后续存储层中进行搜索。
在一些实施方式中,计算机系统还可以使用多个线程在存储层中搜索与用户查询相对应的查询计划。因此,可以对包括第一存储层和第二存储层的超过一个的存储层执行搜索。
在步骤705,计算机系统可以发送所检索的查询计划以供数据库系统执行。
本公开的实施方式还提供了一种计算机程序产品。所述计算机程序产品可以包括具有用于使处理器执行上述方法的计算机可读程序指令的非暂时性计算机可读存储介质。
计算机可读存储介质可以是可以存储指令以供指令执行设备使用的有形设备。例如,计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备(诸如记录有指令的凹槽中的穿孔卡或凸起结构)以及前述项的任何合适的组合。
用于执行上述方法的计算机可读程序指令可以是汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或更多种编程语言(包括面向对象的编程语言)和常规过程编程语言的任何组合编写的源代码或对象代码。所述计算机可读程序指令可以完全在计算机系统上作为独立软件包来执行,或者部分地在第一计算机上并且部分地在远离所述第一计算机的第二计算机上执行。在后一种场景中,第二远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至第一计算机。
可以将计算机可读程序指令提供至通用计算机或专用计算机的处理器或者其它可编程数据处理装置,以产生机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现上述方法的装置。
附图中的流程图和图示例示了根据说明书各种实施方式的设备、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或图示中的框可以表示包括用于实现特定功能的一个或更多个可执行指令的软件程序、代码段或代码部分。还应注意,在一些另选实现方式中,框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行所述框。还将注意,图示和/或流程图的各个框以及图示和流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
应理解,本说明书的为清楚起见在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合地提供。相比之下,本说明书的为简洁起见在单个实施方式的上下文中描述的各种特征也可以单独地或以任何合适的子组合或如在本说明书的任何其它描述的实施方式中那样适当地提供。在各种实施方式的上下文中描述的某些特征不应被认为是所述实施方式的必要特征,除非该实施方式在不具有所述要素的情况下就无法工作。
尽管已结合本说明书的特定实施方式描述了本说明书,但是显然,许多另选方案、修改例和变型对于本领域技术人员而言将是显而易见的。例如,尽管以查询计划的压缩为例描述了一些实施方式,但是所描述的系统和方法可以应用于查询计划的解压缩。因此,旨在涵盖落入所附权利要求书的精神和广泛范围内的所有这样的另选方案、修改例和变型。
Claims (17)
1.一种将查询计划存储在缓存部中的方法,所述方法包括以下步骤:
确定所述查询计划的使用频率;
基于所确定的使用频率来确定用于存储所述查询计划的目标存储层,其中,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;
根据所述目标存储层的所述压缩级别来处理所述查询计划;以及
将经处理的查询计划存储在所述目标存储层中。
2.根据权利要求1所述的方法,其中,所述查询计划的压缩级别包括未压缩级别、中等压缩级别或高压缩级别。
3.根据权利要求1所述的方法,其中,基于所述使用频率来确定所述查询计划的目标存储层进一步包括:
确定所述至少两个存储层的压缩级别;以及
将具有与所述使用频率相对应的压缩级别的存储层确定为所述目标存储层。
4.根据权利要求1所述的方法,其中,所述查询计划预先存储在与所述目标存储层不同的第一存储层中,并且将所述查询计划从所述第一存储层移动至所述目标存储层。
5.根据权利要求4所述的方法,其中,所述查询计划包括至少一个查询运算符,并且根据所述目标存储层的所述压缩级别来处理所述查询计划的步骤进一步包括:
确定所述第一层和所述目标存储层的压缩级别之间的压缩级别差;
基于所述压缩级别差,确定对所述查询计划的所述至少一个查询运算符的压缩改变;以及
根据压缩算法,执行对所述查询计划的所述至少一个查询运算符的压缩改变。
6.根据权利要求5所述的方法,其中,所述压缩改变包括所述至少一个查询运算符的一部分的压缩或解压缩。
7.根据权利要求5所述的方法,其中,所述至少一个查询运算符中的各个查询运算符进一步包括查询表达式,并且所述压缩改变进一步包括所述查询表达式的一部分的压缩或解压缩。
8.根据权利要求5所述的方法,其中,所确定的目标存储层是外部存储部,并且根据所述存储层的所述压缩级别来处理所述查询计划的步骤进一步包括:
压缩所述查询计划中包括的所有查询运算符。
9.根据权利要求1所述的方法,其中,所述至少两个存储层包括第一存储层和第二存储层,所述第二存储层与比所述第一存储层的压缩级别更高的压缩级别相关联,并且存储在所述第二存储层中的查询计划与比存储在所述第一存储层中的查询计划的使用频率更低的使用频率相关联。
10.根据权利要求1所述的方法,其中,计数器与所述查询计划相关联,所述计数器对访问所述查询计划以生成查询结果的次数进行计数。
11.一种用于存储查询计划的计算机系统,所述计算机系统包括:
缓存部,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;
存储器,所述存储器存储有指令集;以及
至少一个处理器,所述至少一个处理器被配置为执行所述指令集,以使所述计算机系统执行以下操作:
确定所述查询计划的使用频率;
基于所确定的使用频率来确定用于存储所述查询计划的目标存储层,其中,所述缓存部包括至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联;
根据所述目标存储层的所述压缩级别来处理所述查询计划;以及
将经处理的查询计划存储在所述目标存储层中。
12.根据权利要求11所述的计算机系统,其中,所述至少一个处理器被配置为执行所述指令集,以使所述计算机系统进一步执行以下操作:
确定所述至少两个存储层的压缩级别;以及
将具有与所述使用频率相对应的压缩级别的存储层确定为所述目标存储层。
13.一种查询数据库系统的方法,所述方法包括以下步骤:
接收用户查询;
从缓存部检索与所述用户查询相对应的查询计划;以及
发送所检索的查询计划以供所述数据库系统执行,其中,
所述缓存部包括用于存储查询计划的至少两个存储层,并且所述存储层中的各个存储层与查询计划的压缩级别相关联。
14.根据权利要求13所述的方法,其中,从缓存部检索与所述用户查询相对应的查询计划的步骤进一步包括:
通过所述至少两个存储层依次检索所述查询计划;或者
使用多个线程通过所述至少两个存储层来检索所述查询计划。
15.根据权利要求14所述的方法,其中,通过所述至少两个存储层依次检索所述查询计划的步骤进一步包括:
在第一存储层和第二存储层中依次搜索与所述用户查询相对应的所述查询计划,其中,
所述第一存储层存储具有第一使用频率的第一查询计划,并且所述第二存储层存储具有第二使用频率的第二查询计划,并且所述第一使用频率大于所述第二使用频率。
16.根据权利要求13所述的方法,其中,所述查询计划与参考关键词相关联地存储在所述缓存部中。
17.根据权利要求16所述的方法,其中,从缓存部检索与所述用户查询相对应的查询计划的步骤:
通过参数化所接收到的用户查询来生成关键词;以及
检索与和所生成的关键词匹配的所述参考关键词相关联的所述查询计划。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/073885 WO2020154945A1 (en) | 2019-01-30 | 2019-01-30 | Method and system for storing query plans |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113227986A true CN113227986A (zh) | 2021-08-06 |
CN113227986B CN113227986B (zh) | 2024-06-18 |
Family
ID=71841533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980084933.4A Active CN113227986B (zh) | 2019-01-30 | 2019-01-30 | 存储查询计划的方法和系统及查询数据库系统的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11954105B2 (zh) |
EP (1) | EP3918480A4 (zh) |
CN (1) | CN113227986B (zh) |
WO (1) | WO2020154945A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240020304A1 (en) * | 2020-10-15 | 2024-01-18 | Nippon Telegraph And Telephone Corporation | Data processing device, data processing method, and data processing program |
US11971889B2 (en) * | 2021-07-20 | 2024-04-30 | Sap Se | Intelligent query plan cache size management |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173822A1 (en) * | 2010-01-06 | 2012-07-05 | Richard Testardi | System and method for storing data off site |
US20140244603A1 (en) * | 2013-02-25 | 2014-08-28 | International Business Machines Corporation | Multi-Level Memory Compression |
US20150012692A1 (en) * | 2011-02-15 | 2015-01-08 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data |
US20150205535A1 (en) * | 2011-02-15 | 2015-07-23 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512747B2 (en) | 2006-04-14 | 2009-03-31 | International Business Machines Corporation | Method and apparatus for efficiently supporting multiple one-time table access operations in a hierarchical memory setting |
US8949222B2 (en) * | 2012-05-11 | 2015-02-03 | International Business Machines Corporation | Changing the compression level of query plans |
US11093496B1 (en) * | 2017-11-22 | 2021-08-17 | Amazon Technologies, Inc. | Performance-based query plan caching |
US11188538B2 (en) * | 2018-12-27 | 2021-11-30 | Teradata Us, Inc. | Dynamic generated query plan caching |
US11036740B2 (en) * | 2019-09-11 | 2021-06-15 | Sap Se | Database management system query plan cache management |
-
2019
- 2019-01-30 CN CN201980084933.4A patent/CN113227986B/zh active Active
- 2019-01-30 EP EP19913461.0A patent/EP3918480A4/en active Pending
- 2019-01-30 WO PCT/CN2019/073885 patent/WO2020154945A1/en unknown
- 2019-01-30 US US17/420,567 patent/US11954105B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173822A1 (en) * | 2010-01-06 | 2012-07-05 | Richard Testardi | System and method for storing data off site |
US20150012692A1 (en) * | 2011-02-15 | 2015-01-08 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data |
US20150205535A1 (en) * | 2011-02-15 | 2015-07-23 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US20140244603A1 (en) * | 2013-02-25 | 2014-08-28 | International Business Machines Corporation | Multi-Level Memory Compression |
Also Published As
Publication number | Publication date |
---|---|
WO2020154945A1 (en) | 2020-08-06 |
EP3918480A1 (en) | 2021-12-08 |
US11954105B2 (en) | 2024-04-09 |
EP3918480A4 (en) | 2022-09-14 |
US20220114179A1 (en) | 2022-04-14 |
CN113227986B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9025892B1 (en) | Data record compression with progressive and/or selective decomposition | |
US11520743B2 (en) | Storing compression units in relational tables | |
EP2727247B1 (en) | Database compression system and method | |
US8712972B2 (en) | Query optimization with awareness of limited resource usage | |
US8949222B2 (en) | Changing the compression level of query plans | |
US11023452B2 (en) | Data dictionary with a reduced need for rebuilding | |
KR101725172B1 (ko) | 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법 | |
US20150310129A1 (en) | Method of managing database, management computer and storage medium | |
US9633059B2 (en) | Data table performance optimization | |
US10540355B1 (en) | ACID database | |
US20150379073A1 (en) | Virtual split dictionary for search optimization | |
US11954105B2 (en) | Method and system for storing query plans in a cache and method for querying a database system | |
US11775526B1 (en) | Systems and methods for joining non-relational database search results over multiple database indexes | |
JP2018046406A (ja) | データ圧縮方法、データ圧縮装置、コンピュータプログラム及びデータベースシステム | |
US20150081710A1 (en) | Data typing with probabilistic maps having imbalanced error costs | |
JP2016025536A (ja) | 圧縮プログラム、圧縮方法および圧縮装置 | |
US10810196B2 (en) | Materialized view generation | |
CN107066573B (zh) | 一种基于三维表结构的数据关联存取方法及应用 | |
CN111767289A (zh) | 一种基于内存数据库的数据存储方法及装置 | |
JP6150785B2 (ja) | 個別にアクセス可能なデータ単位の記憶の管理 | |
US11119999B2 (en) | Zero-overhead hash filters | |
EP2960809A1 (en) | Transparent access to multi-temperature data | |
JP6476346B2 (ja) | データ分類方法及びデータ分類装置 | |
Makris et al. | Exploiting progressions for improving inverted index compression |
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 |