在列存储中的插入和点查询操作的有效性能的制作方法

文档序号:13041844阅读:153来源:国知局
本发明的实施例涉及在列存储中的有效的插入和点查询操作,特别是,基于跟踪数据对象的子集的访问的级别,来跨越两种或多种存储器类型来动态地移动分层(hierarchical)数据对象。
背景技术
::对数据库或表数据(tableddata)中的实时数据进行商务智能(bi)查询存在越来越多的趋势。传统上,bi系统和在线事务处理(oltp)系统之间存在严格的分离。对于运营商务智能、以及对于将在相同数据库上被执行的业务和分析而言,市场压力越来越大。对于bi,趋势是在按列为主(column-major)布局中布置数据。这提供了较好的查询性能,较好的缓冲池利用率和某些较好的压缩。传统上,oltp数据以按行为主(row-major)布局来布置。但即使oltp工作负载主要是由点查询支配,由于较好的缓冲池利用率和压缩,它们受益于按列为主布局;按列为主可能导致盘上的oltp工作负载成为存储器中(in-memory)的oltp工作负载。技术实现要素:本发明的实施例涉及基于跟踪数据对象集的访问的级别,跨越两个或更多个类型的存储器来动态地移动分层数据对象。一个实施例包括由对象层级(hierarchy)处理器逻辑地组织第一层级中的数据对象的方法。第一层级中的数据对象的一部分逻辑地包括其他数据对象的分组。对象层级处理器跨越第二层级中的两个或更多个类型的存储器来物理地组织数据对象。第二层级中的数据对象的另一部分物理地包括其他数据对象的分组。跨越两个或更多个类型的存储器,动态地移动第二层级中的数据对象的分组。使用数据结构跟踪数据对象的访问级别,数据结构将第一层级中的数据对象的分组映射到元数据信息,元数据信息包括在数据对象的每个分组中的数据对象的组合的访问频率以及对数据对象的访问者的当前数量。参考以下描述,所附权利要求和附图将会理解本发明的这些和其他特征,方面和优点。附图说明图1描绘了根据一个实施例的云计算节点;图2描绘了根据一个实施例的云计算环境;图3描绘了根据一个实施例的一组抽象模型层;图4是示出根据一个实施例的基于跟踪数据对象的子集的访问的级别来跨越两种或多种存储器类型,动态地移动分层数据对象的系统的框图;图5示出根据一个实施例的访问记录、更新访问元数据和加载页面的过程;图6示出了根据一个实施例的用于将元组序列号(tsn)映射到页面以用于查询操作的过程;图7示出了根据一个实施例的用于将数据对象插入到页面中并初始化超区(superslot)中的元数据的过程;图8示出了根据一个实施例的用于将tsn映射到页面用于插入操作的过程;以及图9是根据一个实施例的基于跟踪数据对象的子集的访问的级别来跨越两种或多种存储器类型动态地移动分层数据对象的系统的框图。具体实施方式已经为了说明的目的而呈现了本发明的各种实施例的描述,但并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理、市场中发现的技术的实际应用或技术改进,或使本领域其他普通技术人员能够理解本文公开的实施例。首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其他类型的计算环境而实现。云计算是一种服务交付模式,用于支持对共享的可配置计算资源进行方便、按需的网络访问,该可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机(vm)和服务)。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。特征包括:按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。广泛的网络接入:计算能力可以通过标准机制在网络上获取并访问,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理pda)的使用。资源池:提供者的计算资源被归入资源池,并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的物理资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户账号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。服务模型如下:软件即服务(saas):向消费者提供的能力是使用提供者在云基础架构上运行的应用的能力。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。平台即服务(paas):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用的能力,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。基础架构即服务(iaas):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源的能力。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。部署模型如下:私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。共同体云:云基础架构被若干组织共享并支持具有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由多个组织或第三方管理,并且可以存在于该共同体内部或外部。公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。在云计算节点10中,存在计算机系统/服务器12,其可与众多其他通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其他可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其他模块通信。应当明白,尽管图中未示出,其他硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(pda)或移动电话54a,台式电脑54b、笔记本电脑54c和/或汽车计算机系统54n。节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(iaas)、平台即服务(paas)和/或软件即服务(saas)。应当理解,图2显示的各类计算设备54a-n仅仅是示意性的,计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图3所示,提供下列层和对应功能:硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于risc(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。在一个示例中,管理层80可以提供下述功能。资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其他资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供账单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其他资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(sla)计划和履行功能85:为根据sla预测的对云计算资源未来需求提供预先安排和供应。工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95。如上所述,参见图3描述的上述全部示例仅仅是示意性的,并且本发明不旨在限制于这些示例。应理解,本文描述的一个或多个实施例的所有功能通常由图1所示的系统执行。其可以有形地体现为程序/实用程序40(图1)的程序代码42的模块。不过,这不一定是这样。相反,本文所述的功能可以由图1所示的层60、70、80和90中的任一个来执行/实现和/或实现。重申,虽然本公开内容包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。而是,本发明的实施例可以使用现在已知或以后开发的任何类型的集群计算环境来实现。本发明的实施例涉及基于跟踪数据对象集的访问的级别,跨越两个或更多个类型的存储器来动态地移动分层数据对象。一个实施例包括由对象层级处理器逻辑地组织第一层级中的数据对象的方法。第一层级中的数据对象的一部分逻辑地包括其他数据对象的分组。对象层级处理器跨越第二层级中的两个或更多个类型的存储器来物理地组织数据对象。第二层级中的数据对象的另一部分物理地包括其他数据对象的分组。跨越两个或更多个类型的存储器,动态地移动第二层级中的数据对象的分组。使用数据结构跟踪数据对象的访问级别,数据结构将第一层级中的数据对象的分组映射到元数据信息,元数据信息包括在数据对象的每个分组中的数据对象的组合的访问频率以及对数据对象的访问者的当前数量。一个或多个数据库操作(例如,更新(插入/删除)或查询(数据检索))通常被分组为事务。更新查询用于修改表中的现有记录。数据库上的事务可能并行发生,并不一定按照它们启动的顺序提交。这些事件可以记录在数据库事务日志、事件日志等中。数据库数据存储页面(其固定大小,并存储在存储器中的连续虚拟地址区域中)由数据库系统的缓冲池组件管理。通常由缓冲池执行的操作包括将页面加载到缓冲池管理的存储器中,钉住(pin)缓冲池存储器中的页面,以防止在页面使用时的页面消除,通过引用计数来跟踪缓冲池中页面的使用情况,以及在需要空间来加载另一个页面时,从存储器中收回(解除钉住)页面。在一个实施例中,数据对象被组织在至少两个层级中。第一层级包括数据对象的逻辑包含(subsumption)的层级,其中一些对象包括其他数据对象的分组。在一个示例中,记录是单独值的逻辑分组。超区是一定数量的连续逻辑记录的逻辑分组,可以通过元组标识符单独标识。在一个示例中,元组标识符可以以有序的数字序列存在,其被称为元组序列号(tsn)。第二层级包括跨两个或更多个类型的存储器的对象的物理组织,其中一些对象物理地包含其他数据对象的分组。在一个示例中,这可以是保持单独值的存储器页。可以为了通过多个并发过程以高效的方式钉住和解除钉住包括的表的不同列的页面而使用超区(通常这么做是为了防止页面在使用过程中被收回而进行;这样做增加/减少当前引用计数)。一个实施例将连续的tsn分组到超区中,以避免并发过程之间的争用(例如,避免缓冲池管理器内的锁存获取以同步并发页面钉住和解除钉住操作)并确定这些tsn在页面上的位置,列存储的每列一个页面。在一个实施例中,超区是以特定数量的行的粒度组织的跨列数据结构。在一个实施例中,使用数据结构来跟踪数据对象集合的访问级别,该数据结构将根据第一层级的那些对象的分组映射到元数据信息。此元数据信息可以包括每个集合的组合的访问计数、访问频率和最近访问时间。在一个实施例中,超区可以用作该数据结构,并且在超区中的任何数据库缓冲池之外执行粗略引用计数,同时仍保持每列的单独的引用计数。在一个实施例中,从行标识符到跨越(straddle)该行(在任何列中)的所有数据页的虚拟存储器地址的直接映射被存储在超区中。在一个实施例中,所使用的引用计数是分级的,使得点查询仅将感兴趣的列拉入缓冲池。在一个实施例中,跨存储器类型的数据对象移动是根据第二(物理)层级来执行的。对于每个对象或一组对象,通过检查第一层级中重叠集合的跟踪访问级别来控制该移动。在一个实施例中,只有对于第一层级中的所有重叠集合的跟踪的当前访问计数为零时,允许对象或数据对象的分组被移动。图4是示出根据一个实施例的用于基于跟踪数据对象的子集的访问的级别来跨越两种或多种类型的存储器动态地移动分层数据对象的系统的框图。在一个实施例中,系统包括服务器12,其包括通过存储单元n406(其中n是大于1的整数)的存储单元1405,访问跟踪处理器410,映射处理器415和对象层级处理器420。在一个实施例中,存储单元1-n405-406可以在服务器12的外部。在一个实施例中,存储单元1-n405-406存储诸如行/列/单个值、表等的对象。在关系数据库中,表(或文件)将关于单个主题的信息组织成行和列。在一个实施例中,存储单元1-n405-406是不同类型的存储器存储,诸如缓冲池、基于云的存储、不同类型的对象池等。在一个实施例中,对象层级处理器420跨越存储单元1-n405-406动态地移动分层数据对象。在一个实施例中,访问跟踪处理器410使用数据结构跟踪分层数据对象的一个或多个子集的访问级别,其使用映射处理器415以将这些数据对象(例如,tsn)的序列号的范围映射到元数据信息,其包括访问计数和保持用于数据对象的那些子集的数据的一个或多个存储器页的位置。在一个实施例中,对象层级处理器420基于跟踪的访问级别确定要移动哪些分层数据对象。在列存储中,对表的每个插入必须修改n个页面(其中n是表中的列数),并且类似地,每个点查询必须访问m个页面(其中m是在查询中所引用的列数)。每个这样的页面引用涉及更新哈希表(例如,数据库管理系统(dbms)缓冲池)中的引用计数,并且可能获取锁存(或执行原子读取-修改-写入指令)。访问一行涉及访问n个列和2n个访问哈希表或每个点的其他映射数据结构或udi(更新,删除,插入)查询,其中n是正整数:需要n个访问以便映射一个tsn到页面id,以及需要n个访问以将页面id映射到缓冲池地址(并增加用于每个页面的引用计数)。在一个实施例中,由系统来实现包含16k的tsn的超区数据结构。在一个实施例中,提供如下的pagemap:对于每个列,列表(starttsn,pageptr)。在一个实施例中,只有高速缓存用于超区结构,也就是说,它在盘上不支持。在一个实施例中,对象层级处理器420使用超区数据结构来提供在插入操作时添加新的tsn(根据需要分配空间/页面)。在一个实施例中,映射处理器将tsn或tsn的范围直接映射到表(或对象)(或子对象)的列的列或列的子范围的虚拟存储器地址。在一个实施例中,在页面首次被使用时,执行缓冲池钉住(指示页面正在使用中且不能移动到另一层存储器的缓冲操作)被执行。在一个实施例中,分层引用计数以超区的访问粒度来维持,其对应于连续的行范围(例如,16384)。此外,还可以针对超区内的每列维护访问计数。这几乎完全避免了针对据库缓冲池中的每页增加引用计数的开销,并且在热数据适合存储器的情况下特别有效,同时仍允许在存储器类型之间进行细粒度的数据移动。例如,单独页面仍然可以被移动。在一个实施例中,在按列为主布局的表中,映射处理器415提供从行式(row-wise)标识符到列式(column-wise)标识符的映射。在下文中,tsn引用行标识符。实际的数据布局是按列为主,但是两个常规操作导致按行为主布局。首先,ingest(加载/插入)产生要被增加到表中的行。这些行需要被拆分并被附加到单独的列。第二,点查询产生tsn(通常经由索引查找),需要被映射到每列的页面。这使性能和并发复杂化。例如,如果使用传统缓冲池和索引结构来针对每列将tsn映射到页面id,则在具有n列的表上的点查询必须执行2n个哈希表访问,在次级索引查找之后,针对n页面映射为n以将tsn映射到页面id;和n个缓冲池固定(fix)(涉及n个引用计数增加)来固定页面。为了避免这种情况,在一个实施例中,引用计数和tsn两者以tsn粒度的页面映射均由映射处理器415执行,而不是以每页的粒度(如同页面映射或常规缓冲池)一样。在一个实施例中,超区数据结构表示大约16384个tsn。在一个实施例中,对于每列而言超区具有(starttsn,pageptr)的阵列。starttsn是对于该列的每个页面中的开始tsn的tsn。边界页可以在每列之间的相邻超区之间共享。在一个实施例中,除了记录对超区的行的全部活跃(读取或写入)引用的全局引用计数之外,超区还包括针对每列的引用计数。在一个实施例中,不允许就地(in-place)更新,因此全局和每列计数仅跟踪读取者数量的计数。在其他实施例中,如果允许就地更新,则还维护写入者数量的引用计数。pageptr是指向页面的指针,当存储器层级只有两个级别(缓冲池和盘)时,其可以位于缓冲池或盘中。因此,pageptr是(缓冲池页面id,表空间页面id)的联合,其中表空间页面id是用于盘上的页面的标识符。通常,pageptr可能是跨存储器层级的指针的联合,它不一定只保持缓冲池和磁盘页标识符。图5示出了根据一个实施例的用于访问特定记录、在此类访问期间根据需要更新访问元数据以及将包含那些记录并且尚未被加载到缓冲池中的任何页面加载到缓冲池中的过程。在一个实施例中,在框510,识别对应于将被访问的记录的tsn。在框520中,识别其tsn范围与将被访问的记录的tsn重叠的超区,并且查找用于那些超区的访问元数据。在框530中,从此元数据中确定包含将被访问的记录的存储器页面。在框540中,识别所确定的存储器页面中的每个是否在物理存储器(在缓冲池)中。如果没有,那些页面被加载到物理存储器中。另外,针对这些新加载的页面初始化访问元数据。在框550中,对于这些识别的超区中的每一个,访问者(accessor)的当前数量被增加。在一个实施例中,在框560中,针对这些超区的访问频率也被更新。在框570中,对于任何新加载的页面,也将更新超区中的存储器页面地址的列表。图6示出了根据一个实施例的针对点查询操作的将tsn映射到页面(tsn页面)的过程600。在一个实施例中,在框610中,从查询获得将被访问的表(或对象)。在一个实施例中,在框615中,从查询获得用于表的列(例如,子对象)的列表,指示需要被访问的列。然后超区增加这些列中的每个列的访问计数(例如,通过执行superslot.cols.numreaders++(在所需的列上))。在一个实施例中,在框620中,全局读取者计数器在超区数据结构上增加。在一个实施例中,在框625中,针对每列执行扫描(scan(starttsn,pageptr))。在一个实施例中,在框630中,识别目标页面。在一个实施例中,在方框635中,确定页面是否需要在缓冲池中进行固定。页面固定是将页面固定/钉住/保留在缓冲池中的操作,首先如果当前不存在则将其从永久存储(盘或ssd)读取到缓冲池之中,并在对页面的偶写操作期间将其保留在那里,直到页面被解除固定/解除钉住,之后缓冲池可以决定收回页面。在一个实施例中,框635中的确定是基于目标页是否已经存在于缓冲池中。在一个实施例中,如果缓冲池页面需要固定(分配),则在框640中,通过将该pageptr的选定位与指示符值进行比较和交换(cswp)来标记正在被加载的页面,该指标值指定页面加载正在进行中,而其他事物不应该尝试加载页面。在一个实施例中,在框645中,确定cswp是否返回真。在一个实施例中,如果cswp没有返回真实值,则过程600继续到框635。在一个实施例中,如果cswp已经返回真实值,则该过程继续到加载页面的框650。在一个实施例中,在框660中,将缓冲池页id到pageptr的cswp被执行,以指示页面加载已经完成并且该页面已准备就绪可用于使用。在一个实施例中,在框665中,在边界页面跨超区而被共享的情况下,状态在指向其的第一个超区上被设置为挂起(pending)。在一个实施例中,对于在交易结束时没有被解除固定的页面,使用超区等级锁存来决定哪些可以被解除固定(superslot.cols.readercount)。在一个实施例中,对于bi查询,可以使用过程600,除了读取者计数仅在所需列上增加。在一个实施例中,过程600继续到其中从页面读取值的框670,并且过程600完成。图7示出了根据一个实施例的在超区中插入数据对象和初始化元数据以用于跟踪访问元数据的过程。在一个实施例中,在框710,数据对象被分配有它们将被存储于其中的存储器页面。在框720中,如果需要分配任何新的存储器页面来存储这些数据对象,则元数据被初始化以跟踪用于这些页面的访问信息。在框730中,将tsn指派给这些对象。在一个实施例中,如果任何tsn落在现有超区的范围之外,则创建并初始化新的超区。在这些新的超级存储器中存储保持落在那些tsn上的对象的存储器页面的地址。图8示出了根据一个实施例的用于针对插入操作而将tsn映射到页面的过程800,在该插入操作中全部列值具有固定长度。在一个实施例中,在框810中,从存储器获得表(或对象)。每个插入者线程准确地知道要附加的行数并拾取行来插入。每个超区具有两个以原子方式修改的计数器:在该超区上最大使用的tsn以及该超区上的活跃插入者线程数。在一个实施例中,在框815中,从表中获得行(或子对象)的列表。在一个实施例中,在框820中,如果任何新的行需要,则超区被初始化。当超区被初始化时,所有的区(一个区是(starttsn,页面指针))根据需要而被填充有按需在表空间上分配的页面(全部区被填充,页面被分配)。在一个实施例中,对于插入操作,在框830中,tsn按照兼备插入的行数原子地增加。在框840中,插入者的数目增加1(循环获取和cswp)。在一个实施例中,在框850中,确定页面是否需要在缓冲池中进行固定。在另一个实施例中,可以在框820中通过当超区被初始化时分配所有页面来提供。在一个实施例中,框850中的确定是基于目标页面是否已经存在于缓冲池中。在一个实施例中,如果页面不需要在缓冲池中进行固定,则控制流到框845。在一个实施例中,如果页面需要在缓冲池中进行固定,则在框855中,对于pageptr的最后几位与指示加载针对该页面正在挂起的状态执行原子的比较和交换(cswp)。在一个实施例中,在框860中,确定cswp是否返回真值。在一个实施例中,如果cswp没有返回真实值,则过程800继续返回到框850。在一个实施例中,如果cswp已经返回真实值,则该过程继续到其中页被加载的框862,然后到框865,在框865中经由另一个cswp操作将加载的页面的地址(缓冲池页面id)存储在pageptr中。随后控制流向框845。在一个实施例中,在框845中,在没有额外的锁存的情况下,执行用于到页面上的值的存储器拷贝(memcpy)(通过扫描区来完成将tsn映射到页面)。在一个实施例中,控制然后流向框875,其中通过执行读取和cswp指令的循环,活跃的插入者的数量被原子地减小,当该计数为0时,诸如索引更新、压缩和空间回收的后台操作可以访问这个超区,这是因为它的内容是稳定的。在一个实施例中,为了处理可变长度的列,在锁存下的每个插入器线程增加指示将被使用的字节数的计数器(用于每个可变长度字段的单独的这样的计数器)。一旦这个计数器增加,则线程已经为它需要插入的可变长度数据保留空间。当这种可变长度列的数量较小时,也可以经由原子或硬件事务存储器来完成。在一个实施例中,每个表具有指向超区的指针的数组和指示被使用的超区的数量的原子。如果插入者需要插入超过适合于超区的行,则插入者首先插入适合的行数。然后,插入者为其余部分形成一个新的超区。这涉及锁存和等待,一个线程将以原子方式成功地增加被使用的超区的数量,然后形成一个新的超区,并且在一个指针中对其进行cswp;而尝试执行此操作的任何其他线程都必须等待。为了使得等待罕见,在一个实施例中,当先前的超区超过半满时,过程800主动地形成超区。图9是根据一个实施例的基于跟踪数据对象的访问级别的动态地移动分层数据对象的方法的框图。在一个实施例中,在框910中,确定数据对象是否需要跨越不同类型的存储器(例如,静态ram、动态ram、硬盘和固态盘)而被移动。如果确定需要跨不同类型的存储器移动数据块,则在框920中,数据块被选择以根据数据对象和数据对象分组的所跟踪的访问计数来被移动。否则,该过程返回到开始以及框910。在框930中,针对与所选择的数据对象重叠的数据对象的分组中的全部,确定跟踪的当前访问者的数量是否为零。如果框930为假,则该过程继续返回到框920。否则,该过程继续到框940。在框940中,所选择的数据块跨越不同类型的存储器被移动。在一个实施例中,该过程可以包括由对象分层处理器来逻辑地组织第一层级中的数据对象。在一个示例中,第一层级中的数据对象的一部分逻辑地包括其他数据对象的分组。在一个实施例中,该过程还包括由对象层级处理器跨越第二层级中的两个或更多个类型的存储器来物理地组织数据对象。在一个示例中,第二层级中的数据对象的另一部分物理地包括其他数据对象的分组。该过程还包括跨越两个或多个类型的存储器动态地移动第二层级中的数据对象的分组,使用数据结构跟踪数据对象的访问级别,该数据结构将第一层级中的数据对象的分组映射到元数据信息,元数据信息包括在数据对象的每个分组中的数据对象的组合的访问频率以及对数据对象的访问者(例如,客户端,线程,进程等)的当前数量。在一个实施例中,该过程可以包括基于与以移动为目标的数据对象的所述分组重叠的所述第一层级中的所述数据对象分组的访问的跟踪的级别,确定是否移动所述数据对象的每个分组。在一个实施例中,所述第二层级包括存储器页面和单独的值,并且所述第一层级包括数据记录、所述数据记录的序列以及单独的值。在一个示例中,不频繁访问的数据对象和不频繁访问的数据对象的数据对象被移动到较慢类型的存储器。在一个实施例中,在移动特定数据对象之前,使用针对与所述特定数据对象重叠的数据对象的全部分组的访问者的当前数量为零的访问信息的跟踪的级别来执行验证,以及确定移动数据对象是基于预定的最近访问时间。在一个实施例中,数据记录的序列中的数据对象的布置是由元组序列号(tsn)指示的,并且所述元数据信息包括保持数据对象分组的一个或多个存储器页的地址。在一个示例中,所述数据结构包括识别数据记录的逻辑集合的特定数量的连续tsn的逻辑分组的列表以及用于数据对象的逻辑分组的所述元数据信息的列表。在一个实施例中,在执行添加附加数据对象的操作时,一个或多个存储器页面根据需要被分配以保持所述附加数据对象,并且分配的所述存储器页面确定所述数据对象到所述第二层级中的分组的指派,并且所述附加数据对象也被指派至所述第一层级中的一个或多个分组。所属
技术领域
:的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其他可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。计算机程序指令还可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图块或块中指定的功能/动作的过程。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。除非明确地如此陈述,权利要求书中对于单数形式的元素的引用并不旨在表示“一个且唯一”,而是表示“一个或多个”。对于本领域普通技术人员目前已知或稍后公认的、上述示例性实施例的元素的所有结构和功能等同物实施例旨在由本权利要求所包含。除非使用短语“用于……的装置”或“用于……的步骤”来明确说明该内容,本文中的任何权利要求不得根据35u.s.c、部分112、第六段的规定进行解释。本文使用的术语仅用于描述特定实施例的目的,而不意在限制本发明。如本文所使用的,除非上下文另有明确指示,单数形式“一”、“一个”和“该”也旨在包括复数形式。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包括”指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征,整体、步骤、操作、元件、组件和/或其组合。所附权利要求书中的所有手段或步骤以及功能元件的相应结构、材料、作用和等同物旨在包括与特别要求保护的其他要求保护的元件结合执行功能的任何结构、材料或动作。已经出于说明和描述的目的而呈现了本发明的描述,但并不旨在穷尽或限制于本发明的所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员是易见的。选择和描述实施例以便最好地解释本发明的原理和实际应用,并且使得本领域普通技术人员能够理解具有适合于所预期的特定用途的各种修改的本发明的各种实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1