通用高速缓存管理系统的制作方法

文档序号:6494939阅读:201来源:国知局
通用高速缓存管理系统的制作方法
【专利摘要】在计算设备的易失性存储器中将高速缓存分配到数据处理实例,其中高速缓存的每一个被专有地分配给数据处理实例的单独的一个。公共高速缓存被分配在计算设备的易失性存储器中,其中公共高速缓存由数据处理实例共享。数据处理实例的每个实例被配置为:识别在分配给该实例的特定高速缓存中的数据块,其中自从数据块被最后持久地写到一个或多个存储设备以来数据块没有变化;使得数据块被存储在公共高速缓存中;以及从特定高速缓存中消除数据块。在公共高速缓存中的数据块被维护而不被持久地写到一个或多个存储设备。
【专利说明】通用高速缓存管理系统
【技术领域】
[0001]本公开涉及数据处理系统中的存储器管理。
【背景技术】
[0002]本节中描述的方法是可以追随的方法,但不一定是已经预先构思或追随的方法。因此,除非另有陈述,不应当假定本节中描述的方法中的任何一个仅仅由于它们包含在本节中而被承认为现有技术。
[0003]对称多处理器(SMP)机器、或箱是在其中两个或更多个中央处理单元(CPU)、或处理器可操作被连接到单个共享的物理存储器并由单个操作系统(OS)实例控制的多处理器计算机主机。通常,大型组织在相同的SMP主机上布置多数据库实例以求改善使用并减小总所有权成本(TC0)。由于SMP主机的高的TC0,许多组织想要另外从SMP主机上的数据库实例的此类多租用部署中实现群集可分级性。然而令人遗憾的是,群集多租用部署因为它们遭受不能在相同的SMP主机上运行的多数据库实例当中共享物理存储器而不被广泛使用。
[0004]具体地,群集可分级性由于物理存储器的超供给而很难在多租用部署中实现。例如,当SMP主机可以具有共享物理存储器的一个或多个千兆的4-8个CPU时,在典型部署中可能有二十乃至更多在SMP主机上同时运行的数据库实例。为了解决那么多数据库实例的存储器需求,一般地迫使管理员在各种数据库实例之中配置SMP主机的所有可用物理存储器。然而,当一个或一些数据库实例开始经历比其它较大的工作量时,对SMP主机上的OS实例来说因为已经供给SMP主机的所有物理存储器,所以分配更多的物理存储器给这些数据库实例是不可能的。为了解决此超供给问题,管理员一般必须关闭当时不繁忙的一个或若干数据库实例,以使得SMP主机上的OS实例可以向正在经历大工作量的数据库实例重新供给释放的物理存储器。不用说,这种解决方案不仅仅因为它包含管理员的干涉而是低效的,而且也因为当数据库实例被关闭时它们对故障转移和任何其它可用性目的是脏的,所以缺乏从SMP主机上的多租用部署中期望的合并。此外,在此类多租用部署之下,很明显存储器超供给的问题是对通过在一个或更多群集中部署多数据库实例来实现真实可分级性的严重妨碍。
[0005]当如上相对于SMP主机上部署的数据库实例描述存储器超供给的问题时,应当注意此问题不是只有SMP主机或数据库实例才有的。相反地,对于使用大易失性存储器以缓冲来自持久存储器的数据以便在将它写回到持久存储器前访问和变更数据的任何类型的处理实例,更小型商品服务器机器上的多租用部署可能经历相同的存储器超供给问题。
【专利附图】

