用于动态和自动内存管理的方法和计算机技术

技术编号:2867221 阅读:201 留言:0更新日期:2012-04-11 18:40
应用程序(如数据库)对为应用程序执行的函数(function)(如查询)定义要供应用程序使用的内存量的值(也称为外部设置全局值)敏感。在一个实施例中,指令序列(也称为“内存中介器(memory  broker)”)利用外部设置全局值来计算以后当分配内存时使用的一个或多个内部值。内存中介器根据为函数分配的内存动态地修改内部值,从而形成反馈回路。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
在典型数据库系统中,用户通过把命令提交给诸如Oracle之类的数据库应用,来存储、更新和检索信息。当进行事务处理时,数据库应用把信息存储在内存中和盘上。为了使性能最佳,除了盘之外,还必须把尽可能多的信息存储在内存中。但是,由于内存资源是有限的,数据库应用必须协调涉及到把可用内存分配给数据库应用使用的结构的内存分配。正如可从Oracle公司和因特网上网址htt//oradoc.photo.net/ora81/DOC/server.815/a67781/toc.htm获得的图书《Oracle8i概念》(将该图书的全文插在本文中,以供参考)所述的那样,数据库应用Oracle所使用的两种结构是称为系统全局区(SGA)和程序全局区(PGA)的内存区。SGA包含有关Oracle进程需要访问的数据库和实例的状态的一般信息。在SGA中不存储用户数据。SGA的尺寸在启动Oracle的时候确定。为了使大多数系统的性能最佳,整个SGA应该与实内存相适应。数据库管理器(DBA)通过发出SQL语句“SHOW SGA”。可以看到多少内存被分配给SGA和它的每个内部结构。PGA是当进程开始时,为保存数据和控制每个进程的信息而创建的。PGA专用于Oracle中的每个进程,但这样的PGA可以处在共享内存中。PGA初始尺寸在启动相应进程的时候是固定的,并且是操作系统专用的。当前,在Oracle8i中,DBA可以利用像SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE和CREATE_BITMAP_AREA_SIZE那样的各种参数,控制PGA内存利用。有关这样参数的更多信息,请参阅可从网址htt//oradoc.photo.net/ora81/DOC/server.815/a67775/toc.htm获得的图书《Oracle8i Tuning》(将该图书的全文插在本文中,以供参考)。还可以参阅名称为“按照指定值或阈值为存储来自排序操作的数据分配专用或共享缓冲内存的方法(Method for allocating either private or sharedbuffer memory for storing data from sort operations in accordance with anassigned value or threshold value)”、授予Cohen等人的美国专利第5,799,210号、名称为“串行可重用执行内存(Serially reusable execution memory)”、授予Jasuja等人的美国专利第5,987,144号、名称为“允许大量进程访问巨型物理内存缓冲区的寻址方法和系统(Addressmg method and system for providingaccess of a very large size physical memory buffer to a number of processes)”、授予Frank等人的美国专利第5,860,144号,以及名称为“利用位图索引在计算机中进行动态内存分配(Dynamic memory allocation in a computer using a bitmap index)”、授予McMahon等人的美国专利第5,784,699号,所有这些专利都与数据库进程使用内存有关。有关附加信息,请参阅Luc Bouganim、Olga Kapitskaia和Patrick Valduriez发表在Networking and Information Systems 1(6)629-652(1998)上的论文《大型查询执行的动态内存分配》(“Dynamic Memory Allocation for Large QueryExecution”)。还可以参阅这三位作者发表在pages 105-115 of Proceedings ofConference on Information and Knowledge Manage- ment,1998 published byAssociation for Computing Machinery,Inc上的论文《大型查询执行的内存自适应调度》(“Memory-Adaptive Scheduling for Large Query Execution”)。这个领域中的另一篇论文是Diane L.Davison和Goetz Graefe发表在SIGMODConferene 1995281-292上的论文《多用户查询执行的动态资源中介代理》(“Dynamic Resource Brokering for Multi-User Query Execution”)。专利技术概述按照本专利技术编程的计算机对定义供诸如数据库之类的应用使用的总内存量的值敏感。在一个例子中,数据库管理器(DBA)提供这样的值(也称为“外部设置全局值”)。在另一个例子中,外部设置全局值是根据例如系统中当前可用的内存量自动确定的。此后,计算机按照(全部或至少部分)从外部设置全局值中导出的量值分配内存(例如,供数据库查询用)。编程计算机的一个实施例从外部设置全局值中导出用在为应用分配内存(例如,实现数据库查询的操作符所需的内存中的内部值(称为“内存限度”)。内存限度可以以对于本领域普通技术人员来说显而易见的任何方式例如取决于实现数据库的进程和结构导出。在一个实施例中,编程计算机根据完成的内存分配,动态地修改内存限度,从而形成反馈回路。可选地,在确定内存限度时,编程计算机可以对应用之外的信息(诸如非数据库进程分配的内存量敏感),以便有效地使用计算机中的有限内存。附图简述附图说明图1A以数据流图的形式例示了按照本专利技术编程的计算机中的数据和逻辑块;图1B例示了如图1A所示那种类型的计算机中的一种应用执行的步骤;图2以高级方块图的形式例示了如图1B所示那种类型的多服务器进程对共享内存的使用;图3以流程图的形式例示了在图1B的服务器进程执行的比较步骤的一个详细描述当计算机被基于本专利技术的软件编程时,它对定义供诸如数据库之类的应用使用的总内存量的值11(图11A)敏感。请注意,尽管在如下的描述中涉及数据库应用,但是,取决于实施例,也可以以本文所述的方式编程其它应用。值11(也称为“外部设置全局值”)可以由例如数据库管理器(DBA)提供,或者可以根据例如计算机中当前可用的内存自动确定。取决于实施例,外部设置全局值11可以被应用用作极限值(不能超过它),或者被用作目标值(有时可以达到,或者大多数时间不可以达到例如未达到或已超过)。在一个实施例中,数据库系统10(图1A)通过对不适用于例如进行查询的应用进程的内存量12(图1A)加以考虑,计算数据库软件内部的值14(下文称为“全局内部值”)。具体地说,逻辑块13(图1A)对已分配但未使用的内存(称为“空闲内存”)和与实现查询的操作符(诸如排序、散列连接和位图合并)无关的内存(称为“其它内存”)加以考虑。取决于实施例,数据库系统10(图1A)利用全局内部值14来计算(参见逻辑块15)用在为每个操作符分配内存中的另一个内部值17(也称本文档来自技高网...

【技术保护点】
一种在计算机中将内存分配给与数据库有关的数个进程的方法,该方法包括:存储要分配给进程的总内存量的第一值;和根据第一值,导出要由至少一个进程中的至少一个操作符分配的内存量的第二值。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:贝努特达格维尔穆罕麦德蔡特
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1