Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435454
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-18 00:12:11

数据库系统

1. 系统内存的空间结构

 

DB2系统的内存结构可以分为三个部分:数据库管理器内存、进程专用内存、数据库全局内存。进程专用内存是私有内存空间,是系统中进程使用的一块包含数据和控制信息的内存区域,在进程启动或创建时分配,并为进程排他访问。数据库管理器内存和数据库共享内存是共享内存空间,存放整个系统的管理信息以及数据字典、锁、要操作的用户数据等。具体的内存结构可见图1-3

数据库管理器内存在实例启动时分配,而数据库全局内存在数据库被激活或者第一个用户程序连接到数据库时被分配。

1)数据库管理器内存

数据库管理器内存用作对整个数据库系统的管理,可以进一步细分为:监视器堆、审计缓冲区两部分。监视器堆存放系统运行过程中的各种统计信息,用户可以从这些统计信息中找出系统存在的性能问题。审计缓冲区是可选的,如果系统打开了审计功能,就需要审计缓冲区来存放相关的处理信息。

下列配置参数和数据库管理器内存有关:

INSTANCE_MEMORY:设定系统启动时为数据库管理器分配的内存空间。

MON_HEAP_SZ:设定系统监视器堆可以使用的内存空间。如果用户需要获取系统更详细的运行信息而设置了跟踪、监控参数,就需要为监视器堆分配更多内存空间。

AUDIT_BUF_SZ:设定审计缓冲区的内存大小。

2)进程专用内存

进程专用内存是监听、代理、异步预取、页清除、检查点、日志写等进程所使用的内存空间,为进程排它使用,就是第3.2.1一节中讲到的进程缓冲区

除了进程专用内存,和进程有关的内存空间还包括:应用程序共享内存、代理/应用程序通信内存。如果DB2系统中包含多个分区,或者启用分区内并行功能,或者启用了连接集中器功能,系统就需要应用程序共享内存这一内存空间。如果在数据库服务器上运行客户端软件,这些软件使用共享内存和代理进程进行通讯,系统就需要代理/应用程序通信内存这一内存空间。由于这两部分内存空间是可选的,因此没有在图1-3中显示。

由于用户请求由代理进程完成,它的内存空间使用影响着用户请求的处理。因此在DB2系统中,用户可以使用配置参数,控制代理进程的内存空间使用。对于监听、异步预取、页清除、检查点、日志写等其它进程,它们的内存空间使用由系统自动进行管理。下列配置参数和代理进程的内存空间使用有关:

SORTHEAP:设定代理进程可以使用的排序堆内存大小。该参数设定用于排序的内存页的最大数目。如果排序为专用排序,此参数将影响代理进程专用内存;如果排序为共享排序,此参数将影响数据库共享内存。每个排序都有一个独立的排序堆,排序堆在需要时由系统分配,排序完成后释放。

APPLHEAPSZ:设定应用程序堆的内存大小。此参数设定代理进程接收用户连接、处理用户请求时,可以使用的最大内存空间。

STAT_HEAP_SZ:设定统计信息堆的内存大小。此参数指定代理进程在收集数据库对象的统计信息时,可以使用的最大内存空间。

QUERY_HEAP_SZ:设定查询堆的内存大小。在代理进程专用内存中,查询堆用来存放每个查询的语句文本、描述等信息,此参数指定为查询堆分配的最大内存数量。

AGENT_STACK_SZ:设定代理进程堆栈的内存大小。

3)数据库全局内存

数据库全局内存可以划分为:数据库堆、实用程序堆、锁定列表、程序包高速缓存、缓冲池。下列配置参数可以对整个数据库全局内存进行设置:

DATABASE_MEMORY:设定为数据库分配的最小共享内存空间。

数据库堆

数据库堆用来存放数据库的数据字典和事务日志信息,还可以用作临时的内存空间。它包括目录高速缓存、日志缓冲区两部分,这两部分分别就是第3.2.2和第3.2.5两节中讲到的数据字典缓冲区和日志缓冲区。下列配置参数和数据库堆有关:

DBHEAP:设定数据库堆的内存大小。

CATALOGCACHE_SZ:设定目录高速缓存的内存大小。

LOGBUFSZ:设定日志缓冲区的内存大小。如果要调整该参数,必须考虑DBHEAP参数的调整。

实用程序堆

实用程序堆内存空间,在系统备份、恢复、数据装入时使用。下列配置参数和实用程序堆有关:

UTIL_HEAP_SZ:设定实用程序堆的内存大小。

锁定列表

锁定列表用来存放数据库系统中的所有锁信息,就是第3.2.6一节中讲到的锁表缓冲区。下列配置参数和锁定列表有关:

LOCKLIST:设定锁定列表的最大内存大小。

程序包高速缓存

程序包高速缓存用来存放优化器生成的SQL语句执行计划等,就是第3.2.4一节中讲到的SQL语句缓冲区。下列配置参数和程序包高速缓存有关:

PCKCACHESZ:设定程序包高速缓存的内存大小。

缓冲池

缓冲池用来存放从数据文件中读取的用户数据,就是第3.2.3一节中讲到的用户数据缓冲区。在创建一个数据库时,系统会建立一个被称作IBMDEFAULTBP的缺省缓冲池,该缓冲池使用4KB的页尺寸,其空间大小由操作系统平台所决定。用户可以根据需要,使用命令修改缺省缓冲池的空间尺寸,或者创建新的缓冲池。没有和缓冲池相关的数据库配置参数。

 

2. 用户数据缓冲区的管理

 

DB2数据库的缓冲池,就是第3.2.3一节中讲到的用户数据缓冲区。每一个数据库都有一个页尺寸为4KB、被称作IBMDEFAULTBP的缺省缓冲池,可以更改该缓冲池的空间大小,但不能删除它。

DB2系统采用多缓冲池技术,用户可以根据需要创建其它的缓冲池,不同的缓冲池可以有不同的页尺寸。在创建数据库的表空间时,可以指定该表空间使用的页尺寸。如果没有指定,则页尺寸缺省为4KB。如果指定了不同于4KB的页尺寸,就应当为该表空间指定一个相同页尺寸的缓冲池,从而对该表空间中数据的缓冲和处理,就在这个缓冲池的内存空间中完成。该缓冲池必须在系统中存在。

为了防止系统中不存在相应的缓冲池,或者虽然创建但不能激活(由于没有足够的内存空间等),导致表空间不能被访问,DB2系统隐含创建了一些小的缓冲池,页尺寸分别为:4KB8KB16KB32KB,每一个缓冲池只有16个内存页。当数据库的内存空间中没有和表空间页尺寸相对应的缓冲池时,系统就自动使用这些隐含的缓冲池。对这些隐含的缓冲池,用户不能看到、也不能直接使用。

DB2系统也使用LRU策略管理缓冲池中的内存页,但公开资料中并没有这方面的内容介绍,这里就不再多讲。

阅读(1247) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-08-05 13:03:47

SAP99,支持下,也欢迎访问我的博客, SAP资料多多 http://sap99.cublog.cn 完整的一个SAP培训系列教材,中文E文的都有部份, 一共679多M,涉及SAP的多个模块 地址:http://www.sap99.com/Soft/VIP/200807/64.html