【附图说明】
[0006]这里描述的技术是以示例的方式而不是通过限制的方式示出在附图的图中,并且其中的类似参考数字指代类似的元素并且其中:
[0007]图1是示出了根据一个实施例的用于高速缓存管理的示例方法的流程图;[0008]图2是示出了根据一个实施例的示例操作上下文的方框图;
[0009]图3是示出了根据一个实施例的另一个示例操作上下文的方框图;
[0010]图4是示出了在其上可以执行实施例的示例计算设备的方框图。
【具体实施方式】
[0011]为了说明,在下面的描述中阐述许多细节以便提供描述的用于自动数据安排的技术的彻底了解。然而将很明显,没有这些细节也可以实践这里描述的技术。在其它实例中,以方框图的形式显示公知的结构和设备以避免对这里描述的技术不必要地模糊。
[0012]一般概述
[0013]这里描述用于通用高速缓存管理的技术。在计算设备上执行的多个数据处理实例的每一个被分配在计算设备的易失性存储器中专属的、专用高速缓存中。在计算设备上的数据处理实例的此类多租用部署中,每个数据处理实例使用它的专用高速缓存来缓冲持久地存储在一个或多个持久存储设备上的数据项,其中数据处理实例在将数据项从专用高速缓存持久地写回到持久存储设备中之前访问、修改、和/或另外处理专用高速缓存中的数据项。
[0014]根据这里描述的技术,公共高速缓存被分配在计算设备的易失性存储器中以使得公共高速缓存可以由运行在计算设备上的多个数据处理实例共享。当任何给定数据处理实例在它的专用高速缓存中需要空间以从持久存储设备中读取一个或多个附加数据项时,数据处理实例在它的专用高速缓存中识别“干净的”数据项以用于驱逐(eviction),例如,诸如由于将数据项从专用高速缓存最后写到持久存储设备而在专用高速缓存中没有修改的数据项。代替仅仅从它的专用高速缓存中丢弃干净的数据项,数据处理实例存储或使得干净的数据项被存储在公共高速缓存中。在干净的数据项已被存储在公共高速缓存中之后,数据处理实例从它的专用高速缓存中消除干净的数据项以便为存储需要被从持久存储设备中读取的附加数据项释放空间。此后,当数据处理项需要将干净的数据项读取到它的专用高速缓存时,数据处理实例首先检查公共高速缓存以确定干净的数据项是否仍然存储在其中-并且如果是,则数据处理实例从公共高速缓存中检索干净的数据项而不是从持久存储设备中读取它。
[0015]以这种方式,公共高速缓存有效地充当为多数据实例在易失性存储器中维护干净的数据项的通用高速缓存资源池。公共高速缓存有效地在全部数据处理实例之间共享而不必被专有地分配给任何一个实例;因此,如果特定的实例变得更活动,则该特定的实例将比其它实例耗费更多公共高速缓存而没有对其它实例的任何可用性影响-其不需要被拆卸,除了至多将需要从持久存储设备处取得未在公共高速缓存中发现的那些数据项。以这样的方式,这里描述的技术:(1)避免数据处理实例的停止以便向其它更忙碌的实例重新供给它们的存储器;(2)避免存储器超供给的问题并且允许计算设备上的数据处理实例被以群集配置而不必须面对频繁的存储器重新供给。
[0016]在示例实施例中,描述的技术包括由计算设备执行的方法,包括:在计算设备的易失性存储器中将第一高速缓存专有地分配给两个或更多数据处理实例的第一实例,其中第一高速缓存被配置以存储被持久存储在一个或多个存储设备上的第一组数据块的副本;在计算设备的易失性存储器中将第二高速缓存专有地分配给两个或更多数据处理实例的第二实例,其中第二高速缓存被配置以存储被持久存储在一个或多个存储设备上的第二组数据块的副本;在计算设备的易失性存储器中分配公共高速缓存;第一实例执行以下步骤:在第一高速缓存中识别自第一数据块被最后写到一个或多个存储设备以来没有被改变的第一数据块;使得第一数据块被存储在公共高速缓存中;从第一高速缓存中消除第一数据块;第二实例执行以下步骤:在第二高速缓存中识别自第二数据块被最后写到一个或多个存储设备以来没有被改变的第二数据块;使得第二数据块被存储在公共高速缓存中;从第二高速缓存中消除第二数据块;以及在公共高速缓存中维护包括第一数据块和第二数据块的数据块而不必持久地将数据块写到一个或多个存储设备。
[0017]在另一个示例实施例中,这里描述的技术可以被实现为由计算设备执行的方法,包括:在计算设备的易失性存储器中将多个高速缓存分配到多个数据库实例,其中多个高速缓存的每一个被专有地分配给多个数据库实例的单独的一个;在计算设备的易失性存储器中分配由多个数据库实例共享的公共高速缓存;每个特定的数据库实例执行以下步骤:识别被专有地分配给多个数据库实例的多个高速缓存的特定高速缓存中的特定数据块,其中所述特定数据块自所述特定数据块被最后持久地写到一个或多个存储设备以来没有被改变;使得特定数据块被存储在公共高速缓存中;从特定高速缓存中消除特定数据块;以及在公共高速缓存中维护包括特定数据块的数据块而不持久地将数据块写到一个或多个存储设备。
[0018]在各种其它实施例中,这里描述的技术可以被实现为存储在一个或多个计算机可读存储介质上的可执行指令的序列的形式的一个或多个计算机程序产品,和/或被实现为被配置以执行如上所述的方法的一个或多个系统。
[0019]示例实施例的功能描述
[0020]图1是示出了根据这里描述的技术的用于通用高速缓存管理的示例方法的流程图。在一些实施例中,在图1示出的方法的步骤由在计算设备上执行的一个或多个处理作为一个或多个数据处理实例的一部分执行。如这里使用的,“实例”指代被分配诸如存储器、CPU时间、和/或盘存储空间之类的计算资源以便执行一个或多个功能的、存储器的分配的块和与存储器的块相关联的一个或多个处理集。可以包括在实例中的处理的示例是被配置以响应来自各种客户端和应用对一个或多个服务和/或功能的请求的“服务器”(这里也称为“服务器处理”)。
[0021]如这里使用的,“数据处理实例”指代在计算设备的易失性存储器中被分配专用的高速缓存以便缓冲持久地存储在一个或多个存储设备上的数据块,其中数据处理实例在将数据块持久地从它的专用高速缓存写回到存储设备前在它的专用高速缓存中访问、修改、和/或否则处理数据块。如这里使用的,“专用”或“私有”高速缓存指代由仅仅一个数据处理实例可访问的而且不能由其它数据处理实例访问或共享的高速缓存。数据处理实例的示例不限制地包括在一个或多个数据库中处理数据的数据库实例、处理诸如图像、音频/视频流、及其他流化的多介质内容之类的各种类型的多介质的多介质服务器实例、高速缓存被持久地存储在别处的内容的互联网服务器实例、高速缓存数据以服务特定类型的客户端和应用的应用服务器实例及其他类型的中间件服务器实例、以及被配置以通过将持久地存储的数据缓冲到易失性存储器高速缓存中来处理持久地存储的数据的任何其它类型的实例。[0022]如这里使用的,“数据块”指代被分配在持久存储设备中以存储由数据处理实例管理的一部分数据的单元(例如,诸如数据结构之类)。应当注意,如这里使用的,数据块是被持久地存储在一个或多个存储设备上的数据而且在数据处理实例的重新启动之后继续存在的单元;因此,数据块不同于数据处理实例的各种动态和静态配置参数以及各种运行时间属性、变量、处理、及其他由数据处理实例在实例的运行时间操作期间在计算设备的易失性存储器中维护的处理内容信息。
[0023]在图1中示出的方法在下文中描述为如由诸如OS实例和/或数据处理实例之类的一个或多个实例(或它的处理)执行。然而,应当注意此描述仅仅是说明性目的并且图1的方法不局限于由任何特定类型实例或计算机处理执行。
[0024]在步骤102中,第一高速缓存在计算设备的易失性存储器中被专有地分配到在计算设备上执行的两个或更多数据处理实例的第一实例。第一高速缓存被配置以存储被持久地存储在一个或多个存储设备上的一组数据块的副本。例如,在一些实施方式中,在计算设备上的OS实例可以将易失性存储器的一部分(例如,诸如一批存储器地址)分配到第一数据处理实例。然后,从实例化第一实例的软件组件和/或在第一实例中的处理可以在第一高速缓存和包括第一实例的处理之间分配存储器的此部分。在另一个示例中,计算设备上的OS实例可以执行到第一高速缓存以及到包括在第一数据处理实例内的每一处理的存储器的实际分配。因此,这里描述的技术不局限于具有为第一数据处理实例的专用高速缓存分配存储器的特定类型的组件。
[0025]以类似的方式,在步骤104中第二高速缓存在同样的计算设备的易失性存储器中被专有地分配到在计算设备上执行的两个或更多数据处理实例的第二实例。第二高速缓存被配置以存储被持久地存储在一个或多个存储设备上的一组数据块的副本,其中该组数据块可以与由第一数据处理实例处理的那组数据块相同的或不同。
[0026]在步骤106中,公共高速缓存被分配在计算设备的易失性存储器中。公共高速缓存被以运行在计算设备上的两个或更多数据处理实例的至少一些(和可能全部)可以通过在其中存储干净的数据块而共享公共高速缓存的方式分配。根据这里描述的技术,公共高速缓存可以由各种类型的处理和实例分配。例如,在一些实施方式中,公共高速缓存可以由在计算设备上执行的OS实例分配为共享的范围的存储器地址。在其它实施方式中,OS实例可以将存储器的一部分分配到公共高速缓存实例。然后,从中实例化公共高速缓存实例的软件组件和/或在公共高速缓存实例中的处理可以在公共高速缓存和包括公共高速缓存实例的处理当中分配存储器的此部分。
[0027]根据这里描述的技术,在各种实施例和实施方式中公共高速缓存可以被分配在计算设备的物理存储器中、在被连接到计算设备的快闪存储卡上、和/或在计算设备的物理存储器和快闪存储卡的组合中以使得公共高速缓存的一部分存在于物理存储器中并且溢出部分存在于快闪存储卡上。
[0028]在步骤108A中,两个或更多数据处理实例的第一实例识别第一高速缓存中的干净的第一数据块,其被专有地分配给第一实例。如这里使用过的,“高速缓存”数据块指代存储在高速缓存中的数据块,其中自数据块被从高速缓存最后写入(或流溢)到持久存储器以来在高速缓存中数据块没有被修改。
[0029]在步骤IIOA中,第一实例使得识别的干净的数据块被存储在公共高速缓存中。例如,在一些实施方式中,第一实例或它的处理存储公共高速缓存中的干净的数据块;在其它实施方式中,第一实例或它的处理将干净的数据块发送到管理公共高速缓存的公共高速缓存实例,并且公共高速缓存实例或它的处理将干净的数据块存储在公共高速缓存中并且向第一实例返回确认。
[0030]在干净的数据块被存储在公共高速缓存中之后,在步骤112A中第一实例或它的处理从分配给第一实例的第一高速缓存中消除(或“清除”)干净的数据块而不将干净的数据块写入到存储设备。例如,第一实例或它的处理可以消除干净的数据块以便为存储需要被从存储设备读取到第一高速缓存中的另一个数据块释放空间。
[0031]第二数据处理实例可以按类似方式处理它的干净的数据块-例如,代替仅仅丢弃干净的数据块以便在它的专用的高速缓存中释放空间,第二实例首先使得它的干净的数据块被存储在公共高速缓存中。例如,在步骤108B中,第二实例或它的处理识别第二高速缓存中的干净的第二数据块,其被专有地分配给第二实例。然后,在步骤IlOB中,第二实例或它的处理使得识别的干净的数据块被存储在公共高速缓存中,例如通过直接地将干净的数据块存储到公共高速缓存中或通过将干净的数据块发送到管理公共高速缓存的公共高速缓存实例。在干净的数据块被存储在公共高速缓存中之后,在步骤112B中,第二数据处理实例或它的处理从它的专用的高速缓存中消除干净的数据块而不将干净的数据块刷到存储设备。
[0032]根据这里描述的技术,在步骤114中维护公共高速缓存中的数据块而不将其写(或刷)回到其中数据块被持久地存储的存储设备。例如,当需要在公共高速缓存中释放空间时,管理公共高速缓存的处理可以使用各种高速缓存管理机制以识别并且从公共高速缓存中翻出数据块,其中此类高速缓存机制可以不限制地包括最近最少使用(LRU)机制、最近最多使用(MRU)机制、最不常用(LFU)机制、修正机制、和/或它的各种组合和修改。根据这里描述的技术,处理公共高速缓存的实例和/或处理并未修改或相反改变存储在公共高速缓存中的数据块的内容,并且自公共高速缓存中的数据块被清理以来,不需要将这些数据块持久地写回到存储设备。
[0033]当两个或更多数据处理实例的数据处理实例(例如,诸如第一实例或第二实例)需要将数据块读到它的专用的高速缓存中时,数据处理实例首先检查以确定正被讨论的数据块是否被存储在公共高速缓存中。如果正被讨论的数据块被存储在公共高速缓存中,则数据处理实例读取或使得数据块被从公共高速缓存而不是存储设备中读取,从而将一个或多个输入/输出(I/O)操作存储到存储设备。如果正被讨论的数据块没有存储在公共高速缓存中(或者因为数据块还没有被存储在公共高速缓存中或者已经从那里翻出),则数据处理实例使得数据块被从存储设备中检索。在一些实施方式中,使得数据块被从存储设备中检索包含数据处理实例本身从存储设备中取来数据块。在其它实施方式中,响应于在公共高速缓存中的数据块的高速缓存未中,管理公共高速缓存的实例从存储设备中检索数据块并且将它返回到数据处理实例。在使用公共高速缓存群集的操作上下文中,响应于高速缓存未中,管理局部公共高速缓存的实例可以从公共高速缓存群集中的另一个高速缓存中取来数据块而不是从存储设备中检索。
[0034]以这样的方式,这里描述的用于通用高速缓存管理的技术避免了多租用部署中的存储器超供给的问题。另外,如这里描述的公共高速缓存的使用允许在相同计算设备上的数据处理实例被配置在可分级群集中而没有存储器重新供给问题,同时对特定的多租用部署可能需要的各种可用性功能(例如,诸如瞬时故障转移、任务关键的性能级,等等)提供支持。
[0035]块识别数据
[0036]根据这里描述的技术,为被存储在被分配在计算设备的易失性存储器中并由多种数据处理共享的公共高速缓存中的数据块维护块识别数据。如这里使用的,“块识别数据”指代识别被存储在公共高速缓存中的数据块的一个或多个值。在各种实施例中,块识别数据可以包括各种类型的标识符并且可以由各种实体以各种类型的数据结构维护。
[0037]例如,在各种实施例中用于给定数据块的块识别数据可以包括但不限于任何适当的块标识符,诸如:唯一地识别数据块的系统范围的块标识符;一个或多个存储器标识符(例如,诸如盘ID、文件ID、等等)和一个或多个块标识符(例如,诸如块ID、文件偏移,等等)的组合,其中所述组合对共享计算设备上的公共高速缓存的任何数据处理实例唯一地识别数据块;指示数据块是否是当前的一个或多个版本标识符,其中版本标识符可以具体地与各个数据块或与同时或在相同的事务中修改的一组数据块相关联;以及任何其它类型的对在计算设备上执行的数据处理实例适合以识别数据块的块标识符和/或块标识符的组合。
[0038]在各种实施例中对存储在计算设备上的公共高速缓存中的数据块的块识别数据可以被在任何可以被分配在计算设备的易失性存储器中的适当类型的数据结构和/或以易失性存储器和持久存储器的一些组合中维护。例如,在一些实施例中块识别数据可以被在数据目录或其它适当的被维护在主机托管公共高速缓存的计算设备的易失性存储器中的数据仓库维护。在其它实施例中,块识别数据可以在公共高速缓存中和在共享公共高速缓存的数据处理实例的专用高速缓存中维护。例如,在这些实施例中管理公共高速缓存的实例可以将唯一的块ID分配给每个数据块作为存储在公共高速缓存中的数据块并且可以将此块ID返回到使得数据块被存储在公共高速缓存中的数据处理实例;一接收到此块ID,数据处理实例将此块ID关联或映射到它对于数据块维护的其它块识别数据,并且使用此块ID请求来自公共高速缓存中的数据块。应当注意这里描述的技术不局限于用于存储块识别数据的任何特定的类型的存储器,并且因此这里描述的示例将被认为是说明性的而不是限制性意义的。
[0039]在各种实施例中,各种类型的实例和处理可以用来维护用于由共享相同的计算设备上的公共高速缓存的多种数据处理实例访问的数据块的块识别数据。例如,在一些实施例中块识别数据可以由在计算设备上专用以跟踪用于数据处理实例和公共高速缓存的数据块的实例或其处理维护。在其它实施例中,块识别数据可以被管理公共高速缓存的实例和在公共高速缓中储存数据块的数据处理实例二者维护。在其中多个计算设备上的公共高速缓存被以群集配置的其它实施例中,分布式群集件处理可以用来维护用于可以被存储在以群集配置的公共高速缓存中的任何一个公共高速缓存中的所有数据块的块识别数据。应当注意这里描述的技术不局限于使用特定类型的实例或处理以维护块识别数据,并且因此这里描述的示例将被认为是说明性的而不是限制性意义的。
[0040]示例操作上下文
[0041]这里描述的用于通用高速缓存管理的技术的示例实施例可以对部署在相同的计算设备上的多数据库实例执行。[0042]如这里使用过的,“数据库实例”指代管理数据库的实例。“数据库”指代存储在一个或多个持久存储设备上的数据集合。在各种实施例和实施方式中,包括数据库的数据集合可以被存储在持久存储设备上作为存储各种数据库对象的数据的一个或多个数据文件、存储维护相容的事务处理和恢复所必需的日志数据的一个或多个日志文件、以及存储与数据库相关联的控制和配置数据的一个或多个控制和配置文件。
[0043]在数据库实例的上下文中,数据块是被分配在持久存储器中以存储包括与数据库的一个或多个数据库对象相关联的数据的一个或多个数据行(和/或它的部分)的原子单位(例如,诸如数据结构)。在一些实施例中,由数据库实例处理的全部数据块可以具有相同的固定尺寸;在其它实施例中,由数据库实例处理的数据块可以具有变化的尺寸。在各种实施例中,数据库实例一般地被配置为以不小于数据块的单位写入并且读取易失性存储器中的数据。例如,当数据库实例需要访问特定的数据行或数据行组中的数据时,数据库实例或它的处理确定物理地存储特定数据行或数据行组的数据块,如果这些数据块已经不在高速缓存中,则将这些数据块从持久存储器复制到数据库实例的专用存储器高速缓存中,并且访问被存储在专用存储器高速缓存中的数据块的副本中的特定数据行或数据行组的的数据。数据库实例或它的处理可以使用各种存储管理机制以将任何修改的(同也称为“脏的”)数据块从专用存储器高速缓存刷到持久存储器。
[0044]在各种实施例和实施方式中,存储给定数据库的数据的数据块可以在逻辑上以各种存储空间结构(例如,诸如范围、段、表空间,等等)的形式组织并且可以被物理地分配为原始硬盘块或操作系统(OS)数据文件的部分。例如,数据库(例如,诸如关系或对象关系数据库)的数据可以在逻辑上以包括但是不局限于表、视图、序列、存储的过程、索引、和到其它数据库的链接的数据库对象(有时也称为“模式对象”)来组织。物理上,数据库的数据以数据块被存储在持久存储设备上,其中在各种实施例和实施方式中,这样的数据块可以被物理地作为为原始盘块直接存储在持久存储设备上或可以被存储在存储在持久存储器上的文件中。根据存储在数据行中的数据值的数目和数据类型,特定的数据块可以存储来自单一数据行中的数据值或可以存储来自多个数据行中的数据值,其中多个数据行在逻辑上可以属于相同的数据库对象或多个不同的数据库对象。举例来说,关系表的数据在逻辑上可以被组织在记录中,其中每个记录包括用于存储来自为表配置的对应一个或多个列的数据值的一个或多个字段。物理上,每个数据记录中的数据值可以被作为数据行存储在被存储在诸如硬盘之类的持久存储设备上的文件中的一个或多个数据块中。例如,在以三列名为“ID”、“名”、和“姓”的形式存储雇员数据的关系表中,特定的数据行可以为特定的雇员存储用于雇员ID、名、和姓的值。
[0045]在多租用部署中,相同的数据库可以由被配置为一个或多个计算设备上的群集的多数据库实例访问。在这样的多租用部署中,配置若干(5、10、甚至20)数据库实例以在相同的计算设备上运行是罕见的,其一般地是SMP机器(或主机)。在这样的多租用部署中解决存储器需求的常规方法是管理员将易失性存储器的小部分分配给每个数据库实例的专用的缓冲高速缓存,并且将SMP主机的易失性存储器的其余部分分配给由SMP主机上的OS实例管理的文件缓冲器高速缓存。SMP主机上的OS实例使用文件缓冲器高速缓存以高速缓存来自被存储在由OS实例管理的一个或多个文件系统中而且由数据库实例和运行在SMP主机上的其它处理经由I/O系统调用访问的文件的文件块。[0046]常规方法的主要缺点是OS实例视文件缓冲器高速缓存中的文件块为不透明的数据。例如,当OS实例或它的I/O处理可以存储一些最小限度的元数据以使得它可以对文件缓冲高速缓存中的文件块提供读和写访问时,OS实例或它的I/O处理不知道并不跟踪数据库实例怎样使用文件缓冲器高速缓存中的文件块。相反,OS实例将文件缓冲器高速缓存中的每个文件块与将文件块放置在文件缓冲器高速缓存中的数据库实例处理的OS-处理ID相关联。这有效地防止数据库实例访问已经由不同的数据库实例放入文件缓冲器高速缓存中的文件块。另外,当数据库实例处理消逝时,为校正理由,由文件缓冲器高速缓存中的该处理放置的所有文件块被清除-如果它们是脏的,则OS I/O处理将这些文件块写入到盘,或如果它们是干净的,则仅仅将它们抛到外面。对这一点的理由是OS实例不能确保当处理重新启动时它将被分配相同的处理ID ;因此,为校正理由,OS实例必须从文件缓冲器高速缓存中清除已经由消逝的处理放置在那儿的任何文件块。实际上,这意味着当数据库实例重新启动时,它不会在文件缓冲器高速缓存中找到已经被数据库实例处理放置在那儿的任何文件块。
[0047]为了解决数据库实例的多租用部署的这些及其他问题(例如,诸如存储器超供给问题、有限的可分级性、和受限的可用性),这里描述的技术提供在OS实例以上的层分配并管理计算设备上的公共高速缓存,其中为存储在公共高速缓存中的数据块维护方块识别数据以便提供对由共享公共高速缓存的多数据库实例对数据块的使用的可见性。
[0048]图2是示出了根据一个实施例的示例操作上下文的方框图;计算设备202被通过网络200可通信地连接到存储设备215。存储设备215包括如光或磁盘215A、215B、和215C的一个或多个非易失性存储介质设备。网络200可以是包括被配置以在计算设备和存储设备之间转移磁盘级和/或文件级数据的一个或多个网络基础结构元素(例如,诸如桥、交换机、路由器等等)的存储区网络(SAN)或网络区存储器(NAS)。
[0049]计算设备202是被配置以执行OS实例(图2中未显示)的计算机系统。根据特定的部署,计算设备可以是被配置有诸如处理器(CPU)、存储器、存储控制器、网络接口卡、等等之类的各种硬件元件的单独的机器主机或的它的叶。如在图2中示出的,计算设备202包括易失性存储器204。易失性存储器204可以包括物理存储器、附着于计算设备202的一个或多个快闪存储卡上的闪速存储器,和/或它的组合。
[0050]多数据库实例206被配置以在计算设备202上执行。数据库实例206管理跨网络200存储在存储设备215上的一个或多个数据库。数据库实例206的每一个包括易失性存储器204的块(或部分)和被分配诸如存储器、CPU时间、和/或盘存储器空间之类的计算资源以便执行一个或多个功能的一个或多个处理集。例如,包括在数据库实例206的每一个内的处理集可以包括但不限制于一个或多个数据库写入处理、一个或多个日志写入处理、一个或多个检查点处理、和一个或多个数据库服务器处理。(应当注意,在不同的实施方式中,由数据库写入处理、日志写入处理、检查点处理、和数据库服务器处理执行的功能可以由单一、可能多线程的共同地称为数据库服务器的处理执行。)
[0051]数据库写入处理被配置以将“脏”数据块从数据库实例的专用高速缓存刷到存储由数据库实例管理的数据库的数据的持久存储设备上的数据文件。日志写入处理被配置以将用于维护由数据库实例管理的数据库的一致的事务处理和恢复的重做和/或未做信息写到持久存储设备上的记录文件。检查点处理被配置以将检查点写到记录文件和/或数据文件,其是存储指示在记录检查点之前对数据块做出的全部变化已经被写到持久存储设备的系统变化数目(SCN)的数据结构。
[0052]数据库服务器处理(或数据库服务器)被分配诸如存储器和CPU时间之类的计算资源以便执行诸如数据管理功能(包括但不限于,从持久存储设备读取数据块到数据库实例的专用高速缓存、由客户端和应用处理请求和查询以执行读取、插入、删除、和修改存储在数据库实例的专用高速缓存中的数据块中的数据的各种操作以及事务)、以及数据库管理功能(包括但不限于,处理查询和请求以建立数据库和表、为数据库和表分配盘空间,和/或建立和维护用户登录信息、角色信息、和安全策略信息)之类的一个或多个功能。
[0053]如在图2中示出的,数据库实例206A为它的专用的私有高速缓存210A分配易失性存储器204的一部分。数据库实例206A包括处理208A,诸如,例如一个或多个数据库写入处理、一个或多个日志写入处理、一个或多个检查点处理、和一个或多个数据库服务器处理。一个或多个处理208A维护分配给数据库实例206A的易失性存储器中的锁结构212A,其中对于存储在私有高速缓存210A中的每个数据块,锁结构212A包括用于控制访问高速缓存210A中的数据块的锁结构。
[0054]类似地,数据库实例206B为它的专用的私有高速缓存210B分配易失性存储器204的一部分。数据库实例206B包括处理208B,诸如,例如数据库写入处理、日志写入处理、检查点处理、以及数据库服务器处理。一个或多个处理208B维护分配给数据库实例206B的易失性存储器中的锁结构212B,其中对于存储在私有高速缓存210B中的每个数据块,锁结构212B包括用于控制访问高速缓存210B中的数据块的锁结构。
[0055]根据这里描述的用于通用高速缓存管理的技术,易失性存储器204的一部分被分配给公共高速缓存220。易失性存储器204的一部分也被分配给块元数据222,其为存储在公共高速缓存220中的数据块存储块识别数据。一个或多个处理224被分配存储器及其他计算资源(例如CPU时间)以管理公共高速缓存220和块元数据222。如在图2中示出的,单一实例230可以从存储在计算机可读存储介质中的软件组件中实例化,当执行时软件组件可以分配存储器到及配置公共高速缓存220、块元数据222、和处理224。然而应当注意,在不同的实施例和实施方式中,公共高速缓存和块元数据可以由为每个执行不同的功能的不同实例初始化的一个或多个处理管理。因此,在图2的操作上下文中的单一实例230的使用将被认为是说明性的而不是限制性意义的。
[0056]在图2的操作上下文中,实例230可以是除为被配置以在计算设备202上执行的数据库实例206执行存储量管理之外还管理公共高速缓存230的存储管理实例。对存储量管理,当数据库实例想要建立新数据文件以存储用于给定数据库的数据时,数据库实例从实例230请求在一组盘上建立数据文件。从实例230的观点中,数据文件是被分配给为数据库存储数据的数据块的逻辑地址空间。实例230将数据文件的逻辑地址空间映射到盘群集中不同盘上的物理存储区域-例如,数据文件可以具有映射到100个IMB的块的总共100MB的存储空间,其中每个块存储在盘群集的特定盘上。在以这样的方式建立和映射数据文件之后,实例230将范围映射返回到数据库实例,其中范围映射描述从数据文件的逻辑地址空间映射到盘群集中的盘上的物理存储区域。因此,当数据库实例想要持久地在磁盘上存储数据块时,数据库实例确定在数据文件内的数据块的逻辑地址,使用范围映射将此逻辑地址转换到对应的盘上的物理盘地址(例如,诸如“磁盘I”、偏移500),并且将数据块写入到由物理盘地址指向的盘上的位置。
[0057]根据这里描述的技术,实例230或它的处理可以通过将分配给公共高速缓存的易失性存储器组织成映射到一范围的存储器地址的存储器群来管理公共高速缓存220,其中来自数据库实例206的数据块在那个范围内以不同的偏移量存储。因为存储在公共高速缓存220中的数据块总是干净的,所以实例230可以维护公共高速缓存220而不持久地将数据块从公共高速缓存写入到存储设备215并且当数据块被存储在公共高速缓存中时不允许对数据块中的数据做出任何修改。此外,实例230可以使用任何已知的高速缓存管理机制(例如,如LRU、MRU、LFU、等等)来当数据库实例需要公共高速缓存中的空间存储数据块时确定并且丢弃(或翻出)来自公共高速缓存230的数据块。
[0058]在操作中,数据库实例206A在它的私有高速缓存210A中存储用于由数据库实例管理的数据库的数据块的副本(图2中未示出)。(应当注意在图2中,高速缓存210A和210B中的阴影区域表示自这些数据块最后一次写到存储设备215以来在这些高速缓存中已经修改的“脏”数据块。)当数据库实例206A需要在高速缓存210A中释放空间时,根据这里描述的技术,数据库实例或其处理首先识别能够从高速缓存210A上去掉的干净的数据块,其中自干净的数据块被最后写到存储设备215以来在高速缓存210A中没有修改干净的数据块。数据库实例206A或其处理可以使用任何合适的高速缓存管理机制以选择可以从高速缓存上去掉的干净的数据块;然而应当注意,根据这里描述的技术不选择脏数据块来消除。如图2所示,可以以此方式选择干净的数据块45和37—用于从高速缓存210A中消除。(应当注意在图2中,块标识符“45”、“37”、“56”、“28”、等等,仅仅用于实例目的;在实际的实施方式中,可以以任何合适的方式识别数据块-例如,诸如利用文件ID和块ID的组合或文件偏移)。
[0059]在选择用于消除的例如诸如数据块45的数据块之后,数据库实例206A或其处理从与此数据块对应的锁结构212A中检索用于此数据块的锁对应物(incarnation)数目。用于数据块的锁对应物数目是每次修改数据块递增的值;因此,用于数据块的锁对应物数目有效地指示与锁对应物数目相关联的数据块的副本是否是最近当前的。在检索用于选择的数据块45的锁对应物数目之后,数据库实例206A将此数据块和它的锁对应物数目发送到实例230。实例230或其处理将数据块45写到公共高速缓存220中。作为写操作的一部分,实例230或其处理也将用于数据块45的锁对应物数目记录到与那些数据块相关联的块元数据222中。在成功地提交用于数据块45的写操作时,实例230或其处理将用于数据块45的公共高速缓存ID返回到数据库实例206A。用于数据块45的公共高速缓存ID在公共高速缓存220之内唯一地识别数据块45和其记录在块元数据222中的锁对应物数目。在接收用于数据块45的公共高速缓存ID时,数据库实例206A或其处理将公共高速缓存ID记录到与数据块45相关联的锁结构212A中然后从私有高速缓存210A中消除数据块45。应当注意数据库实例206A在存储器中存储用于数据块45的锁结构212A,即使数据块45已经从私有高速缓存2IOA上去掉。
[0060]在稍后时间点处,当数据库实例206A需要访问数据块45中的数据时,数据库实例或其处理首先检查以确定数据块是否存储在公共高速缓存220中。为此,数据库实例206A或其处理从与数据块45相关联的锁结构212A中检索公共高速缓存ID和锁对应物数目,并且将检索的公共高速缓存ID和锁对应物数目发送到实例230。实例230或其处理使用公共高速缓存ID和锁对应物数目来确定与这些值相关联的数据块是否存储在公共高速缓存220中。如果确定公共高速缓存存储与接收的常见高速缓存ID和接收的锁对应物数目(或较高)相关联的数据块,则实例230或其处理从公共高速缓存220中检索此数据块并且将它返回到数据库实例206A。如果确定公共高速缓存220不存储与接收的公共高速缓存ID相关联的数据块,或如果接收的锁对应物数目指示存储在公共高速缓存220中的数据块是旧的,则实例230或其处理将高速缓存未中指示返回到数据库实例206A并且从公共高速缓存220中丢弃与接收的公共高速缓存ID和旧的锁对应物数目相关联的数据块。在从实例230中接收到高速缓存未中指示时,数据库实例206A或其处理继续从存储设备215中读取请求的数据块(数据块)。
[0061]根据这里描述的技术,全部数据库实例206以如上所述相同的方式处理存储在它们的对应私有高速缓存中的数据块。例如,数据库实例206A以和它处理数据块45相同的方式处理数据块37。在另一个示例中,数据库实例206B以和数据库实例206A处理数据块45相同的方式处理数据块56和28。这保证了多数据库实例可以使用公共高速缓存220作为存储干净的数据块的共享存储器池。此外,这允许数据库实例从公共高速缓存220中检索由不同的数据库实例存储在那儿的数据块。例如,假如数据库实例206A和206B被配置为管理相同的数据库。在此操作情况中,当数据库实例206A需要访问数据块56中的数据时,数据库实例206A或其处理可以从公共高速缓存220中检索数据块56而不是从存储设备215中检索此数据块。
[0062]这里描述的技术的不同实施例可以使用不同类型的信息以保证数据块的版本或副本将不被从公共高速缓存返回。如到现在为止描述的,数据库实例在从数据库实例的私有高速缓存上去掉数据块之后在用于数据块的锁结构中存储锁对应物数目,其中锁对应物数目通常随着数据块刷到盘。这保证了如果不同的数据库实例(管理相同的或不同的计算设备上的相同的数据库)从持久存储设备中检索相同的数据块并且修改它,则不同的(例如,较高的)锁对应物数目将与数据块的最近当前的副本相关联,从而防止公共高速缓存(或管理它的处理)将存储在公共高速缓存中的数据块的旧的副本返回到第一数据库实例。
[0063]在一些实施例中,除识别已经被成功地提交到公共高速缓存的数据块的公共高速缓存ID之外,管理公共高速缓存的处理可以将与数据块相关联的系统变化数目(SCN)返回到数据库实例。用于数据库的SCN响应于检查点递增并且被记录在持久存储器中,并且指示在记录检查点之前对数据库的数据块做出的全部变化已经写到持久存储器。因为用于给定数据库的SCN的序列对管理数据库的数据库实例是已知的,因此通过将存储在公共高速缓存中的数据块的副本与用于数据库的当前SCN关联,管理公共高速缓存的处理保证数据库实例不会被发送来自公共高速缓存的数据块的旧的副本。
[0064]以上述方式,这里描述的技术解决出现在相同的计算设备或主机上的数据库实例的多租用部署的上下文中的各种问题(例如,诸如存储器超供给问题、有限的可分级性、和受限可用性,等等)。具体地,这里描述的技术允许管理员实例化或配置在具有仅仅足够大以容纳最大预期数目的脏数据块的私有缓冲器高速缓存的计算设备上的每个数据库实例,其避免了当多数据库实例被部署在相同的计算设备上时超供给易失性存储器的问题。计算设备上的其余的易失性存储器(如果计算设备是SMP主机则很可能是大块)被分配给公共高速缓存。以这样的方式,数据库实例在它的私有高速缓存中将具有足够的空间用于它自己的脏数据块,同时它的干净的数据块将被存储在公共高速缓存中。此技术效果将是争论中的公共资源(计算设备上的易失性存储器)被有效地并且动态地在计算设备上执行的全部数据库实例之间分享。如果特定的数据库实例变得更活动并且经历更大的工作量,则此特定的数据库实例将耗费更多的公共高速缓存而不对另一个数据库实例引起任何不利的可用性影响-其不需要由管理员负责,但是当特定的数据库实例在经历更大的工作量时最多将需要在一定时段从持久存储器中取出数据块。另外,通过允许多数据库实例基于工作量动态地使用计算设备的易失性存储器的变化的块,这里描述的技术允许数据库实例被部署为真正可分级的群集。
[0065]使用情况:将多个公共高速缓存集成为群集
[0066]在一些操作上下文中,这里描述的用于通用高速缓存管理的技术提供将被分配在多个计算设备上的多个公共高速缓存集成为群集。在此类操作上下文的示例实施例中,响应于接收对数据块的请求并且未能在它的公共高速缓存中找到数据块,管理公共高速缓存的处理确定在群集中的另一个公共高速缓存是否存储数据块,并且如果是这样的话,请求来自另一个公共高速缓存中的数据块。此技术效果将是可以是很大规模的公共高速缓存群集,其大大地增加在任何给定时间处被配置以在群集的任何给定的公共高速缓存中存储数据块的任何给定数据库实例将能在包括群集的至少一个公共高速缓存中找到它需要的数据块的机会,从而排除需要执行I/o操作以取得来自持久存储器中的此数据块。
[0067]图3是示出了根据此类操作上下文的示例实施例的方框图;计算设备302被通过网络(未在图3中示出)通信地连接。计算设备302的每一个可以是被配置有诸如处理器(CPU)、存储器、存储控制器、网络接口卡等等之类的各种硬件元件的单独的机器主机或它的叶。
[0068]根据这里描述的技术,计算设备302的每一个包括一个或多个数据库实例和公共高速缓存实例,其中公共高速缓存实例包括分配给公共高速缓存的一部分易失性存储器和一组被配置以管理公共高速缓存的一个或多个处理。例如,计算设备302A包括数据库实例304A和公共高速缓存实例306A,并且计算设备302B包括数据库实例304B和公共高速缓存实例306B。
[0069]在不同的计算设备上执行的至少一些数据库实例管理相同的数据库并且被通过SAN或NAS网络通信地连接到存储包括此数据库的数据的存储设备。例如,如在图3中示出的,数据库实例304A-2 (在计算设备304A上)和数据库实例304B-1 (在计算设备304B上)管理相同的数据库“DB2”。包括数据库“DB2”的数据被跨网络300存储在包括磁盘310A、310B、和310C的存储设备310上。应当注意在图3中,诸如数据库实例304A-1 (在计算设备304A上)和数据库实例304B-2 (在计算设备304B上)之类的其它数据库实例可以被配置为管理它的数据也被跨网络300存储在存储设备310上或在被连接到网络300的其它存储设备上的数据库。
[0070]根据这里描述的技术,由计算设备302上的公共高速缓存实例管理的公共高速缓存被组织以在群集中操作。在群集中的公共高速缓存实例的每一个包括被配置以从群集中的其它公共高速缓存实例中请求数据块并且响应于从那里的请求将数据块发送到其它公共高速缓存实例的一个或多个处理。
[0071]作为操作的示例,考虑一种情况,计算设备304A上的数据库实例304A-2需要将特定的数据块(例如,诸如从数据文件2中的数据块43)检索到它的私有高速缓存中。数据库实例304A-2将对此数据块的请求发送到它的局部公共高速缓存实例306A。公共高速缓存实例306A搜索分配在计算设备302A上的公共高速缓存并且确定请求的数据块(例如,从数据文件2中的数据块43)没有存储在其中。代替将高速缓存未中指示返回到数据库实例304A-2,公共高速缓存实例306A将对此数据块的请求发送到群集中的另一个公共高速缓存实例。例如,在一些实施方式中,公共高速缓存实例306A可以将广播请求发送到运行管理与数据库实例304A-2相同的数据库(“DB2”)的数据库实例的全部计算设备;在其它实施方式中,公共高速缓存实例306A可以查询群集范围的数据目录以确定群集中的哪个公共高速缓存实例存储请求的数据块。假如计算设备302B上的公共高速缓存实例306B在它的公共高速缓存中存储请求的数据块(例如,来自数据文件2中的数据块43),因为数据库实例304B-1 (其管理相同的数据库“DB2”)已经将它放置在那里。响应于来自于公共高速缓存实例306A的请求,公共高速缓存实例306B从它的公共高速缓存中检索请求的数据块并且将数据块发送到公共高速缓存实例306A。响应于接收请求的数据块,公共高速缓存实例306A可以执行一些有效性检查以确定接收的数据块是否是数据块的最近的副本,并且如果是这样的话,可以将数据块返回到请求它的数据库实例304A-2。(应当注意基于特定的实施方式,公共高速缓存306A可以或可以不将接收的数据块存储在它的公共高速缓存中;不存储的一个理由可以基于数据库实例不久将修改数据块的预期,从而排除需要在公共高速缓存中存储不久将脏的数据块。)以这样的方式,数据库实例304A-2成功获得它需要的数据块(例如,从数据文件2中的数据块43)而不执行任何I/O操作以从存储设备310中检索数据块。
[0072]各种实施例可以使用适合于在配置在群集中的多个公共高速缓存实例之间转移数据块的各种数据传输机制。基于特定的部署特性,可以通过运行公共高速缓存实例的计算设备连接到的一个或多个网络、通过计算设备之间的点到点的双向链路,和/或通过允许处理间通信的任何其它适当的连接性样式部署此类数据传输机制。
[0073]在一些实施例中,在群集中的公共高速缓存实例可以维护指示数据块被存储在公共高速缓存中的全局数据目录。例如,每一公共高速缓存实例可以包括被派有在分布的全局目录中维护当前映射的任务的一个或多个处理,所述当前映射将数据块标识符映射到当前存储由这些数据块标识符识别的数据块的公共高速缓存实例。另外,在这些实施例中公共高速缓存实例可以使用将存储在公共高速缓存中的每个数据块映射到独特的群集范围的ID的全局映射,其中公共高速缓存实例可以将任何新分配的独特的群集范围的ID向彼此传播并且使用独特的群集范围的ID从彼此请求数据块。
[0074]在一些部署中,根据这里描述的技术的公共高速缓存群集的使用比通过使用常规方法可能的可用性提供更好的可用性。例如,计算设备可以被指定为用于例如,数据库“DB1”的给定数据库的主要主机,并且可以被指定为用于例如数据库“DB2”、“DB3”、等等的一个或多个其它数据库的次要主机。在此计算设备上,管理数据库“DB1”的数据库实例可以被分配计算设备的易失性存储器的较大的块用于它的私有高速缓存,同时管理其它数据库(例如,数据库“DB2”、“DB3”、等等)的数据库实例可以被分配易失性存储器的较小的块用于它们的私有高速缓存。这类部署的技术效果将是,对于每个数据库,主要主机上的数据库实例将具有较大的私有高速缓存来存储来自于那些数据库的数据块,同时一个或多个次要主机上的一个或多个数据库实例将具有较小的私有高速缓存来存储来自于那些数据库的数据块。由于根据这里描述的技术,主要主机上的公共高速缓存将存储来自于数据库的干净的数据块并且由于数据库的主要主机和次要主机上的公共高速缓存集成到群集,因此数据库的可用性被增大,因为当主要主机上的数据库实例故障转移到次要主机上的数据库实例时,次要主机上的公共高速缓存实例可以从主要主机上的公共高速缓存中取得用于数据库的干净的数据块而不需要执行代价高的I/o操作并且不需要从次要主机上运行的其它实例中再提供存储器。
[0075]通过提供将多个计算设备上的多个公共高速缓存集成到群集,这里描述的技术允许实现大规模的数据库实例的线性可分级性。此外,这里描述的技术允许通过利用一种部署方案提供更好可用性的更灵活的部署,在该部署方案中,被指定为用于给定数据库的主要主机的计算设备上的数据库实例与被指定为用于给定数据库的次要主机的一个或多个其它计算设备上的一个或多个其它数据库实例相比较被不同地配置。
[0076]使用情况:在实例重新启动时热身(warm up)私有高速缓存
[0077]在一些操作上下文中,这里描述的用于通用高速缓存管理的技术提供当数据库实例重新启动时数据库实例的私有高速缓存的高效热身。
[0078]根据这里描述的技术,计算设备上的公共高速缓存被配置为在公共高速缓存中将这些数据块放置到公共高速缓存中的数据库实例的重新启动来存储数据块。管理公共高速缓存的实例或其处理可以跨数据库实例重新启动保持数据块,因为用于数据块的识别块数据也维护在公共高速缓存中,由此提供更高的数据库实例对块使用的可见性。因此,当数据库实例重新启动时,数据库实例可以从公共高速缓存向它的专用高速缓存检索预先放在公共高速缓存中的干净的和当前数据块。此技术效果将是与如果重新启动的数据库实例以传统的方式(其包括只有当由客户端或应用请求访问数据块中的数据时才从持久存储器检索数据块)填充它的私有高速缓存的情况相比,重新启动的数据库实例将更快速地达到正常操作状态,因为重新启动的数据库实例不需要执行计算代价高的I/o操作以从持久存储器中取出数据块。
[0079]例如,在一些实施例中管理公共高速缓存的实例或其处理对于存储在公共高速缓存中的每个数据块维护锁对应物数目和/或由使用块的数据库实例与那些数据块相关联的SCN。由于锁对应物数目和/或SCN是存储在持久存储器(与运行时间属性对照,诸如OS处理ID,其每当数据库实例重新启动时就改变)上的持久属性,因此管理公共高速缓存的实例具有对由数据库实例对数据块的使用的更大的可见性。因此,当数据库实例重新启动时,数据库实例了解期望什么锁对应物数目和/或SCN,并且因此数据库实例可以从具有期望的锁对应物数目和/或SCN的公共高速缓存中检索那些数据块,由此保证在重新启动时数据块的“到期”副本不被读取到数据库实例的私有高速缓存。
[0080]此外,通过从公共高速缓存中读取数据块来重新启动数据库实例以热身它的私有高速缓存的能力对减少当群集中的数据库实例需要经历软件升级时引起的停工期是非常有用的。在典型的群集部署中,软件升级是艰难并耗时的任务。群集的典型的软件升级包括跨群集中的所有节点升级数据库实例和/或处理和其服务和重新启动这些实例和/或处理和其服务。对于其中许多数据库实例的私有高速缓存共同地加起来是大尺寸的分布式系统来说,这意味着在软件升级之后此大尺寸的共同高速缓存需要被热身以便在短时间提供数据库实例群集的完全利用率。明显地,通过利用传统的方式增加私有高速缓存,群集中的每个数据库实例需要在被能够承担它的期望的满工作量之前单独地热身它的私有高速缓存。然而,根据这里描述的技术,由软件升级引起的停工期短得多,因为群集中的每个数据库实例可以通过从它的局部公共高速缓存中(和/或从公共高速缓存群集中,如果在分布式系统中的公共高速缓存被配置为群集)读取数据块来热身它的私有高速缓存,因为局部超高速缓存(和/或公共高速缓存群集)很可能存储由每个单独的数据库实例呈现它的满工作量所需要的数据块中的大多数。
[0081]硬件概述
[0082]根据一个实施例,由一个或多个专用的计算设备实施这里描述的技术。专用的计算设备可以被硬布线以执行技术,或可以包括被持久地编程以执行技术的诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)之类的数字电子设备,或可以包括被编程以依据固件、存储器、其它存储器中的程序指令执行技术的一个或多个通用的硬件处理器,或组合。此类专用的计算设备也可以组合定制硬线逻辑、ASIC、或具有定制编程以实现技术的FPGA。专用的计算设备可以是SMP机器、服务器计算机系统、桌上型计算机或便携式计算机系统、网络基础设施设备、或合并硬线和/或程序逻辑以实施技术的任何其它设备(例如,诸如叶)。
[0083]例如,图4是示出了在其上可以执行这里描述的技术的实施例的计算机系统400的方框图。计算机系统400包括总线402或用于通信信息的其它通信机制、和与总线402耦接的用于处理信息的硬件处理器404。硬件处理器404可以是例如通用的微处理器。
[0084]计算机系统400也包括耦接到总线402的用于存储由处理器404执行的信息和指令的主存储器406,诸如随机存取存储器(RAM)或其它动态存储设备(例如,诸如快闪存储卡)。主存储器406也可以在执行由处理器404执行的指令期间用于存储临时变量或其它中间信息。当存储在处理器404可访问的非瞬时的存储介质中时,此类指令将计算机系统400提交到被定制以执行指令中指定的操作的专用机器。
[0085]计算机系统400还包括只读存储器(ROM) 408或耦接到总线402的用于存储为处理器404的静态信息和指令的其它静态存储设备。诸如磁盘或光盘之类的存储设备410被提供并且耦接到总线402以用于存储信息和指令。
[0086]计算机系统400可以经由总线402被耦接到用于向计算机用户显示信息的诸如阴极射线管(CRT)或液晶显示器(IXD)之类的显示器412。包括字母数字的和其它键的输入设备414被耦接到总线402以用于将信息和命令选择通信到处理器404。用户输入设备的另一个类型是用于通信方向信息和命令选择到处理器404并且用于控制显示器412上的光标移动的光标控制416,诸如鼠标、轨迹球、或光标方向键。此输入设备通常具有两个轴的自由度,第一轴(例如,X)和第二轴(例如,y),其允许设备在平面中指定位置。
[0087]计算机系统400可以通过利用定制的硬线逻辑、一个或多个ASIC或FPGA、与计算机系统结合以引起或编程计算机系统400成为专用机器的固件和/或程序逻辑来实施里描述的用于这通用高速缓存管理的技术。根据一个实施例,响应于执行包含在主存储器406中的一个或多个指令的一个或多个序列的处理器404由计算机系统400执行这里的技术。此类指令可以被从诸如存储设备410之类的另一个存储介质读取到主存储器406。包含在主存储器406中的指令序列的运行使得处理器404执行这里描述的处理步骤。在可替换实施例中,可以代替软件指令或与软件指令结合使用硬线电路。
[0088]如这里使用的术语“存储介质”是指存储引起机器以特定的方式操作的数据和/或指令的任何非瞬时的介质。此类存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备410。易失性介质包括动态存储器,诸如主存储器406、闪速存储器,和/或它的组合。存储介质的常见形式包括,例如软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其它磁数据存储介质、CD-ROM、任何其它光数据存储介质、带有孔模式的任何物理介质、RAM、PROM、和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒。
[0089]存储介质与传输介质不同但是可以被结合使用。传输介质参与传送存储介质之间的信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线402的布线。传输介质也可以采取声波或光波的形式,诸如在放射波和红外数据通信期间生成的那些。
[0090]在将一个或多个指令的一个或多个序列传送到用于运行的处理器404中可以涉及各种形式的介质。例如,最初可以在远程计算机的磁盘或固态驱动器上传送指令。远程计算机可以将指令加载到它的动态存储器中并且利用调制解调器通过电话线发送指令。计算机系统400本地的调制解调器可以接收关于电话线的数据并且使用红外发送器将数据转换到红外信号。红外检测器可以接收在红外信号中携带的数据并且适当的电路可以将数据放置在总线402上。总线402将数据传输到主存储器406,处理器404从主存储器406检索数据并执行指令。由主存储器406接收到的指令可以可选地在由处理器404运行之前和之后被存储在存储设备410上。
[0091]计算机系统400也包括耦接到总线402的通信接口 418。通信接口 418提供耦接到连接到本地网络422的网络链路420的双向数据通信。例如通信接口 418可以是综合服务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器、或提供到对应类型的电话线的数据通信连接的调制解调器。如另一个示例,通信接口 418可以是提供到兼容的LAN的数据通信连接的局域网(LAN)卡。也可以执行无线链路。在任何此类实施方式中,通信接口 418发送并接收传送表示各种类型的信息的数字数据流的电的、电磁的或光信号。
[0092]网络链路420通常通过一个或多个网络将数据通信提供到其它数据设备。例如,网络链路420可以提供通过本地网络422到主机计算机424或到由互联网服务供应商(ISP) 426操作的数据装置的连接。ISP426又通过现在通常被称为“互联网”428的世界范围的分组数据通信网络提供数据通信业务。本地网络422和互联网428 二者都使用传送数字数据流的电的、电磁的或光的信号。通过各种网络的信号和网络链路420上的并且通过往返于计算机系统400的传送数字数据的通信接口 418的信号是传输介质的示例形式。
[0093]计算机系统400可以通过网络、网络链路420和通信接口 418发送消息和接收包括程序代码的数据。在互联网示例中,服务器430可以通过互联网428、ISP426、本地网络422和通信接口 418发送用于应用程序的请求代码。
[0094]接收的代码可以在它被接收时由处理器404执行,和/或存储在存储设备410中或其它非易失性存储器中以用于以后运行。
[0095]在上述说明中,已经参考可以从实施方式到实施方式变化的许多细节描述了本发明的实施例。因此,说明书和附图应当被认为是说明性的,而不是限制的意义上的。在包括任何随后校正的此权利要求书发出的特定形式中,本发明的范围的唯一和专用的指示符、以及由 申请人:预期的本发明的范围是从此申请发出的权利要求书的文字和等效范围。
【权利要求】
1.一种方法,包括: 在计算设备的易失性存储器中将第一高速缓存专有地分配到两个或更多个数据处理实例的第一实例,其中第一高速缓存被配置为存储持久地存储在一个或多个存储设备上的第一组数据块的副本; 在计算设备的易失性存储器中将第二高速缓存专有地分配到两个或更多个数据处理实例的第二实例,其中第二高速缓存被配置为存储持久地存储在一个或多个存储设备上的第二组数据块的副本; 在计算设备的易失性存储器中分配公共高速缓存; 第一实例执行以下步骤: 在第一高速缓存中识别自从第一数据块被最后写到一个或多个存储设备以来没有改变的第一数据块; 使得第一数据块被存储在公共高速缓存中; 从第一高速缓存中消除第一数据块; 第二实例执行以下步骤: 在第二高速缓存中识别自从第二数据块被最后写到一个或多个存储设备以来而没有改变的第二数据块; 使得第二数据块被存储在公共高速缓存中; 从第二高速缓存中消除第二数据块; 在公共高速缓存中维护包括第一数据块和第二数据块的数据块而不将数据块持久地写到一个或多个存储设备; 其中所述方法由所述计算设备执行。
2.如权利要求1所述的方法,其中两个或更多个数据处理实例是管理存储在一个或多个存储设备上的一个或多个数据库的两个或更多个数据库实例。
3.如权利要求1或2所述的方法,其中分配公共高速缓存包括以下中的一个或多个: 在计算设备的物理存储器中分配公共高速缓存; 在连接到计算设备的闪速存储器上分配公共高速缓存;以及 在计算设备的物理存储器上分配公共高速缓存的第一部分并且在连接到计算设备的闪速存储器上分配公共高速缓存的第二部分。
4.如权利要求1-3中的任何一个所述的方法,其中维护公共高速缓存中的数据块包括维护用于存储在公共高速缓存中的数据块的每一个的块识别数据。
5.如权利要求1-4中的任何一个所述的方法,其中维护公共高速缓存中的数据块包括: 跨第一实例的重新启动维护公共高速缓存中的第一数据块;以及 跨第二实例的重新启动维护公共高速缓存中的第二数据块。
6.如权利要求1-5中的任何一个所述的方法,还包括: 响应于对来自于第一数据块的数据的第一请求,第一实例从公共高速缓存中而不是从一个或多个存储设备中检索第一数据块,并且将第一数据块存储回到第一高速缓存; 响应于对来自于第二数据块的数据的第二请求,第二实例从公共高速缓存中而不是从一个或多个存储设备中检索第二数据块,并且将第二数据块存储回到第二高速缓存。
7.如权利要求1-5中的任何一个所述的方法,还包括: 响应于对来自于第二数据块的数据的请求,第一实例从公共高速缓存中而不是从一个或多个存储设备中检索第二数据块,并且将第二数据块存储到第一高速缓存中。
8.如权利要求1-5中的任何一个所述的方法,还包括: 第一实例将对第三数据块的请求发送到管理公共高速缓存的实例; 所述管理公共高速缓存的实例执行以下步骤: 确定第三数据块没有存储在公共高速缓存中; 从在不同的计算设备上分配的不同的公共高速缓存中检索第三数据块;以及 将第三数据块返回到第一实例。
9.如权利要求1-5中的任何一个所述的方法,还包括: 第一实例从公共高速缓存中请求第一数据块; 确定第一数据块不再存储在公共高速缓存中;以及 从一个或多个存储设备中检索第一数据块,其中检索第一数据块包括以下中的一个: 第一实例从一个或多个存储设备中检索第一数据块;或 管理公共高速缓存的实例从一个或多个存储设备中检索第一数据块并且将第一数据块返回到第一实例。`
10.如权利要求1-5中的任何一个所述的方法,还包括: 在第一实例重新启动之后,第一实例通过从公共高速缓存中而不是从一个或多个存储设备中检索至少第一数据块并且将第一数据块存储回到第一高速缓存中,来热身第一高速缓存;以及 在第二实例重新启动之后,第二实例通过从公共高速缓存中而不是从一个或多个存储设备中检索至少第二数据块并且将第二数据块存储回到第二高速缓存中,来热身第二高速缓存。
11.一种方法,包括: 在计算设备的易失性存储器中将多个高速缓存分配到多个数据库实例,其中多个高速缓存的每一个被专有地分配给多个数据库实例中的单独一个; 在计算设备的易失性存储器中分配由多个数据库实例共享的公共高速缓存; 多个数据库实例中的每个特定数据库实例执行以下步骤: 识别多个高速缓存中的专有地分配给所述特定数据库实例的特定高速缓存中的特定数据块,其中自从所述特定数据块被最后持久地写到一个或多个存储设备中以来,所述特定数据块在特定高速缓存中没有被改变; 使得所述特定数据块被存储在公共高速缓存中; 从所述特定高速缓存中消除所述特定数据块; 在公共高速缓存中维护包括所述特定数据块的数据块而不将数据块持久地写到一个或多个存储设备; 其中所述方法由计算设备执行。
12.如权利要求11所述的方法,其中: 所述特定数据库实例使得所述特定数据块被存储在公共高速缓存中包括以下中的一个:所述特定数据库实例在公共高速缓存中存储所述特定数据块;或 所述特定数据库实例将所述特定数据块发送到管理公共高速缓存的实例。
13.如权利要求11所述的方法,其中: 所述特定数据库实例使得所述特定数据块被存储在公共高速缓存中包括将所述特定数据块发送到管理公共高速缓存的实例;以及 所述管理公共高速缓存的实例执行以下步骤: 在公共高速缓存中存储所述特定数据块; 将特定标识符分配到所述特定数据块,其中所述特定标识符唯一地识别公共高速缓存中的所述特定数据块; 将所述特定标识符返回到所述特定数据库实例。
14.如权利要求13所述的方法,还包括:所述特定数据库实例在与所述特定数据块相关联的特定锁结构中存储所述特定标识符。
15.如权利要求14所述的方法,还包括: 所述特定数据库实例从公共高速缓存中检索所述特定数据块并且将所述特定数据块存储回到所述特定高速缓存,其中检索所述特定数据块包括将所述特定标识符发送到所述管理公共高速缓存的实例。
16.一种计算机程序,包括当由一个或多个处理器执行时使得执行如前述权利要求中的任何一个所述的方法的指令。
【文档编号】G06F17/30GK103493029SQ201280020216
【公开日】2014年1月1日 申请日期:2012年2月24日 优先权日:2011年2月28日
【发明者】P·V·巴盖尔, R·龙 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1