CN110637292B - 用于查询资源高速缓存的系统和方法 - Google Patents
用于查询资源高速缓存的系统和方法 Download PDFInfo
- Publication number
- CN110637292B CN110637292B CN201780090982.XA CN201780090982A CN110637292B CN 110637292 B CN110637292 B CN 110637292B CN 201780090982 A CN201780090982 A CN 201780090982A CN 110637292 B CN110637292 B CN 110637292B
- Authority
- CN
- China
- Prior art keywords
- execution
- time
- query
- queries
- resource
- 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 description 32
- 230000001186 cumulative effect Effects 0.000 claims abstract description 35
- 230000004044 response Effects 0.000 claims description 16
- 230000004931 aggregating effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 16
- 241000282472 Canis lupus familiaris Species 0.000 description 12
- 238000009825 accumulation Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 239000004615 ingredient Substances 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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/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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
操作包括基于查询的执行时间来判定是否将该查询所访问的资源进行高速缓存。系统识别同一查询的执行集。系统为同一查询的执行集确定累积执行时间。如果累积执行时间超过阈值,则系统将用于执行该查询的资源进行高速缓存。
Description
技术领域
本公开涉及资源高速缓存。特别地,本公开涉及选择性地将由查询访问的资源进行高速缓存。
权益声明
本申请要求于2017年5月19日提交的编号为美国非临时申请15/600,518的权益和优先权,该申请通过引用并入本文。
背景技术
高速缓存可以指用于存储数据的硬件和/或软件。从高速缓存中检索数据通常比从硬盘或远离执行环境的任何存储系统中检索数据更快。最常见的是,高速缓存存储最近使用的数据。高速缓存可以存储被存储在另一个位置的数据的副本,和/或存储计算的结果。基于web的高速缓存也是常见的,其中服务器和客户端之间的web高速缓存存储数据。客户端可以比服务器中的数据更快地从web高速缓存访问数据。
查询从数据库中获取指定的数据。通常,数据存储在关系数据库中。关系数据库将数据存储在一个或多个表中。这些表由数据行组成,并组织成字段或列。例如,“FirstName”和“LastName”是数据表的字段,并且其中行的数量是存储到表的名字的数量。
结构化查询语言(SQL)是用于管理关系数据库中数据的语言。SQL查询基于指定的准则来检索数据。大多数SQL查询使用检索数据的语句SELECT(选择)。然后,SQL查询可以指定准则,诸如FROM(来自)-哪些表包含数据;JOIN(联接)-指定连接表的规则;WHERE(哪里)-限制由查询返回的行;GROUPBY(分组)–聚合重复的行;以及ORDERBY(排序)-指定数据排序的次序。例如,SQL查询“SELECT breed,age,name FROM Dogs WHERE age<3 ORDER BYbreed”将通过品种按字母顺序从“Dogs”表中返回3岁以下的狗的列表,从而检索每只狗的品种、年龄和名字。输出看起来像:“Bulldog 1 Max|Cocker Spaniel 2 Joey|GoldenRetriever 1.5 Belinda”。
越来越多地使用多租户云体系架构存储数据库。在多租户云体系架构中,使用共享资源存储来自不同租户的数据。共享资源可以是服务器、数据库和/或表的全部或部分的某种组合。多租户减少了存储数据所需的资源量,从而节省了成本。
本部分中描述的方法是可以追求的方法,但不一定是先前已经构思或追求的方法。因此,除非另有说明,否则不应认为本部分中描述的任何方法仅仅因为它们包含在本部分中就有资格作为现有技术。
附图说明
通过示例而非限制的方式在附图中示出了实施例。应当注意的是,在本公开中对“一”或“一个”实施例的引用不一定是指同一实施例,并且它们意味着至少一个。在附图中:
图1图示了根据一个或多个实施例的资源高速缓存系统;
图2图示了根据一个或多个实施例的用于通过查询进行选择性高速缓存的示例操作集;
图3图示了根据一个或多个实施例的用于通过资源进行选择性高速缓存的示例操作集;
图4图示了根据一个或多个实施例的用于通过JOIN进行选择性高速缓存的示例操作集;
图5图示了根据一个或多个实施例的系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以提供透彻理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些示例中,参考框图形式描述了众所周知的结构和设备,以避免不必要地模糊本发明。
1.总体概述
2.资源高速缓存系统
3.基于查询的资源高速缓存
4.基于资源使用的资源高速缓存
5.基于操作的资源高速缓存
6.示例实施例-聚合查询
7.其它事项;扩展
8.硬件概述
1.总体概述
一个或多个实施例包括选择性地将由查询访问的资源进行高速缓存。可以响应于资源的原始副本被更新而连续地或周期性地更新高速缓存的资源。维护高速缓存中的最新资源允许通过访问高速缓存中的资源而不是从盘或其它主存储装置访问资源来执行查询。可以至少基于对应查询的执行时间来选择用于高速缓存的资源。在示例中,如果查询的执行的执行时间超过阈值,则将查询所访问的资源进行高速缓存,以供将来执行同一查询。
一个或多个实施例包括基于查询的执行的累积执行时间来高速缓存查询所访问的资源。高速缓存引擎可以在初始时间段期间确定用于查询的执行的累积执行时间。高速缓存引擎还可以基于查询的执行的累积执行时间来判定是否要将在查询的执行期间要被访问的资源进行高速缓存。在初始时间段之后,可以在另一个时间段内将资源进行高速缓存。
高速缓存引擎可以使用任何方法基于对应查询的累积执行时间来确定要将哪些资源进行高速缓存。在示例中,如果在初始时间段期间查询的累积执行时间超过阈值,则在后续的时间段内将查询所访问的资源进行高速缓存。在另一个示例中,基于累积执行时间对查询进行排名。将用于具有最长累积执行时间的n个查询的资源进行高速缓存。
一个或多个实施例包括至少基于查询的执行的子集的执行时间来将查询所访问的资源进行高速缓存。将在初始时间段期间查询的每次执行的执行时间与阈值进行比较。如果任何特定执行的执行时间超过阈值,则该特定执行被确定为在计算上昂贵的执行。如果查询的计算上昂贵的执行时间超过阈值,则在后续的时间段内将用于该查询的资源进行高速缓存。
本说明书中描述的和/或权利要求书中阐述的一个或多个实施例可以不包括在这个总体概述部分中。
2.资源高速缓存系统
图1图示了根据一个或多个实施例的资源高速缓存系统100。资源高速缓存系统100是用于选择和高速缓存为执行查询而访问的资源(在本文中可以被称为由查询访问的资源)的系统。资源高速缓存系统100包括查询接口102、高速缓存引擎104、高速缓存124、查询执行引擎122和数据储存库110。在一个或多个实施例中,资源高速缓存系统100可以包括比图1所示的部件更多或更少的部件。图1所示的部件可以在彼此的本地或彼此远离。图1所示的部件可以以软件和/或硬件来实现。每个部件可以分布在多个应用和/或机器上。多个部件可以组合到一个应用和/或机器中。相对于一个部件描述的操作可以替代地由另一个部件执行。
在一个或多个实施例中,查询接口102是包括接受定义查询的输入的功能的接口。查询接口102可以是用户接口(UI),诸如图形用户接口(GUI)。查询接口可以呈现接受描述查询的查询简档的用户可修改字段。查询接口102可以包括接受和解析定义一个或多个查询的文件的功能。查询接口可以在查询的执行之后显示查询输出数据。
在实施例中,查询执行引擎122包括用于执行查询的硬件和/或软件部件。查询执行引擎122可以解析从查询接口接收的查询简档。查询执行引擎122可以将经解析的查询简档映射到SQL查询。查询执行引擎122可以将SQL查询发送到(一个或多个)适当的数据库以检索查询结果。查询执行引擎122可以对数据求和、对数据求平均,并全部或部分地组合表。
在实施例中,高速缓存124与存储数据的硬件和/或软件部件对应。存储在高速缓存124中的数据通常可以比存储在盘上、主存储器上或远离执行环境存储的数据被更快地访问。在示例中,高速缓存124存储先前已经从盘和/或主存储器中检索到的资源(在本文中称为“高速缓存的资源126”),用于执行查询。将资源存储在高速缓存中可以允许在不从盘访问资源的情况下附加执行同一查询。具体而言,查询所需的资源是从高速缓存而不是从盘访问的。响应于存储在盘中的数据的原始副本被更新,可以连续或定期地更新高速缓存。高速缓存124中的每个数据集或资源可以用指示该数据是当前还是过时的标志进行维护。高速缓存的资源可以是例如数据表、数据字段和/或计算的结果。作为示例,高速缓存的资源126可以是经由对两个现有表的JOIN操作创建的新表。
在实施例中,数据储存库110是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表的集合或任何其它存储机制)。另外,数据储存库110可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或可以不是相同的类型或位于相同的物理站点。此外,数据储存库110可以在与高速缓存引擎104、高速缓存124、查询接口102和查询执行引擎122相同的计算系统上实现或执行。可替代地或附加地,数据储存库110可以在与高速缓存引擎104、高速缓存124、查询接口102和查询执行引擎122分离的计算系统上实现或执行。数据储存库110可以经由直接连接或经由网络通信地耦合到高速缓存引擎104、高速缓存124、查询接口102和查询执行引擎122。
在实施例中,数据储存库110存储查询简档112。查询简档112包括关于查询的信息。查询简档包括但不限于查询属性114、查询执行时间116和查询资源118。可以基于查询性能来选择查询简档。查询简档112可以被存储用于具有高于某个个体阈值的个体执行时间的所选择的查询。
在实施例中,查询属性114可以包括在查询中执行或将要执行的一个或多个操作。例如,在查询“SELECTCustomer.CustomerName,Customers.CustomerIDFROMCustomers”中,操作SELECT(选择)是查询属性114。查询属性114的其它示例包括执行一系列操作的次序和一天中执行查询的时间。
在实施例中,在用于查询的查询简档内,查询资源118识别用于执行对应查询的资源120中的一个或多个。查询资源118可以包括在查询中指定的任何数据集。查询资源可以与字段对应。例如,在查询“SELECT Customers.CustomerName,Customers.CustomerlDFROM Customers”中,查询资源114包括字段CustomerName和CustomerlD。字段CustomerName和CustomerID是查询资源118的示例。查询资源118可以包括用于检索查询中所请求的数据的数据库中的表。例如,在上面的查询中,表Customers(客户)是查询资源118。如上所述,查询资源118可以被高速缓存在高速缓存124中,并且被称为高速缓存的资源126。
在实施例中,查询执行时间116是与查询的特定执行对应的时间。查询执行时间116可以是在发送执行特定查询的请求与从特定查询的执行接收结果之间的时间段。查询执行时间的示例包括1毫秒、10秒、16分钟和6小时。对于在不同时间执行的不同执行,同一查询的执行时间可以有所不同。例如,由于其它并发访问操作引起的输入/输出时间延迟可能使得查询的一次执行的执行时间大大超过其期间没有其它并发访问操作的同一查询的先前执行的执行时间。可以在支持多个用户的多租户云体系架构上执行查询。当系统资源接收到来自多个用户的请求时,在高峰时段期间系统可能过载。在高峰时段期间执行查询所花的时间可以比系统不过载的非高峰时段要长。查询执行时间还可以取决于诸如查询中的操作以及用于为查询检索数据的数据表数量之类的因素。
在一个或多个实施例中,高速缓存引擎104包括用于将资源进行高速缓存的硬件和/或软件部件。高速缓存引擎包括将数据的副本和/或计算的结果存储到高速缓存124的功能。高速缓存引擎104可以基于对应查询的执行时间选择性地将资源进行高速缓存。高速缓存引擎104可以根据标准的高速缓存技术(诸如通过将最近使用的数据进行高速缓存)将资源进行高速缓存。
在实施例中,查询分析器106包括用于分析查询的硬件和/或软件部件。查询分析器106可以分析查询执行时间、查询属性和/或查询资源,以识别关于特定查询的信息。
查询分析器106可以包括解析查询并隔离查询中所包括的数据字段、查询中所包括的SQL操作和/或存储系统中用于检索所请求的数据的数据表的功能。查询分析器106可以包括分析查询集以判定一次或多次查询执行是否构成相同查询的功能。例如,在时间1,系统从用户1接收查询Qa=(f1,f2,f3),其中fi是要在查询中检索的数据字段。在时间2,系统从用户2接收查询Qb=(f2,f1,f3)。虽然元素在不同的时间处于不同的次序,但是Qa和Qb就检索的数据而言是完全相同的。通过分析查询属性114和查询资源118,资源高速缓存系统100可以识别出同一查询的多次执行。
查询分析器106可以包括计算查询的执行时间的功能。查询分析器可以计算查询的单次执行的执行时间。查询分析器可以计算在特定时间段期间同一查询的多次执行的累积执行时间。查询分析器106可以通过聚合查询的每次个体执行的执行时间来计算同一查询的多次执行的累积执行时间。
在实施例中,资源分析器108包括用于分析资源的硬件和/或软件部件。资源分析器108可以分析查询执行时间、查询属性和/或查询资源,以识别关于特定资源的信息。
资源分析器108可以包括解析查询并隔离查询中包括的数据字段、查询中包括的SQL操作和/或存储系统中用于检索所请求的数据的数据表的功能。查询分析器106可以包括分析查询以判定一次或多次查询执行是否使用同一资源的功能。例如,在时间1,系统从用户1接收查询Q1,“SELECTDog.Breed,Dog.Age FROM Dogs”。在时间2,系统从用户2接收查询Q2,“SELECT Dog.Name,Dog.Breed,DogAquisitionDate FROM Dogs”。资源分析器可以确定Q1和Q2两者都查询表Dogs(狗)。
资源分析器108可以包括计算一段时间期间需要访问特定资源的时间量的功能。资源分析器108可以确定在一段时间期间使用特定资源的每个查询的执行时间。资源分析器108可以通过聚合每个个体查询的执行时间来计算使用特定资源的多个查询的累积执行时间。
3.基于查询的资源高速缓存
图2图示了根据一个或多个实施例的用于基于相同查询来选择性地将一个或多个资源进行高速缓存的示例操作集。图2所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图2所示的特定操作顺序不应当被解释为限制一个或多个实施例的范围。
在实施例中,查询分析器识别执行时间高于个体阈值的查询(操作202)。查询分析器可以建立用于与个体查询的执行时间进行比较的个体阈值K1。K1的值可以基于例如查询的复杂度、用户偏好和可用的系统资源来建立。查询分析器将查询的执行时间与K1进行比较,以判定查询的执行时间是否超过K1。
对于执行时间超过个体阈值的查询,资源高速缓存系统可以存储查询日志。对于执行时间高于个体阈值的查询的子集,诸如包括SELECT查询操作的查询,资源高速缓存系统可以存储查询日志。
操作202可以用于识别要在操作204中分析的候选查询。可替代地,可以跳过操作202,并且可以在操作204中分析所有查询。
在实施例中,资源高速缓存系统在初始时间段期间识别同一查询的一次或多次执行(操作204)。查询分析器可以比较多个查询的查询属性,以判定查询是否相同。例如,查询执行引擎在一个月的时间段期间使用SELECT查询操作执行了以下查询Q1-Q6:
Q1=(f1,f2,f3,f4,f5)
Q2=(f1,f2,f3,f4,f5)
Q3=(f3,f9,f2,f5,f4)
Q4=(f1,f4,f3,f5,f2)
Q5=(f5,f6,f7,f8,f9)
Q6=(f6,f2,f3,f7,f5)
字段f1-f9是在查询中被选择的数据字段。查询分析器比较数据字段值以识别相同的查询。相同的查询选择相同的数据字段,虽然不一定以相同的次序。资源高速缓存系统将Q1=Q2=Q4识别为该月期间发生的同一查询的三次执行。
在实施例中,经由日志确定执行特定存储的查询。具体而言,高速缓存系统维护日志以跟踪存储的查询的所有执行。每个查询与简档相关联。简档包括查询的每次执行的特点。简档可以存储查询的每次执行的运行时间。
在实施例中,高速缓存引擎聚合查询的多次执行的执行时间,以计算在初始时间段期间查询的累积执行时间(操作206)。例如,查询一天已执行6次。系统已经存储6个对应的执行时间:T1=2分钟,T2=1小时,T3=20分钟,T4=5分钟,T5=1小时22分钟,以及T6=30秒。系统计算一段时间期间查询的累积执行时间:
Ttot=T1+T2+T3+T4+T5+T6
=2分钟+1小时+20分钟+5分钟+1小时22分钟+30秒
=2小时49分钟30秒
一天时段期间查询的累积执行时间为Ttot=2小时49分钟30秒。
查询分析器可以使用一段时间期间发生的同一查询的执行来计算累积执行时间,如上所示。可替代地,查询分析器可以使用在一段时间期间发生的同一查询的执行子集来计算累积执行时间。例如,查询分析器过滤查询执行以包括执行时间超过阈值查询执行时间K1的查询。当K1=15分钟时,系统将存储查询时间超过15分钟的执行实例-T2、T3和T5。然后,系统将使用经过滤的查询来计算累积查询时间:
TK1=T2+T3+T5
=1小时+20分钟+1小时22分钟
=2小时44分钟
在一天的时间段期间感兴趣的查询的累积执行时间为TK1=2小时44分钟。
在实施例中,高速缓存引擎判定累积执行时间是否超过累积阈值(操作208)。例如,累积阈值是K2=2小时。对于上面的TK1,累积执行时间为2小时44分钟。在这种情况下,TK1>K2,并且累积执行时间超过累积阈值。
如果累积执行时间超过阈值,则在初始时间段之后的另一个时间段内高速缓存引擎将查询所需的(一个或多个)资源进行高速缓存(操作210)。例如,高速缓存引擎可以将包含查询中所选择的字段的每个表进行高速缓存。高速缓存引擎可以将查询的输出进行高速缓存。例如,查询从表中选择四个字段。高速缓存引擎可以将数据高速缓存在四个选择的字段中。高速缓存引擎可以将(一个或多个)资源保留特定的时间量,或者响应于检测到特定事件的发生而覆写(overwrite)(一个或多个)资源。
如果累积执行时间不超过阈值,则高速缓存引擎可以避免将查询所需的(一个或多个)资源进行高速缓存(操作212)。通过避免将快速运行的查询所需的资源进行高速缓存,资源高速缓存系统节省(conserve)高速缓存中的存储器并且避免不必要的操作。
在实施例中,可以从操作序列中省略操作212。例如,虽然上述资源高速缓存系统未选择特定资源以进行高速缓存,但是该系统仍然可以基于另一种高速缓存方法将该资源进行高速缓存。系统可以按照标准高速缓存技术在使用后立即将资源进行高速缓存,该标准高速缓存技术包括最近30秒内使用的资源的高速缓存。
作为示例,资源高速缓存系统识别在一年时段期间执行的具有SELECT操作且执行时间高于1分钟的查询。在该年期间执行的10000个查询中,有10个包括SELECT操作并且花费1分钟以上的时间来执行。用于这10个查询的查询日志在表(表1)中被捕获。
对于表1中的每个查询,资源高速缓存系统捕获使用SELECT查询操作而选择的数据字段。这些字段是fi,其中i=1,...,n并且n是在表1的查询中至少出现一次的数据字段的总数。在这里,表1存储以下10个查询的查询日志:
Q1=(f1,f2,f3,f4,f5)
Q2=(f11,f12,f15)
Q3=(f3,f9,f12,f5,f10)
Q4=(f1,f4,f3,f5,f2)
Q5=(f5,f6,f7,f8,f9)
Q6=(f11,f12,f15)
Q7=(f1,f2,f3,f4,f5)
Q8=(f13,f9,20,f5,f4,f18,f11,f8,f7)
Q9=(f1,f4,f3,f5,f2)
Q10=(f15,f16,f17,f18,f19,f1,f2,f3,f4)
资源高速缓存系统识别与表1中的至少一个查询对应的独特(unique)组合Qk=(fk1,...,fk1)。资源高速缓存系统识别包含数据字段的相同组合Qk=(fk1,...,fk1)的查询的集合Sk。表1包含6个独特组合:
S1={Q1,Q4,Q7,Q9}
S2={Q2,Q6}
S3={Q3}
S4={Q5}
S5={Q8}
S6={Q10}
集合1包括Q1、Q4、Q7和Q9,因为这些查询选择了相同的五个数据字段,虽然不一定以相同的次序。集合2包括查询Q2和Q6,因为这些查询选择了相同的三个数据字段。集合S3-S6均包含一个独特的查询-在感兴趣的一年时段期间,没有重复的Q3、Q5、Q8或Q10。
对于每个集合Sk,资源高速缓存系统计算来自集合Sk的查询的累积执行时间。对于S1,执行时间为:
Q1:t1=2分钟
Q4:t4=1小时
Q7:t7=30分钟
Q9:t9=3分钟
资源高速缓存系统计算集合S1的累积执行时间:
T1=t1+t4+t7+t9
=2分钟+1小时+30分钟+3分钟
=1小时35分钟
类似地,资源高速缓存系统计算集合S2-S6的累积执行时间。
接下来,资源高速缓存系统判定特定查询集的累积执行时间是否超过累积阈值K2=1小时。对于S1,累积执行时间为1小时35分钟,这超过了1小时的累积阈值。
在针对S1确定累积执行时间超过阈值后,高速缓存引擎将查询所需的资源进行高速缓存。高速缓存引擎在高速缓存中创建高速缓存表A1,从而将执行SQL命令“SELECTf1,f2,f3,f4,f5.FROM Z1”所需的资源进行高速缓存。对于所有的独特组合Qk及其对应的集合Sk,资源高速缓存系统基于集合中的总执行时间来重复选择性将资源进行高速缓存的处理。
4.基于资源使用的资源高速缓存
图3图示了根据一个或多个实施例的用于基于资源的使用来选择性地将资源进行高速缓存的示例操作集。图2所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图2所示的特定操作顺序不应当被解释为限制一个或多个实施例的范围。
在实施例中,资源分析器识别在初始时间段期间对同一资源的查询的执行(操作302)。资源分析器可以在初始时间段内监视由查询执行引擎执行的查询。资源分析器可以使用拉取(pull)方法从查询执行引擎中拉取数据,从而识别查询的执行。查询执行引擎可以使用推送(push)方法将数据从查询执行引擎推送到资源分析器。资源分析器可以将在初始时间段期间访问的每个资源映射到在初始时间段期间执行的一个或多个查询。
在实施例中,资源分析器聚合在该时间段期间使用每个特定资源的查询的执行时间,以计算在该时间段期间每个特定资源的累积执行时间(操作304)。例如,在特定的一天,执行了100个查询。这些查询中的五个查询请求来自特定表的信息。系统已经存储了与这五个查询对应的五个执行时间:t1=2分钟,t2=1小时,t3=20分钟,t4=5分钟和t5=1小时22分钟。系统计算在初始时间段期间使用该资源的查询的累积执行时间:
Ttot=t1+t2+t3+t4+t5
=2分钟+1小时+20分钟+5分钟+1小时22分钟
=2小时49分钟
在一天的时段期间使用该资源的查询的累积执行时间为Ttot=2小时49分钟。
如上所述,资源分析器可以计算在初始时间段期间对同一资源的查询的所有执行的累积执行时间。可替代地,资源分析器可以使用一段时间期间对同一资源的查询的执行的子集来计算累积执行时间。例如,资源分析器过滤查询执行以包括运行时间超过个体阈值K1的执行。
在实施例中,资源分析器判定累积执行时间是否超过累积阈值(操作306)。如果累积执行时间超过阈值,则高速缓存引擎将资源进行高速缓存(操作308)。如果累积执行时间不超过阈值,则高速缓存引擎可以避免将资源进行高速缓存(操作310)。操作306、308和310分别类似于上述操作208、210和212。
作为示例,资源高速缓存系统在二十四小时的时段内监视由查询执行引擎执行的查询。资源高速缓存系统创建表(表2),该表在其中存储访问表“Ingredients(成分)”的查询的记录。资源高速缓存系统确定六个查询在感兴趣的二十四小时时段内访问了表“Ingredients”。资源高速缓存系统将六个查询的记录以及六个查询中每个查询的相应执行时间存储到表2:Q1,t1=10min;Q12,t12=1分钟,Q30,t30=4分钟;Q16,t16=8分钟。Q27,t27=80分钟;Q5,t5=5分钟。
接下来,资源高速缓存系统聚合表2中在二十四小时时段期间使用资源“Ingredients”的六个查询的执行时间。通过将六个执行时间相加,系统计算出以下时间段期间针对“Ingredients”的累积执行时间:t1+t12+t30+t16+t27+t5=10分钟+1分钟+4分钟+8分钟+80分钟+5分钟=108分钟。
资源高速缓存系统将累积执行时间与60分钟的累积阈值进行比较。因为108分钟的累积执行时间超过60分钟的累积阈值,因此资源高速缓存系统将资源进行高速缓存。高速缓存引擎将表Ingredients高速缓存到高速缓存中。
5.基于操作的资源高速缓存
图4图示了根据一个或多个实施例的用于选择性地将操作的结果进行高速缓存的示例操作集。特别地,图4图示了其中JOIN操作的结果被高速缓存的示例。但是,其它实施例可以同样适用于将另一个操作的结果进行高速缓存。图4所示的一个或多个操作可以被修改、重新布置或完全省略。因而,图4所示的特定操作顺序不应当被解释为限制一个或多个实施例的范围。
在实施例中,高速缓存引擎识别在初始时间段期间需要特定资源集的JOIN的查询的执行(操作402)。高速缓存引擎可以比较在已执行的JOIN操作中使用的数据字段,以识别相同特定数据集的JOIN的查询的所有执行。
在实施例中,资源高速缓存系统聚合在操作402中识别出的执行的执行时间,以计算需要相同特定资源集的JOIN的查询的累积执行时间(操作404)。资源高速缓存系统可以聚合在初始时间段期间执行的查询的执行时间ti。可替代地,资源高速缓存系统可以在一段时间期间聚合对资源集的JOIN的查询的子集的执行时间ti。例如,资源高速缓存系统可以聚合超过个体阈值K1的执行时间ti。
在实施例中,高速缓存引擎判定累积执行时间是否超过累积阈值(操作406)。累积阈值可以例如是K2=30分钟。资源高速缓存系统将计算出的累积执行时间与累积阈值K2进行比较。
如果累积执行时间超过阈值,则高速缓存引擎将资源集的JOIN进行高速缓存,或者将每个资源集进行高速缓存(操作408)。高速缓存引擎可以创建高速缓存表,并且将两个表的JOIN进行高速缓存。例如,资源高速缓存系统可以创建高速缓存表,并且将SQL逻辑“SELECT f1,f2,f3,FROM Z1,INNER JOIN Z2 ON g1=g2”进行高速缓存,从而将该SQL查询的结果进行高速缓存。可替代地,资源高速缓存系统可以将查询中的JOIN操作中使用的资源进行高速缓存。例如,系统将表Z1和Z2进行高速缓存。
如果累积执行时间不超过阈值,则高速缓存引擎可以避免将资源集的JOIN进行高速缓存,并且避免将每个特定的资源集进行高速缓存(操作410)。通过避免将资源进行高速缓存,资源高速缓存系统可以节省高速缓存中的存储器并且避免不必要的操作。
在实施例中,从操作序列中省略操作410。例如,虽然资源高速缓存系统未选择资源以进行高速缓存,但是系统仍然可以将资源进行高速缓存。系统可以根据标准高速缓存机制来将资源进行高速缓存,诸如将在最近30秒内使用的资源进行高速缓存。
作为示例,资源高速缓存系统识别在一周时段期间执行的、执行时间高于5分钟的需要SELECT查询操作的查询的执行。在这一周期间执行的1000个查询当中,有10个需要SELECT查询操作并且花费了5分钟以上的时间来执行。这10个查询的查询日志在表(表3)中被捕获。
对于表3中的每个查询,资源高速缓存系统捕获使用SELECT查询操作来选择的数据字段。这些字段是fi,其中i=1,...,n并且n是在表3的查询中至少出现一次的数据字段的总数。对于表3中的每个查询,资源高速缓存系统还捕获在JOIN操作中使用的两个数据字段:gk1和gk2。表3中的每个查询被表示为记录Qk=(fk1,...,fk1,gk1,gk2)。资源高速缓存系统还存储每个查询的执行时间tk。
查询执行引擎执行查询“SELECT Customers.CustomerName,Orders.OrderlDfrom Customers INNER JOIN Orders ON Customers.CustomerlD=Orders.CustomerIDORDER BY Customers.CustomerName”。资源高速缓存系统将上述查询表示为组合(fk1,fk2,gk1,gk2),其中fk1=Customers.CustomerName,fk2=Orders.OrderlD,gk1=Customers.CustomerlD并且gk2=Orders.CustomerID。
资源高速缓存系统识别出表3中的查询Q1、Q10、Q17和Q26包含相同的独特组合(fk1,fk2,gk1,gk2)。资源高速缓存系统从表3中识别出包含相同独特组合的查询集:集合S1={Q1,Q10,Q17,Q26}。资源高速缓存系统识别集合S1中的每个查询的对应执行时间:t1=10分钟,t10=15分钟,t17=20分钟,以及t26=10分钟。
资源高速缓存系统聚合集合S1中的查询的执行时间,以计算累积执行时间:T1=t1+t10+t17+t26=10分钟+15分钟+20分钟+10分钟=55分钟。
接下来,资源高速缓存系统判定计算出的累积执行时间是否超过累积阈值K2=30分钟。对于S1,累积执行时间为55分钟,超过了累积阈值K2=30分钟。
在针对S1确定累积执行时间超过阈值后,高速缓存引擎将资源集的联接(join)进行高速缓存。高速缓存引擎在高速缓存中创建高速缓存表C1,从而将SQL逻辑“SELECTCustomers.CustomerName,Orders.OrderlD from Customers INNER JOIN Orders ONCustomers.CustomerlD=Orders.CustomerlDORDER BY Customers.CustomerName”进行高速缓存。对于将来包含这个逻辑的查询,资源高速缓存系统现在可以使用来自高速缓存表C1中的结果来完成上述SQL逻辑步骤。
6.示例实施例-聚合查询
在实施例中,资源高速缓存系统存储查询执行时间超过个体阈值K1=1分钟的查询的查询日志。用于存储查询日志的另一个准则是该查询需要适用于作为GROUP BY操作的结果接收的数据的聚合操作。SQL聚合操作的示例包括AVG、MAX和MIN。系统可以将执行时间超过1分钟的聚合操作的查询日志存储到表(表4)。
对于表4中的查询,系统捕获使用SELECT查询操作而选择的数据字段(fi)以及由GROUPBY查询操作使用的数据字段(gj)。索引被定义为:i=1,...,n,其中n是在表4的查询中至少出现一次的数据字段的总数,并且j=1,...,m,其中m是在表4的查询中的GROUPBY操作中至少出现一次的数据字段的总数。例如,表4包括表示查询1的记录Q1=(f1,f2,f3,g1,g2)。记录Q1意味着在查询1中应用了SQL逻辑“SELECT f1,f2,f3 GROUP BY g1,g2”。对于表4中的每个查询,系统表示记录Qk=(fk1,...fk1,gk1,...gkm)连同tk,tk是查询Qk的执行时间。定义了另一个阈值K2。K2是30分钟的累积查询阈值。
查询执行引擎利用SQL逻辑“SELECT f1,f2,f3,GROUP BY f2,f3.”执行查询Q1=(f1,f2,f3,g1=f2,g2=f3)。资源高速缓存系统从表4中识别出查询Q1、Q12、Q15和Q23包含独特组合(f1,f2,f3,g1=f2,g2=f3)。资源高速缓存系统识别出查询集S1={Q1,Q12,Q15,Q23}。S1中的查询的执行时间为:t1=20分钟,t12=10分钟,t15=25分钟以及t23=15分钟。
资源高速缓存系统计算S1中的查询的累积执行时间:T1=t1+t12+t15+t23=20分钟+10分钟+25分钟+15分钟=70分钟。由于累积执行时间超过30分钟,因此资源高速缓存系统确定T1>K2。因此,资源高速缓存系统创建高速缓存表D1,从而捕获按照SQL逻辑“SELECTf1,f2,f3,GROUP BY f2,f3”的数据。系统使用来自高速缓存表D1中的结果在将来的查询中完成SQL逻辑步骤“SELECT f1,f2,f3,GROUP BY f2,f3”。例如,f1=“revenue(收入)”,f2=g1=“region(区域)”,f3=g2=“vertical(垂直)”。高速缓存引擎将查询“SELECT revenue,region,vertical GROUP BY region vertical”的结果进行高速缓存。下次系统执行需要上述SQL逻辑的查询时,查询执行引擎将使用来自高速缓存的表D1中的结果以执行所需的SQL逻辑并且快速地递送结果。
5.其它事项;扩展
实施例针对具有一个或多个设备的系统,该一个或多个设备包括硬件处理器并且被配置为执行本文描述的和/或下面权利要求中任何一项所述的任何操作。
在实施例中,非瞬态计算机可读存储介质包括指令,该指令当由一个或多个硬件处理器执行时,使得执行本文描述的和/或权利要求中任何一项所述的任何操作。
根据一个或多个实施例,可以使用本文描述的特征和功能的任何组合。在前述说明书中,已经参考许多具体细节描述了实施例,这些具体细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本申请产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。
6.硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行技术,或者可以包括诸如被永久性地编程以执行技术的一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)或网络处理单元(NPU)的数字电子设备,或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行技术的一个或多个通用硬件处理器。这些专用计算设备还可以将自定义的硬接线逻辑、ASIC、FPGA或NPU与自定义的编程组合来实现技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
例如,图5是图示可以在其上实现本发明的实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。计算机系统500还包括耦合到总线502用于存储要由处理器504执行的指令和信息的主存储器506,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器506也可以用于在要由处理器504执行的指令执行期间存储临时变量或其它中间信息。这些指令当被存储在处理器504可访问的非暂态存储介质中时,使得计算机系统500成为被定制以执行指令中所指定的操作的专用机器。
计算机系统500还包括耦合到总线502用于存储用于处理器504的指令和静态信息的只读存储器(ROM)508或其它静态存储设备。提供了诸如磁盘或光盘的存储设备510,并且存储设备510耦合到总线502,用于存储信息和指令。
计算机系统500可以经由总线502耦合到显示器512,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备514(其包括字母数字和其它键)耦合到总线502,用于将信息和命令选择传送到处理器504。另一种类型的用户输入设备是光标控件516,诸如鼠标、轨迹球、或光标方向键,用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的光标移动。这种输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))中的两个自由度,以允许设备指定平面中的位置。
计算机系统500可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,这些定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统500成为或将计算机系统500编程为专用机器。根据一个实施例,本文的技术由计算机系统500响应于处理器504执行主存储器506中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备510)读取到主存储器506中。包含在主存储器506中的指令序列的执行使处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
如本文所使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒带、内容可寻址存储器(CAM)和三元内容可寻址存储器(TCAM)。
存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴线缆、铜线和光纤,包括包含总线502的引线(wire)。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些波。
各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器504以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器经电话线发送指令。计算机系统500本地的调制解调器可以接收电话线上的数据,并且使用红外线发射器将数据转换为红外线信号。红外线探测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收到的指令可以可选地在被处理器504执行之前或执行之后存储在存储设备510上。
计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网(ISDN)卡、线缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口518都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主计算机524或到由互联网服务提供商(ISP)526操作的数据设备的连接。ISP 526进而通过现在通常称为“互联网”528的世界范围的分组数据通信网络提供数据通信服务。本地网络522和互联网528两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并且通过通信接口518的信号是传输介质的示例形式,其中该信号将数字数据携带到计算机系统500或者携带来自计算机系统500的数字数据。
计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、ISP 526、本地网络522和通信接口518传送针对应用程序的请求代码。
接收到的代码可以在其被接收时由处理器504执行,和/或存储在存储设备510或其它非易失性存储器中以供以后执行。
在前述说明书中,已经参考许多具体细节描述了本发明的实施例,这些具体细节可能因实施方案而不同。因此,应当在说明性而不是限制性的意义上看待说明书和附图。本发明范围的唯一且排他的指示以及申请人意在要作为本发明范围的是以由本申请产生的一组权利要求的具体形式的所产生权利要求的字面和等同范围,包括任何后续的校正。
Claims (25)
1.一种包括指令的非暂态计算机可读介质,所述指令在由一个或多个硬件处理器执行时,使得执行包括以下的操作:
识别在第一时间段期间同一特定查询的多次执行;
通过聚合所述多次执行的每次执行的执行时间,计算在第一时间段期间所述特定查询的所述多次执行的累积执行时间;
确定在第一时间段期间所述特定查询的累积执行时间超过第一阈值;
响应于所述确定操作:在第二时间段内将用于执行所述特定查询的资源进行高速缓存。
2.如权利要求1所述的介质,其中所述资源是表。
3.如权利要求1所述的介质,其中所述操作还包括以下中的一个或多个:
响应于所述确定操作,保留高速缓存的资源;或者
确定所述特定查询的执行的至少子集的执行时间超过第二阈值;
响应于确定所述特定查询的执行的至少子集的执行时间超过第二阈值,将所述特定查询的超过第二阈值的执行的子集中每次执行的日志存储到数据表;以及
使用来自所述数据表的同一特定查询的执行来执行所述计算操作。
4.如权利要求1所述的介质,其中确定所述特定查询的第一执行的执行时间包括:
确定在发送执行所述特定查询的请求与从所述特定查询的执行中接收结果之间的时间段。
5.如权利要求1所述的介质,其中经由存储的查询数据字段的表来识别同一特定查询。
6.一种包括指令的非暂态计算机可读介质,所述指令在由一个或多个硬件处理器执行时,使得执行包括以下的操作:
识别在第一时间段期间对特定资源的多个查询的一次或多次执行;
通过聚合所述多个查询的所述一次或多次执行的执行时间,计算在第一时间段期间所述特定资源的累积执行时间;
确定在第一时间段期间所述特定资源的累积执行时间超过第一阈值;
响应于所述确定操作:在第二时间段内将所述特定资源进行高速缓存。
7.如权利要求6所述的介质,其中所述特定资源是表。
8.如权利要求6所述的介质,其中所述操作还包括以下中的一个或多个:
响应于所述确定操作,保留高速缓存的资源;或者
确定所述多个查询的执行的至少子集的执行时间超过第二阈值;
响应于确定所述多个查询的执行的至少子集的执行时间超过第二阈值,将所述多个查询的超过第二阈值的执行的子集中每次执行的日志存储到数据表;以及
使用从所述数据表选择的多个查询的执行来执行所述计算操作。
9.如权利要求6所述的介质,其中确定对所述特定资源的所述多个查询的第一执行的执行时间包括:
确定在发送对所述特定资源执行所述多个查询的请求与从对所述特定资源的所述多个查询的执行中接收结果之间的时间段。
10.一种包括指令的非暂态计算机可读介质,所述指令在由一个或多个硬件处理器执行时,使得执行包括以下的操作:
识别在第一时间段期间包括与至少两个表相关联的JOIN操作的一个或多个查询的一次或多次执行;
通过聚合所述一个或多个查询的每次执行的执行时间,计算第一时间段期间所述一个或多个查询的累积执行时间;
确定在第一时间段期间所述一个或多个查询的累积执行时间超过第一阈值;
响应于所述确定操作:将以下进行高速缓存:(a)JOIN操作的结果或(b)所述至少两个表中的每一个表。
11.如权利要求10所述的介质,其中所述操作还包括:
响应于所述确定操作,保留高速缓存的(a)JOIN操作的结果或(b)所述至少两个表中的每一个表。
12.如权利要求10所述的介质,其中确定所述一个或多个查询的第一执行的执行时间包括:
确定在发送执行所述一个或多个查询的请求与从所述一个或多个查询的执行中接收结果之间的时间段。
13.一种用于查询资源高速缓存的方法,包括:
识别在第一时间段期间同一特定查询的多次执行;
通过聚合所述多次执行的每次执行的执行时间,计算在第一时间段期间所述特定查询的所述多次执行的累积执行时间;
确定在第一时间段期间所述特定查询的累积执行时间超过第一阈值;
响应于所述确定操作:在第二时间段内将用于执行所述特定查询的资源进行高速缓存。
14.如权利要求13所述的方法,其中所述资源是表。
15.如权利要求13所述的方法,还包括以下中的一个或多个:
响应于所述确定操作,保留高速缓存的资源;或者
确定所述特定查询的执行的至少子集的执行时间超过第二阈值;
响应于确定所述特定查询的执行的至少子集的执行时间超过第二阈值,将所述特定查询的超过第二阈值的执行的子集中每次执行的日志存储到数据表;以及
使用来自所述数据表的同一特定查询的执行来执行所述计算操作。
16.如权利要求13所述的方法,其中确定所述特定查询的第一执行的执行时间包括:
确定在发送执行所述特定查询的请求与从所述特定查询的执行中接收结果之间的时间段。
17.如权利要求13所述的方法,其中经由存储的查询数据字段的表来识别同一特定查询。
18.一种用于查询资源高速缓存的方法,包括:
识别在第一时间段期间对特定资源的多个查询的一次或多次执行;
通过聚合所述多个查询的所述一次或多次执行的执行时间,计算在第一时间段期间所述特定资源的累积执行时间;
确定在第一时间段期间所述特定资源的累积执行时间超过第一阈值;
响应于所述确定操作:在第二时间段内将所述特定资源进行高速缓存。
19.如权利要求18所述的方法,其中所述特定资源是表。
20.如权利要求18所述的方法,还包括以下中的一个或多个:
响应于所述确定操作,保留高速缓存的资源;或者
确定所述多个查询的执行的至少子集的执行时间超过第二阈值;
响应于确定所述多个查询的执行的至少子集的执行时间超过第二阈值,将所述多个查询的超过第二阈值的执行的子集中每次执行的日志存储到数据表;以及
使用从所述数据表选择的多个查询的执行来执行所述计算操作。
21.如权利要求18所述的方法,其中确定对所述特定资源的所述多个查询的第一执行的执行时间包括:
确定在发送对所述特定资源执行所述多个查询的请求与从对所述特定资源的所述多个查询的执行中接收结果之间的时间段。
22.一种用于查询资源高速缓存的方法,包括:
识别在第一时间段期间包括与至少两个表相关联的JOIN操作的一个或多个查询的一次或多次执行;
通过聚合所述一个或多个查询的每次执行的执行时间,计算第一时间段期间所述一个或多个查询的累积执行时间;
确定在第一时间段期间所述一个或多个查询的累积执行时间超过第一阈值;
响应于所述确定操作:将以下进行高速缓存:(a)JOIN操作的结果或(b)所述至少两个表中的每一个表。
23.如权利要求22所述的方法,还包括:
响应于所述确定操作,保留高速缓存的(a)JOIN操作的结果或(b)所述至少两个表中的每一个表。
24.如权利要求22所述的方法,其中确定所述一个或多个查询的第一执行的执行时间包括:
确定在发送执行所述一个或多个查询的请求与从所述一个或多个查询的执行中接收结果之间的时间段。
25.一种用于查询资源高速缓存的系统,包括:
处理器;以及
存储器,耦合到所述处理器并且所述存储器包括存储在其上的指令,所述指令在由所述处理器执行时,使得所述处理器执行如权利要求13-24中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311192375.8A CN117235101A (zh) | 2017-05-19 | 2017-12-28 | 用于查询资源高速缓存的系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/600,518 | 2017-05-19 | ||
US15/600,518 US11803547B2 (en) | 2017-05-19 | 2017-05-19 | System and method for query resource caching |
PCT/US2017/068651 WO2018212791A1 (en) | 2017-05-19 | 2017-12-28 | System and method for query resource caching |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311192375.8A Division CN117235101A (zh) | 2017-05-19 | 2017-12-28 | 用于查询资源高速缓存的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110637292A CN110637292A (zh) | 2019-12-31 |
CN110637292B true CN110637292B (zh) | 2023-10-10 |
Family
ID=61148473
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311192375.8A Pending CN117235101A (zh) | 2017-05-19 | 2017-12-28 | 用于查询资源高速缓存的系统和方法 |
CN201780090982.XA Active CN110637292B (zh) | 2017-05-19 | 2017-12-28 | 用于查询资源高速缓存的系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311192375.8A Pending CN117235101A (zh) | 2017-05-19 | 2017-12-28 | 用于查询资源高速缓存的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11803547B2 (zh) |
EP (1) | EP3625701B1 (zh) |
JP (1) | JP6929388B2 (zh) |
CN (2) | CN117235101A (zh) |
WO (1) | WO2018212791A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109953B (zh) * | 2018-01-19 | 2023-12-19 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
US11157514B2 (en) * | 2019-10-15 | 2021-10-26 | Dropbox, Inc. | Topology-based monitoring and alerting |
US11550789B2 (en) * | 2020-07-02 | 2023-01-10 | Oracle International Corporation | Capturing query execution statistics |
US20230141891A1 (en) * | 2021-11-10 | 2023-05-11 | Google Llc | Autonomous Column Selection for Columnar Cache |
CN117668003B (zh) * | 2024-02-01 | 2024-05-03 | 福建省华大数码科技有限公司 | 实现数据库中集合数据类型的数据处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178727A (zh) * | 2006-11-08 | 2008-05-14 | 国际商业机器公司 | 用于搜索数据库的方法和系统 |
CN103493029A (zh) * | 2011-02-28 | 2014-01-01 | 甲骨文国际公司 | 通用高速缓存管理系统 |
CN105283872A (zh) * | 2013-04-19 | 2016-01-27 | 甲骨文国际公司 | 为sql处理缓存外部数据源 |
WO2017020765A1 (zh) * | 2015-08-03 | 2017-02-09 | 腾讯科技(深圳)有限公司 | 基于位置信息获取数据的方法和装置 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763359B2 (en) * | 2001-06-06 | 2004-07-13 | International Business Machines Corporation | Learning from empirical results in query optimization |
JP4162184B2 (ja) * | 2001-11-14 | 2008-10-08 | 株式会社日立製作所 | データベース管理システムの実行情報を取得する手段を有する記憶装置 |
US7146360B2 (en) * | 2002-12-18 | 2006-12-05 | International Business Machines Corporation | Method and system for improving response time for database query execution |
JP2004272747A (ja) * | 2003-03-11 | 2004-09-30 | Hitachi Information Systems Ltd | データベースのデータ取得方法及び取得システム |
CA2425046C (en) | 2003-04-08 | 2009-10-06 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for caching database query statements |
US7636707B2 (en) * | 2004-04-06 | 2009-12-22 | Microsoft Corporation | Query selectivity estimation with confidence interval |
US20050283494A1 (en) * | 2004-06-22 | 2005-12-22 | International Business Machines Corporation | Visualizing and manipulating multidimensional OLAP models graphically |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
US20070143246A1 (en) * | 2005-12-15 | 2007-06-21 | International Business Machines Corporation | Method and apparatus for analyzing the effect of different execution parameters on the performance of a database query |
US7743052B2 (en) * | 2006-02-14 | 2010-06-22 | International Business Machines Corporation | Method and apparatus for projecting the effect of maintaining an auxiliary database structure for use in executing database queries |
US7627618B2 (en) * | 2007-02-21 | 2009-12-01 | At&T Knowledge Ventures, L.P. | System for managing data collection processes |
US8255411B1 (en) * | 2008-06-19 | 2012-08-28 | Boopsie, Inc. | Dynamic menus for multi-prefix interactive mobile searches |
US8046768B2 (en) | 2007-07-31 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Apparatus and method for detecting resource consumption and preventing workload starvation |
US8566476B2 (en) * | 2008-02-01 | 2013-10-22 | Mandiant Corporation | Method and system for analyzing data related to an event |
US9910892B2 (en) * | 2008-07-05 | 2018-03-06 | Hewlett Packard Enterprise Development Lp | Managing execution of database queries |
US8762367B2 (en) * | 2008-12-08 | 2014-06-24 | Teradata Us, Inc. | Accurate and timely enforcement of system resource allocation rules |
JP5304950B2 (ja) * | 2010-08-04 | 2013-10-02 | 株式会社日立製作所 | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
US8290937B2 (en) * | 2010-08-30 | 2012-10-16 | International Business Machines Corporation | Estimating and monitoring query processing time |
JP2012203792A (ja) * | 2011-03-28 | 2012-10-22 | Nippon Telegr & Teleph Corp <Ntt> | 有効期限算出装置、有効期限算出方法及び有効期限算出プログラム |
JP5597623B2 (ja) * | 2011-12-02 | 2014-10-01 | 株式会社日立システムズ | データベース処理方法 |
US9158814B2 (en) * | 2012-03-30 | 2015-10-13 | International Business Machines Corporation | Obtaining partial results from a database query |
US20140025441A1 (en) * | 2012-07-19 | 2014-01-23 | Sap Ag | Peer support gamification by application knowledge scoring in social networks |
CN103020175B (zh) * | 2012-11-28 | 2016-06-22 | 深圳市华为技术软件有限公司 | 一种获取聚合数据的方法和装置 |
US10108622B2 (en) * | 2014-03-26 | 2018-10-23 | International Business Machines Corporation | Autonomic regulation of a volatile database table attribute |
US9575864B2 (en) * | 2014-06-02 | 2017-02-21 | Microsoft Technology Licensing, Llc | Function-level dynamic instrumentation |
US10372706B2 (en) * | 2015-07-29 | 2019-08-06 | Oracle International Corporation | Tracking and maintaining expression statistics across database queries |
US10657134B2 (en) * | 2015-08-05 | 2020-05-19 | Ab Initio Technology Llc | Selecting queries for execution on a stream of real-time data |
US9678794B1 (en) * | 2015-12-02 | 2017-06-13 | Color Genomics, Inc. | Techniques for processing queries relating to task-completion times or cross-data-structure interactions |
US10482072B2 (en) * | 2016-02-02 | 2019-11-19 | Servicenow, Inc. | Cloud-based platform instrumentation and monitoring system for maintenance of user-configured programs |
US10067874B2 (en) * | 2016-06-07 | 2018-09-04 | International Business Machines Corporation | Optimizing the management of cache memory |
US10860579B2 (en) * | 2017-01-30 | 2020-12-08 | Sap Se | Query planning and execution with reusable memory stack |
US10423620B2 (en) * | 2017-04-22 | 2019-09-24 | International Business Machines Corporation | Runtime creation of remote derived sources for query offload |
-
2017
- 2017-05-19 US US15/600,518 patent/US11803547B2/en active Active
- 2017-12-28 WO PCT/US2017/068651 patent/WO2018212791A1/en active Application Filing
- 2017-12-28 EP EP17838023.4A patent/EP3625701B1/en active Active
- 2017-12-28 CN CN202311192375.8A patent/CN117235101A/zh active Pending
- 2017-12-28 JP JP2019563840A patent/JP6929388B2/ja active Active
- 2017-12-28 CN CN201780090982.XA patent/CN110637292B/zh active Active
-
2023
- 2023-09-19 US US18/470,034 patent/US20240004881A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178727A (zh) * | 2006-11-08 | 2008-05-14 | 国际商业机器公司 | 用于搜索数据库的方法和系统 |
CN103493029A (zh) * | 2011-02-28 | 2014-01-01 | 甲骨文国际公司 | 通用高速缓存管理系统 |
CN105283872A (zh) * | 2013-04-19 | 2016-01-27 | 甲骨文国际公司 | 为sql处理缓存外部数据源 |
WO2017020765A1 (zh) * | 2015-08-03 | 2017-02-09 | 腾讯科技(深圳)有限公司 | 基于位置信息获取数据的方法和装置 |
Non-Patent Citations (2)
Title |
---|
SWETHA SURAPANENI ET AL.Exploring Caching for Efficient Collection Operations.《automated software engineering(ASE)》.2011,第 468-471页. * |
朱小东 ; 吴俊敏 ; 唐轶轩 ; 陈国良 ; 隋秀峰 ; .两级同步:面向众核处理器的并行仿真机制.系统仿真学报.2013,(第12期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110637292A (zh) | 2019-12-31 |
JP6929388B2 (ja) | 2021-09-01 |
US20240004881A1 (en) | 2024-01-04 |
US20180336199A1 (en) | 2018-11-22 |
JP2020522781A (ja) | 2020-07-30 |
EP3625701B1 (en) | 2021-11-03 |
US11803547B2 (en) | 2023-10-31 |
CN117235101A (zh) | 2023-12-15 |
EP3625701A1 (en) | 2020-03-25 |
WO2018212791A1 (en) | 2018-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110637292B (zh) | 用于查询资源高速缓存的系统和方法 | |
US10922313B2 (en) | Implementing composite custom indices in a multi-tenant database | |
US10515059B2 (en) | Time slider operator for temporal data aggregation | |
US11397722B2 (en) | Applications of automated discovery of template patterns based on received requests | |
US10223416B2 (en) | Partition access method for query optimization | |
US20200356568A1 (en) | Pre-Emptive Database Processing For Performance Enhancement In A Hybrid Multi-Cloud Database Environment | |
US8732163B2 (en) | Query optimization with memory I/O awareness | |
US8103658B2 (en) | Index backbone join | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US10108669B1 (en) | Partitioning data stores using tenant specific partitioning strategies | |
US10997171B2 (en) | Database performance analysis based on a random archive | |
CN114398378B (zh) | 确定索引代价的方法和装置 | |
US11194817B2 (en) | Enterprise object search and navigation | |
US20230315715A1 (en) | Utilizing a structured audit log for improving accuracy and efficiency of database auditing |
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 | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240222 Address after: California, USA Patentee after: NETSUITE Inc. Country or region after: U.S.A. Address before: California, USA Patentee before: ORACLE INTERNATIONAL Corp. Country or region before: U.S.A. |
|
TR01 | Transfer of patent right |