CN105630706B - 智能存储器块替换方法、系统及计算机可读存储介质 - Google Patents
智能存储器块替换方法、系统及计算机可读存储介质 Download PDFInfo
- Publication number
- CN105630706B CN105630706B CN201510819233.9A CN201510819233A CN105630706B CN 105630706 B CN105630706 B CN 105630706B CN 201510819233 A CN201510819233 A CN 201510819233A CN 105630706 B CN105630706 B CN 105630706B
- Authority
- CN
- China
- Prior art keywords
- memory
- loaded
- loaded data
- column
- data block
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
Abstract
提供了通过被请求的数据块对加载的数据块进行智能存储器替换的构架。例如,考虑到各种因素来最优化对将从存储器丢弃的加载的数据块的选择,以有利于被请求的数据块被加载到存储器中。在一些实施方式中,在被请求的数据块和加载的数据块之间的相关性被用来确定加载的数据块中的哪些可以成为将从存储器中丢弃的候选。
Description
技术领域
本公开一般涉及数据库,并且更具体地,涉及替换或调换存储器中的数据。
背景技术
内存数据库(in-memory database)被发展从而充分利用了现代硬件以提高性能。通过在主存储器(main memory)(例如,随机存取存储器(RAM))中保持所有相关数据,能够显著地加快数据处理操作。
越来越多的企业和机构应用了内存数据库来处理和分析大数据(big data)。由于所有的相关数据被保持在存储器中,内存数据库在运算速度方面无疑超过了传统的数据库。然而,当可用的存储器大小(RAM)小于数据库的总数据大小时,将所有的数据保持在存储器中也可能带来问题。例如,在这种情况下,每次小于整个数据库的被加载到存储器中。存储器替换技术一般在这样的情形中被使用。例如,当前加载到存储器中的数据库的一部分被替换为被请求的但是当前没有被加载到存储器中的数据库的另一部分。
许多现有的存储器替换算法基于分页技术(paging technique),其主要处理在操作系统等级上的存储器管理。存储器和程序的地址空间被划分到页框(page frame)。如果请求的页不在主存储器中,则这些页将被换入(swap in)主存储器以用于运行。然而,这个技术不适于不使用页的基于列的内存数据库。为了改进基于列的系统的数据扫描速度,内存数据库通常在连续的地址空间中保存每一列。因此,存储器交换(swapping)/替换是基于数据列,数据列通常远远大于页框。在这样的情况下,传统的基于页的存储器替换技术通常不管用。
发明内容
这里描述了用于替换或调换存储器中的数据的构架。根据一个方面,所述构架计算将要从存储器中丢弃的加载的数据的量。可以基于加载的数据列与被请求的数据列的相关性来选择将要从存储器中丢弃的候选的加载的数据列。所述构架还可以计算每个候选的加载的数据列的分数,丢弃具有最高分数的一些候选的加载的数据列,并将被请求的数据列加载到存储器中。
利用以下将变得明显的这些以及其它优点和特征,通过参考下面的详细描述和所附权利要求和参考附图,可以获得更多的信息。
附图说明
所述详细描述是参考附图来阐述的。在附图中,参考标号最左边的(多个)数字标识该参考标号第一次出现的附图。相同的参考标号在不同的附图中的使用指示类似或相同的项目。
图1是可以实施这里讨论的技术和设备的示例计算环境的框图。
图2是示出根据示例的用于内存数据库的示例存储器的模型的示图。
图3是示例存储器替换配置体系结构的框图。
图4是示出用于存储器替换配置的示例关联计算的流程图。
图5是示出可以与存储器替换配置一起被采用的示例算法的流程图。
图6是示出用于替换或调换存储器中的数据的示例过程的流程图。
具体实施方式
根据示例实施方式,公开了用于替换或调换存储器中的数据的各种技术和系统。例如,参考图1,所述技术和系统描述了将当前处于存储器104中的数据列102交换、替换、调换(等等)成被请求的数据列106,被请求的数据列106被(例如,从存储装置108)加载到数据列102的位置。为了便于讨论,本公开参考示出的计算环境(系统)100描述了各种技术。然而,所述描述也适用于其它计算环境、网络、其它形式和类型的计算模型等。
传统的存储器替换算法可能太复杂而无法使用,或者太简单、考虑的因素太少。例如,诸如数据块102的访问量、数据块102的存储器大小、以及不同的数据块102之间的相关性的因素可能对选择决策具有重要的影响,但是通常未被包括在内。在示例中,在系统100上操作的改进的数据替换模块(例如,配置、组件等)在另一个数据块(例如,数据列)106需要被换入存储器104时,识别并换出(swap out)其下一次使用(例如,请求)将在很久的将来的数据块(例如,数据列)102。这样的技术实施起来可能是有问题的,因为很难准确地预测将来对数据块102的请求或将来对数据块102的使用。
在一种实施方式中,最佳的存储器替换(例如,调换、交换等)配置300(见图3)利用数据列102的不同集合被用于数据库中的不同类型的查询的概念,来调换存储器104内的数据列102。例如,在商业情形中,类似类型的查询经常被接连地执行。也就是说,关于销售数据的查询通常是一起运行的,而不是将关于销售数据的查询与关于生产数据的查询交错。假设一起运行的数据彼此之间的相关性高于与其它数据块的相关性。
在实施方式中,关联规则算法被用来分析数据库表格的当前加载的列102之间的相关性。分析结果预测在最近的将来不会发生下一次使用的列102。换句话说,基于相对的相关性,与当前加载到存储器104中的其它列102相比,将要被替换(或换出)的数据列102在不久的将来被请求的可能性更小。在实施方式中,可以考虑多个因素,诸如,近期访问时间、访问数量、大小、以及其它历史使用数据。在实施方式中,存储器替换配置300适应于数据库系统行为的改变。例如,如果列102的使用在最近的时间段中急剧减少,则其被换出存储器104的可能性增大。
对于所具有的存储器104的量有限的内存数据库系统,存储器替换可能频繁地发生。因此,希望对于交换列(把106换成102)的计算(例如,由处理器110执行)是快速的和/或不频繁的,以便维持系统100的效率。在一个实施方式中,为了减少系统100开销,当系统100工作负荷低时,示例存储器替换配置300周期性地(例如,每星期一次、每个月几次等)执行关联规则算法。在大多数情况下,可以安全地假定在一段相对较短的时间内系统100行为不会发生改变。在实施方式中,系统100被安排为通过关联规则算法的预先计算的结果来搜索候选列102,而不是再次运行该算法。
公开了对于替换存储器104中的数据102的各种技术。这里的讨论意图示出在可以在针对基于列的数据库应用来最优化存储块调换的过程中利用的组件和技术,但是所描述的示例并不意图成为限制性的。在各种实施方式中,可以包括更少的、替换的、或额外的组件,以执行所描述的技术的各个部分,而同时保持在本公开的范围之内。
图1显示了其中可以实施存储器替换配置300的技术和设备的示例计算环境(例如,系统)100。在示例中,系统100使用控制组件,诸如处理器110,例如,向配置300自动地提供存储器替换管理。在各种实施方式中,系统100自动地确定加载到存储器104中的哪些当前加载的数据块(例如,列)102将被调换或换出为存储在存储装置108中的被请求的数据块(例如,列)106。
在实施方式中,加载的数据块102和被请求的数据块106包括关联到关系数据库(relational database)应用的数据列。在实施方式中,数据块102、106可以具有任何大小,并且可以是不同的大小。因此,当把数据块106换出为数据块102时,可能并不是一对一的调换。在这样的实例中,数据块106的大小被考虑,并且足够的数据块102被从存储器104中移除以提供数据块106的大小。在替换的实施方式中,数据块102、106可以包括数据的任何组、集合、配置等等,其具有任何大小(例如,字段量、字段大小、位或字节数等)、配置等。
在实施方式中,存储器104包括随机存取存储器(RAM)等。在实施方式中,在运行应用的同时,加载的数据块102被加载到存储器104中,以便被处理器110更快地存取。在其它实施方式中,存储器104包括其它固定或临时存储器存储装置,其(与系统100的其它存储器存储装置组件或设备相比)被处理器110快速地存取(读/写)。
在实施方式中,存储装置108包括一个或多个存储器存储装置设备,其典型地被用于批量数据存储,并且与存储器104相比,具有更大的容量。存储装置108的组件的非详尽的列表包括:硬盘驱动器、软盘驱动器、光学驱动器、磁带驱动器等。
在实施方式中,处理器110经由一个或多个算法执行存储块替换或调换,其包括:用于确定当前加载的数据块102中的哪些将被换出为被请求的数据块106的技术。
在各种实施方式中,系统100可以连接到网络。在替换的实施方式中,网络可以包括诸如以太局域网(LAN)、令牌环LAN、或其它LAN、广域网(WAN)、系统区域网的网络,或其它类型的网络,并且能够包括若干个节点或主机(未示出)。此外,网络还可以包括硬接线的(hardwired)路径、光学路径、和/或无线连接路径。在各种实施方式中,存储装置108可以位于远处,并经由网络(例如,远程服务器、云存储装置等)被存取。
图2是示出示例存储器104的模型的示图。在示图中,根据示例,存储器104正与内存数据库一起使用。如图2中所示,数据库的不同部分以及其它系统100组件可以被加载到存储器104中。
例如,存储器104可以包括空闲存储器(free memory)202和使用的存储器(204、206、208、210、以及212)。在使用的存储器中的一些中,可以驻留当前加载的数据块102,包括临时计算204、列表格206、行表格208、系统表格210、以及应用代码和/或存储器堆栈212。在各种实施方式中,被请求的数据块106可以被加载到空闲存储器202中,除非对于被请求的数据106的大小而言空闲存储器202不够。在这样的情况下,当前的加载到使用的存储器中(诸如加载到表格(206、208、210)中)的数据102中的一些,可以从存储器104中移除并保存到存储装置108。然后,存储在存储装置108中的被请求的数据106可以加载到释放的存储器104空间中的存储器104中。
在替换的实施方式中,系统100可以由更少的或额外的组件组成,在其中,不同地安排的结构可以执行在本公开内讨论的技术。
用于存储器替换的最常使用的算法之一包括当为被请求的数据块106让出空间时首先丢弃最久远(least recently)使用(例如,存取)的数据项或块102。然而,由于数据块102的最近的存取时间是仅有的被考虑的因素,这个技术可能造成问题。在示例中,考虑将在数据库中运行的、从当前没有加载到存储器104中的106的两个列A和B请求数据的结构化查询语言(SQL)请求。数据库还包括102的一系列的列(series columns)C、D、E、F和G,它们被加载到存储器104中,然而只有很少的或者没有可用的空闲存储器。
根据最久远使用算法,从具有最遥远的访问时间的列102开始,一些列102被一个接一个地丢弃。这个将持续,直到有足够的空闲存储器来加载被请求的列A和B(106)为止。
在示例中,假设列E和G(102)被选择,并且将从存储器104中丢弃。但是如果列A和B(106)具有与列E和G较高的相关性,则列E和G(102)将在近期被存取的概率较高。因此,如果列E和G(102)被从存储器104中丢弃,则系统100的效率被降低,因为它们将需要在近期被重新加载到存储器104中。因此,如果在交换存储器块102时考虑到附加的因素,包括列之间的相关性,则能够改进系统100的效率。
图3是根据一个实施方式的包括示例体系结构的示例存储器替代模块(例如,配置、组件等)(“MRA”)300的框图。在实施方式中,MRA 300确定当前的加载到存储器104中的数据块(例如,列)102中的哪些将被调换或换出为存储在存储装置108中的被请求的数据块(例如,列)106。在实施方式中,一个或多个因素,包括列(102、106)之间的相关性、近期列102访问(例如,存取)时间、访问次数、列数102等,被MRA 300用来确定在存储器104中哪些列102被替换为被请求的列106。
在各种实施方式中,MRA 300的组件和模块可以具体体现为硬件和软件组件。例如,所述组件和模块可以包括驻留在控制或处理器110中的硬件组件,和/或可以包括存储在存储器104中并且可在处理器110上操作以执行所描述的功能的计算机可执行指令。
如图3所示,MRA 300可以包括“A部分”,其包括存储器替换引擎304。在实施方式中,根据由MRA 300的组件确定的方向,引擎304管理存储器块调换或替换。换句话说,引擎304对以下进行管理:将一些数据块102从存储器104中移出,以及将被请求的数据块106从存储装置108移动到存储器104。
SQL分析器302可以加载列106并确定数据块106的大小。在一个实施方式中,SQL分析器302接收关于SQL请求的信息,并确定需要哪些列106来实现所述请求。另外,基于将要被加载的列106,SQL分析器302检测希望用于被请求的列106的存储器104的量。因此,这个信息由存储器替换引擎304接收,并用来管理存储器调换。
数据加载器引擎306可以基于存储器替换引擎304的管理执行将存储器移出和移入存储器104。例如,数据加载器引擎306将被请求的列106移入先前由数据块102占据的存储器104位置。将数据106移入存储器104位置可以有效地从存储器104中丢弃先前的数据块102。
在各种实施方式中,客户端308提供将要运行的SQL请求,而SQL执行器310运行SQL请求。在实施方式中,由SQL执行器310运行SQL请求包括从数据加载器引擎306接收关于加载的列106的信息。
不同的列(102、106)之间的相关性可以由MRA 300的“B部分”来确定。然而,如上所述,列(102、106)之间的相关性并不需要在每次发生存储器调换时被计算。在各种实施方式中,相关性在空闲时间被计算或者根据一定的时间延迟、周期性的、或预定的定时来计算。在实施方式中,关联规则计算引擎312基于由SQL历史模块314提供的请求和/或存取历史数据,确定列(102、106)之间的相关性。
列(102、106)之间的相关性可以在两个或更多个加载的列102之间、在两个或更多个被请求的列106之间、和/或在一个或多个加载的列102与一个或多个被请求的列106之间被确定。在各种实施方式中,相关性由关联规则计算引擎312使用一个或多个如这里所描述的算法来确定。
在一些实施方式中,到MRA 300的输入包括以下参数中的一个或多个:将要加载到存储器104中的数据的大小、将要加载的列106、存储器104内的空闲存储器的大小、被运行的SQL历史等。在一个实施方式中,到MRA 300的输入包括上述所有参数。MRA 300可以生成一个或多个表格来确定为了被请求的列106而将要从存储器104中丢弃的候选列102。在另一种实施方式中,MRA 300的输出包括其中列出候选列102的一个或多个生成的表格。
例如,候选列102的表格(这里称为CANDIDATE_COLUMNS)可以由关联规则算法(例如,CORRELATION_TABLE)和系统存储器表格生成。系统存储器表格记录了列102的状态、大小以及其它信息,它们可用来检查一列102是否已经被加载到存储器104中。在实施方式中,另一个算法可用来基于另一个表格(例如,COMBINATION_COLUMNS_SET)计算候选列102的哪些组合应该被丢弃,以下进一步讨论。组合的分数可以基于大小、近期访问(例如,存取)时间、访问次数、和列102数量来计算。在一个实施方式中,具有最高分数的组合将具有从存储器104中丢弃的最高优先级。所选择的列102的标识符将被输出到存储器替换引擎304以用于从存储器104中丢弃。
在实施方式中,数据结构(例如,表格、矩阵等)“nNode”被构建,用于计算列102之间的相关性的目的。在实施方式中,表格“nNode”被设计用于每个事务,其中
nNode=(id,col1,col2,col3…),
并且id是事务的标识符,而col是事务中使用的列102。
在实施方式中,另一个数据结构“mNode”被构建,用于计算所选择的列102的分数的目的。在实施方式中,表格“mNode”被设计用于每个列,其中
mNode=(id,t,visits,size),
并且id是存储器块的标识符,t是指示列102的近期访问时间的整数(访问越早,数值越小)、visits是列102的访问量、而size是列102的大小。在示例中,变量id、time、visits和size的值都可以从数据库的存储器替换引擎304中检索到。
为了以下讨论的目的,以下变量被用到:
·M_NEED_SIZE:要求的总存储器104大小。
·COLUMN_LIST:被请求的列106列表。
·M_FREE_SIZE:空闲存储器202的大小。
·G_SIZE:需要被丢弃的存储器的大小。
·CORRELATION_TABLE:这个表格记录列102之间的相关性。
·MIN_SUPPORT:关联规则算法的支持度的最小阈值。
·MIN_CONFIDENCE:关联规则算法的置信度的最小阈值。
·MIN_CORRELATIONS:默认相关性。
·CANDIDATE_COLUMNS:全部具有与被请求的列106的相对更小的相关性并且已经被加载到存储器104中的候选列102。
·COMBINATION_COLUMNS_SET:从候选列102生成的并且被用来计算目标函数以得到最优选择策略的列的组合集合。
图4是示出用于存储器替换配置300的示例关联计算过程400的流程图。在各种实施方式中,当满足一定条件时,用于关联计算的过程400可以在固定的(例如,用户定义的)时间段被调度等等。例如,固定的时间段可以是灵活的和可配置的。过程400可以基于从客户端308接收到的SQL经由SQL分析器302执行。
在块402,过程400包括通过分析数据库的日志获得运行的SQL和它们的事务Id。在示例中,块402的输出能够如下以表格的形式示出:
表1
在块404,过程400包括分析事务和涉及的SQL,以计算每个事务所请求的列106。在示例中,块404的输出能够如下以另一个表格的形式示出:
序列ID | 事务ID | 列 |
1 | 1 | COLA,COLB,COLC,COLD |
2 | 2 | COLB,COLC,COLD |
3 | 3 | COLB,COLC,COLG |
4 | 4 | COLC,COLG,COLH |
… | … | … |
表2
在块406,过程400包括使用关联规则算法来计算列102之间的相关性。在各种实施方式中,一个或多个用于生成关联规则的算法可以用来计算相关性。例如,一些可以被使用的算法是APRIORI、ECLAT、以及FP-GROWTH算法。在实施方式中,关联规则计算引擎312执行相关性计算。
例如,APRIORI算法可以用来挖掘关联规则,如图5的过程500的流程图中所示。过程500可以使用广度优先搜索策略来计算项目集合的支持度,并且使用利用了支持度的向下封闭属性(downward)的候选生成函数。例如,APRIORI算法过程500使用广度优先搜索和散列树(Hash tree)结构来有效率地计算候选项目集合。
例如,在块502,过程500开始,而在块504,过程500包括将变量k初始化到1。在块506,过程包括从长度k-1的项目集合中生成长度k的候选项目集合。在块508,过程包括修剪(prune)具有不频繁子模式(infrequent sub pattern)的候选。根据向下封闭引理,(块510、512)候选集合包含所有频繁的k长度的项目集合。这之后,过程包括扫描事务数据库,以确定候选当中的频繁的项目集合。当k到达最大时,过程停止(在块514)。
在示例中,用于APRIORI算法的过程的伪码如下:
算法APRIORI的过程500可以产生三个双数(double number)作为输出;包括支持度、置信度和提升度。项目集合X的支持度SUPP(X)被定义为数据集合中包含项目集合的事务的比例:
SUPP(X)=CNT(X)/CNT;
其中,CNT(X)是揭示包含项目集合X的事务计数的函数,而CNT是事务的总计数。
规则的置信度被定义为:
并且规则的提升度被定义为:
在一些实施方式中,计算最终相关性的公式可以如下定义。为了简化计算,可以使用线性模型。所得到的公式被示为:
Ci=α*Confidencei+β*(1-Supporti)+γ*(1-Lifti),
其中Confidencei、Supporti、和Lifti能够从上述三个公式中计算。参数:α、β和γ被用来调整公式的三个因子的影响。
为了最小化计算规模和改进算法过程500的效率,不满足先前定义的最小SUPPORT和最小CONFIDENCE的项目可以被删除。在一些情况下,这可能导致这样的结果:只有具有相对较高相关性的那些列102、106被记录在结果表格中。然而,具有更低的相关性的列102、106也可以是有用的。为了保证具有更低相关性的列102、106被包括,最小相关性值(例如,MIN_CORRELATIONS)可以被选择以包括那些列102、106。
在一个实施方式中,能够确定具有等于所选择的MIN_CORRELATIONS值的相关性值(即,相关性程度)的列102、106是不相关的。因此,MIN_CORRELATIONS值可以被选择和/或调整以便调整解集合(solution set)。在实施方式中,结果(例如,各种列102、106之间的示例相关性程度)可以如下以表格形式示出:
ID | 列A | 列B | 相关性程度 |
1 | COL A | COL G | 0.01 |
2 | COL A | COL H | 0.01 |
3 | COL A | COL E | 0.1 |
4 | COL A | COL D | 0.1 |
5 | COL A,COL B | COL C | 0.4 |
6 | COL A,COL B | COL E | 0.5 |
… | … | … | … |
表3
MRA 300可以被配置为使用存储器块替换算法,基于上述确定的相关性程度,将加载到存储器中的列102调换为被请求的列106。在各种实施方式中,MRA 300被配置为使用各种其它因子、参数、约束等等,如这里讨论的,以将列102调换或替换为列106。
变量M_NEED_SIZE和M_FREE_SIZE可以如所示来确定:
G_SIZE=M_NEED_SIZE-M_FREE_SIZE。
在一些实施方式中,如果G_SIZE小于零,则内存数据库具有足够的空闲存储器202来加载必要的列106。存储器替换引擎304可以经由数据加载器引擎306加载所有相关的列106到存储器中。然而,如果G_SIZE大于零,则存储器替换引擎304继续基于一个或多个替换算法来丢弃不小于G_SIZE的、列102中的一个或多个。
SQL分析器302可以被配置为确定M_NEED_SIZE,而存储器替换引擎304被配置为确定M_FREE_SIZE。
由于所选择的列106的总大小必须不小于G_SIZE,保证这个关系的约束函数被如下示出:
Di∈COMBINATION_COLUMNS_SET;
其中Di是COMBINATION_COLUMNS_SET的项目,集合COMBINATION_COLUMNS_SET是CANDIDATE_COLUMNS的集。C(Di)表示子集Di中列的数量,而是返回列j的大小的函数。
如何从候选列102的集合中选择要丢弃的列102的问题可以公式化为最优化问题。各种算法中的一个或多个可用来解决这个问题。例如,最久远使用(Least Recently Used,LRU)算法可以被使用。LRU算法的优点是其可以是相当地简单,并且具有较低的计算成本。利用LRU算法,目标函数不被使用。在实施方式中,具有最早访问时间的列被一个接一个地选择,直到列102或多个列102满足约束函数。相对好的结果可以以相对小的计算成本来实现。LRU算法的伪码被如下示出:
在另一种实施方式中,通过使用随机选择算法(random selection algorithm,RSA)可以以相对较低的计算成本实现更好的结果。使用RSA,最大运行时间可以是用户设置的,而列的最大数量可以是用户选择的。用户选择是可选的,并且能够在极端情况下避免大量的迭代。在实施方式中,RSA使用目标函数,其可以如下设计:
Di∈COMBINATION_COLUMNS_SET.
在上述公式中,Di是CANDIDATE_COLUMNS的子集;C(Di)是子集Di中列的数量;τ(j)是指示列j的近期访问时间的整数;是列j的访问数;是列j和被请求的列106之间的相关性。三个自变量:α、β、γ被用来调整公式的三个因子的影响。它们的值在零到一之间。
在实施方式中,具有更早访问时间、更低访问数、和更低相关性的列102将具有更高的Di,并且将具有从存储器104中被丢弃的更高的优先级。目标函数是线性函数并且具有较高的配合质量(fitness quality)。
最后,在实施方式中,MRA 300的目标是根据以下公式选择具有最大分数的列102的集合:
SELECTED_COLUMNS=
{argmaxScore(Di)|Di∈COMBINATION_COLUMNS_SET}
公式的伪码可以如下编写:
函数RUNTIME()可以定义为算法的当前运行时间的返回。
为了得到不考虑计算成本的情况下的最佳结果,MRA 300可以计算满足约束函数F(Di)的候选列的所有子集的Di,然后具有最大Di值的列102将被从存储器中丢弃。伪码可以如下示出:
函数RUNTIME()可以定义为算法的当前运行时间的返回。
图6是示出用于将存储器104中的数据102替换或调换为被请求的数据106的示例过程600的流程图。例如,当数据块106被内存数据库请求时,过程600使用一个或多个存储器替换算法将存储器104中的数据块102替换为数据块106。过程600被参考图1到图5来描述。
对过程400、500和600进行描述的次序并不意图被解释为限制,并且任意数量的被描述的过程块可以以任意次序组合以实施该过程,或者替换的过程。另外,单个的块可以从所述过程中删除而不脱离这里描述的主题的精神和范围。而且,所述过程可以以任何适当的组件、或者它们的组合来实施,而不脱离这里描述的主题的范围。
在块602,过程开始,并且在块604,过程包括分析将要加载的被请求的列(例如,数据块、诸如数据块106,例如),包括数据块的大小。在实施方式中,过程包括分析数据库日志以确定运行的结构化查询语言(SQL)请求以及分析相关联的被请求的数据块以确定将用于将被请求的数据块加载到存储器中的存储器的量。
在块606,过程包括计算将要从存储器中丢弃的加载的数据的量以便为被请求的数据块(例如,列)让出空间。例如,过程包括计算当空闲存储器的量小于被请求的数据块的大小时将要从存储器中丢弃的加载的数据的量。
在块608,过程包括进行检查以了解所需空间的量是否大于零。例如,如果所需空间的量小于零,则不会从存储器中丢弃数据块以加载被请求的数据块。
在块610,过程包括基于加载的数据块与被请求的数据块的相关性,选择将要从存储器中丢弃的候选的加载的数据块。在实施方式中,过程包括使用关联规则算法确定一个或多个加载的数据块与被请求的数据块之间的相关性。在另一种实施方式中,过程包括在系统工作负荷较低时,周期性地调度关联规则算法的运行,或者在用户定义的时间段调度关联规则算法的运行。在一个实施方式中,关联规则算法的输出包括值:支持度、置信度、以及提升度。
在块612,过程包括进行检查以了解是否加载的数据块中的任何一个具有与被请求的数据块的最小的相关性。如果它们有,则过程前进到块614,其包括计算约束函数。在实施方式中,过程包括约束将要从存储器中丢弃的候选的加载的数据块的总量。例如,约束函数保证最小数量的加载的数据块被从存储器中丢弃以便为被请求的数据块让出空间,而不丢弃不必要地过多数量的加载的数据块。这个约束函数在块616被检查。在块618,过程包括增加检查数据块的最小相关性的迭代过程。
在实施方式中,过程包括选择最小阈值相关性值以确定候选的加载的数据块的期望集合。在块620,过程包括计算每个候选的加载的数据块的分数。在实施方式中,过程包括按最高分数以降序来选择将要从存储器中丢弃的一定量的候选的加载的数据块。
在块622,过程包括丢弃具有最高分数的一定量的候选的加载的数据块。在实施方式中,过程包括基于以下各项中的至少一个选择将要从存储器中丢弃的候选的加载的数据块:将要加载的被请求的数据块的大小、空闲存储器的大小、近期加载的数据块存取、或近期加载的数据块存取时间。例如,过程包括预测加载的数据块中的哪些将不会在最近被存取。
在块624,过程包括将被请求的数据块加载到存储器。在块626,随着被请求的数据块被加载到存储器以便为运行或其它用途作准备,过程结束。在替换的实施方式中,其它技术可以以各种组合被包括在过程600中,并且保持在本公开的范围内。
可以使用标准编程和/或工程技术将本公开的主题的一些部分实施为系统、方法、装置、或制品,以产生软件、固件、硬件或它们的任何组合,用于控制计算机或处理器(诸如处理器110,例如)实施本公开。例如,示例系统100的一些部分可以使用处理器110可访问的任何形式的计算机可读介质(例如,示出为图1中的存储器104)来实施。计算机可读介质可以包括,例如,计算机存储介质和通信介质。
计算机可读存储介质包括易失性的和非易失性的、可移除的和不可移除的介质,其以任何用于信息存储的方法或技术来实施,所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。存储器104是计算机可读存储介质的示例。可以包括本地的、网络、或云存储装置的存储装置108,例如,是计算机可读存储介质的另一个示例。可以存在的另外类型的计算机可读存储介质包括,但不限于,RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储装置、磁盘或其它磁存储设备、或可以用来存储所期望的信息并且可以被处理器110存取的任何其它介质。
相反,通信介质典型地具体实现为计算机可读指令、数据结构、程序模块、或调制的数据信号中的其它数据,诸如载波或其它传输机制。
虽然已经在运行在计算机和/或多个计算机上的计算机程序的计算机可执行指令的一般上下文中描述了本主题,但是本领域技术人员将认识到本主题还可以与其它程序模块组合实施。一般地,程序模块包括例程、程序、组件、数据结构等,它们执行特定任务和/或实施特定抽象数据类型。
此外,本领域技术人员将认识到,创新的技术可以利用其它计算机系统配置来实践,所述其它计算机系统配置包括单处理器或多处理器计算机系统、迷你计算设备、主计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程的消费电子产品或工业电子产品等。所示出的方面还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。然而,本公开的一些方面,如果不是所有方面的话,可以在独立计算机上实践。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备两者中。
虽然已经以专用于结构特征和/或方法动作的语言描述了实施方式,但是应当理解,在所附权利要求中定义的主题并不必限于如上所述的特定的特征或动作。相反,所述特定的特征和动作是以说明性的实施方式的说明性的形式被公开。例如,方法动作不需要以这里描述的次序或组合来执行,并且可以以一个或多个动作的任意组合来执行。
附图翻译
图1
110 处理器
102 加载的数据块
104 存储器
106 请求的数据块
108 存储
图2
104 存储器
202 池(空闲)
204 临时计算
206 列表格
208 行表格
210 系统表格
212 代码和堆栈
Tables 表格
Used memory使用的存储器
图3
302 SQL分析器
304 存储器替换引擎
306 数据加载器引擎
308 客户端
310 SQL运行器
312 关联规则计算引擎
314 SQL历史
SQLS TO BE EXECUTED 将要运行的SQL
Part A A部分
Part B B部分
图4
402 分析数据库日志
404 分析事务和涉及的SQL
406 关联计算
图5
502 开始
506 生成大小为K的候选项
508 精简并生成大小为K的频繁项
510 K达到最大值
514 结束
图6
602 开始
604 分析将要加载的列和大小
606 计算将要丢弃的存储器的大小(大小为G)
608 大小G>0
610 从相关性表格中选择候选列
614 计算约束函数f(Di)
620 计算分数Di
622 丢弃具有最高分数Di的列
624 记载请求的列
626 结束
Claims (17)
1.一种非瞬时计算机可读存储介质,在其上存储有计算机可运行指令,所述指令当被运行时使得计算机处理器启动过程,所述过程包括:
确定将用来将被请求的数据块加载到存储器中的存储器的量;
响应于空闲存储器的量小于被请求的数据块的大小,基于被请求的数据块的量计算将要从存储器中丢弃的加载的数据的量;
使用关联规则算法确定一个或多个加载的数据块与所述被请求的数据块之间的相关性,其中,关联规则算法使用广度优先搜索和散列树结构;
基于所述相关性,选择将要从存储器中丢弃的一个或多个加载的数据块的候选的加载的数据块;
基于目标函数计算每个候选的加载的数据块的分数;
丢弃具有最高分数的候选的一些加载的数据块;以及
将被请求的数据块加载到存储器中,
其中,数据块包括基于列的内存数据库应用的数据列。
2.如权利要求1所述的计算机可读存储介质,还包括基于约束函数约束将要从存储器中丢弃的候选的加载的数据块的总量。
3.如权利要求1所述的计算机可读存储介质,其中,确定一个或多个加载的数据块与被请求的数据块之间的相关性包括预测加载的数据块中的哪些在最近不会被存取。
4.如权利要求1所述的计算机可读存储介质,其中,候选的加载的数据块与其它加载的数据块相比具有与被请求的数据块的更低的相关性。
5.一种用被请求的数据块替换加载的数据块的系统,包括:
处理器;
数据存储硬件装置,通信地耦合到处理器,并且被配置为存储用于内存数据库应用的被请求的数据列;
存储器硬件设备,通信地耦合到处理器,并且被配置为存储用于内存数据库应用的加载的数据列;
存储器替换模块,存储在存储器硬件设备中,并且可在处理器上操作以便:
计算将要从存储器中丢弃的加载的数据的量;
基于加载的数据列与被请求的数据列的相关性,选择将要从存储器中丢弃的候选的加载的数据列,其中,使用关联规则算法确定一个或多个加载的数据块与被请求的数据块之间的相关性,其中,关联规则算法使用广度优先搜索和散列树结构;
计算每个候选的加载的数据列的分数;
丢弃具有最高分数的一些候选的加载的数据列;以及
将被请求的数据列加载到存储器中。
6.如权利要求5所述的系统,其中,所述存储器替换模块被配置为基于以下各项中的至少一个选择将要从存储器中丢弃的候选的加载的数据列:对于加载的数据列中的哪些最近不会被存取的预测、一个或多个加载的数据列与被请求的数据列之间的相关性值、约束函数、每个候选的加载的数据列的分数、将要加载的被请求的数据列的大小、空闲存储器的大小、近期加载的数据列存取、或者近期加载的数据列存取时间。
7.一种在存储器中用被请求的数据块替换加载的数据块的方法,包括:
计算将要从存储器中丢弃的加载的数据的量;
基于加载的数据块与被请求的数据块的相关性,选择将要从存储器中丢弃的候选的加载的数据块,其中,使用关联规则算法确定一个或多个加载的数据块与被请求的数据块之间的相关性,其中,关联规则算法使用广度优先搜索和散列树结构;
计算每个候选的加载的数据块的分数;
丢弃具有最高分数的一些候选的加载的数据块;以及
将被请求的数据块加载到存储器中,
其中,数据块包括基于列的内存数据库应用的数据列。
8.如权利要求7所述的方法,还包括分析数据库日志以确定运行的结构化查询语言(SQL)请求和相关联的被请求的数据块。
9.如权利要求8所述的方法,还包括确定将用来将被请求的数据块加载到存储器中的存储器的量。
10.如权利要求7所述的方法,还包括响应于空闲存储器的量小于被请求的数据块的大小,计算将要从存储器中丢弃的加载的数据的量。
11.如权利要求7所述的方法,还包括响应于较低的系统工作负荷,周期性地或在用户定义的时间段调度关联规则算法的运行。
12.如权利要求7所述的方法,其中,关联规则算法的输出包括以下值:支持度、置信度、以及提升度。
13.如权利要求7所述的方法,还包括基于以下各项中的至少一个选择将要从存储器中丢弃的候选的加载的数据块:将要加载的被请求的数据块的大小、空闲存储器的大小、近期加载的数据块存取、或者近期加载的数据块存取时间。
14.如权利要求7所述的方法,还包括预测加载的数据块中的哪些近期不会被存取。
15.如权利要求7所述的方法,还包括选择最小阈值相关性值以确定期望的候选的加载的数据块的集合。
16.如权利要求7所述的方法,还包括以按照最高分数的降序来选择将要从存储器中丢弃的一些候选的加载的数据块。
17.如权利要求7所述的方法,还包括约束将要从存储器中丢弃的候选的加载的数据块的总量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/550,872 | 2014-11-21 | ||
US14/550,872 US10067981B2 (en) | 2014-11-21 | 2014-11-21 | Intelligent memory block replacement |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630706A CN105630706A (zh) | 2016-06-01 |
CN105630706B true CN105630706B (zh) | 2021-01-15 |
Family
ID=56010232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510819233.9A Active CN105630706B (zh) | 2014-11-21 | 2015-11-23 | 智能存储器块替换方法、系统及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10067981B2 (zh) |
CN (1) | CN105630706B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9983796B2 (en) * | 2015-09-17 | 2018-05-29 | Veritas Technologies Llc | Systems and methods for provisioning frequently used image segments from caches |
US10296837B2 (en) * | 2015-10-15 | 2019-05-21 | Sap Se | Comment-comment and comment-document analysis of documents |
US10776165B2 (en) * | 2018-05-15 | 2020-09-15 | Sap Se | Optimized database resource handling |
US12086409B2 (en) | 2022-08-31 | 2024-09-10 | Pure Storage, Inc. | Optimizing data deletion in a storage system |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822759A (en) * | 1996-11-22 | 1998-10-13 | Versant Object Technology | Cache system |
US6266742B1 (en) * | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
US6341281B1 (en) * | 1998-04-14 | 2002-01-22 | Sybase, Inc. | Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree |
US6370622B1 (en) | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6931490B2 (en) * | 2000-12-15 | 2005-08-16 | Intel Corporation | Set address correlation address predictors for long memory latencies |
US6598119B2 (en) | 2001-02-09 | 2003-07-22 | At&T Corp. | Database management system with a multiple-level cache arrangement |
US7194477B1 (en) * | 2001-06-29 | 2007-03-20 | Revenue Science, Inc. | Optimized a priori techniques |
US7562090B2 (en) * | 2002-12-19 | 2009-07-14 | International Business Machines Corporation | System and method for automating data partitioning in a parallel database |
US7165147B2 (en) | 2003-07-22 | 2007-01-16 | International Business Machines Corporation | Isolated ordered regions (IOR) prefetching and page replacement |
EP1505506A1 (en) | 2003-08-05 | 2005-02-09 | Sap Ag | A method of data caching |
US7383389B1 (en) | 2004-04-28 | 2008-06-03 | Sybase, Inc. | Cache management system providing improved page latching methodology |
US20070113014A1 (en) * | 2004-04-30 | 2007-05-17 | Svetoslav Manolov | Weak referenced based eviction of persistent data from cache |
US7552153B2 (en) | 2004-12-28 | 2009-06-23 | Sap Ag | Virtual machine monitoring using shared memory |
BRPI0502384A (pt) * | 2005-06-21 | 2007-02-06 | Siemens Ltda | sistema e método de monitoração e controle da condição de operação de um transformador de potência |
US7673105B2 (en) | 2005-06-27 | 2010-03-02 | Ab Inition Technology LLC | Managing memory pages |
US8700607B2 (en) * | 2005-08-02 | 2014-04-15 | Versata Development Group, Inc. | Applying data regression and pattern mining to predict future demand |
US8615635B2 (en) | 2007-01-05 | 2013-12-24 | Sony Corporation | Database management methodology |
US7921260B2 (en) | 2007-10-24 | 2011-04-05 | International Business Machines Corporation | Preferred write-mostly data cache replacement policies |
US8650081B2 (en) | 2008-12-31 | 2014-02-11 | Sap Ag | Optimization technology |
US9355109B2 (en) * | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US20120284275A1 (en) * | 2011-05-02 | 2012-11-08 | Srinivas Vadrevu | Utilizing offline clusters for realtime clustering of search results |
US8688915B2 (en) | 2011-12-09 | 2014-04-01 | International Business Machines Corporation | Weighted history allocation predictor algorithm in a hybrid cache |
US10162766B2 (en) * | 2012-04-30 | 2018-12-25 | Sap Se | Deleting records in a multi-level storage architecture without record locks |
US9323695B2 (en) | 2012-11-12 | 2016-04-26 | Facebook, Inc. | Predictive cache replacement |
US9417092B2 (en) * | 2014-04-25 | 2016-08-16 | Samsung Electronics Co., Ltd. | Automatic fixture monitoring using mobile location and sensor data with smart meter data |
-
2014
- 2014-11-21 US US14/550,872 patent/US10067981B2/en active Active
-
2015
- 2015-11-23 CN CN201510819233.9A patent/CN105630706B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10067981B2 (en) | 2018-09-04 |
CN105630706A (zh) | 2016-06-01 |
US20160147461A1 (en) | 2016-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956394B2 (en) | Reclustering of database tables based on peaks and widths | |
JP6870071B2 (ja) | テーブルのインクリメンタルクラスタリング保守 | |
CN107851123B (zh) | 在存储器中虚拟列单元内具体化表达式以加速分析查询 | |
US9892150B2 (en) | Unified data management for database systems | |
US20170083573A1 (en) | Multi-query optimization | |
JP5088668B2 (ja) | 計算機負荷見積システム、計算機負荷見積方法、計算機負荷見積プログラム | |
CN105630706B (zh) | 智能存储器块替换方法、系统及计算机可读存储介质 | |
CN110362566B (zh) | 分层htap数据库的混合数据布局中的数据布置 | |
US10248618B1 (en) | Scheduling snapshots | |
US9779121B2 (en) | Transparent access to multi-temperature data | |
Villalba et al. | Constant-time sliding window framework with reduced memory footprint and efficient bulk evictions | |
US10176231B2 (en) | Estimating most frequent values for a data set | |
US8700822B2 (en) | Parallel aggregation system | |
Kim et al. | Optimally leveraging density and locality to support limit queries | |
Kim et al. | Speedy browsing and sampling with needletail | |
WO2021224960A1 (ja) | 保存装置、保存方法、およびプログラム | |
Liu et al. | AVPS: Automatic Vertical Partitioning for Dynamic Workload | |
CN115630004A (zh) | 一种基于大数据平台的影子计算方法 | |
Olma | Timely and cost-efficient data exploration through adaptive tuning | |
CN117216333A (zh) | 基于图数据优化的深层多跳查询方法、装置、设备及介质 | |
Jeyasutha et al. | Closed frequent itemsets mining over data streams for visualizing network traffic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |