转载:缓冲池管理

来源:互联网 发布:第七封印影评知乎 编辑:程序博客网 时间:2024/05/16 19:47

转载:http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.perf.doc%2Fdoc%2Fc0005391.html&lang%3Dzh_CN

缓冲池管理

缓冲池为数据库页提供工作内存和高速缓存。

缓冲池通过允许从内存(而不是磁盘)中读取数据来提高数据库系统的性能。由于大多数页数据处理发生在缓冲池内,因此配置缓冲池是唯一的最为重要的调整环节。

当应用程序访问表行时,数据库管理器将在缓冲池中查找包含该行的页。如果在缓冲池中找不到该页,那么数据库管理器将从磁盘中读取该页并将其放入缓冲池。然后,可以使用该数据来处理查询。

激活数据库时,将为缓冲池分配内存。第一个执行连接的应用程序可能以隐式方式激活数据库。此外,还可以在数据库管理器运行期间创建和删除缓冲池以及调整缓冲池大小。可使用 ALTER BUFFERPOOL 语句来增大缓冲池的大小。缺省情况下,如果有足够的可用内存,那么执行此语句时将立即调整缓冲池大小。如果执行此语句时没有足够的可用内存,那么将在重新激活数据库时分配内存。如果减小缓冲池的大小,那么将在事务落实时释放内存。缓冲池内存将在数据库停用时被释放。

为了确保所有情况下都有适当的缓冲池可用,DB2® 将创建多个小型的系统缓冲池,它们每一个的页大小分别为 4 KB、8 KB、16 KB 和 32 KB。每个缓冲池的大小为 16 页。这些缓冲池处于隐藏状态;它们未包含在系统目录或缓冲池系统文件中。您不能直接使用或更改这些缓冲池,但 DB2 在下列情况下将使用它们:
  • 指定的缓冲池由于在创建时指定了 DEFERRED 关键字而未启动,或者由于没有足够的内存可用来创建所需页大小的缓冲池而导致该缓冲池处于不活动状态

    一条消息将被写入到管理通知日志。必要时,表空间将重新映射到系统缓冲池。性能可能明显下降。

  • 在数据库连接尝试期间无法启动缓冲池

    此问题通常是由于严重的原因(例如内存不足情况)所致。虽然 DB2 将因为系统缓冲池的存在而继续充分发挥其功能,但性能将明显下降。您应该立即解决此问题。发生此问题时,您将接收到警告,并且系统会将一条消息写入管理通知日志。

创建缓冲池时,除非显式指定另一页大小,否则页大小将是创建数据库时指定的大小。由于仅当表空间页大小与缓冲池页大小相同时才可以将页读入缓冲池,因此,对缓冲池指定的页大小应该由表空间的页大小确定。在创建缓冲池后,就无法更改它的页大小。

通过发出 db2mtrk 命令调用的内存跟踪程序使您能够查看已分配给缓冲池的数据库内存量。您还可以使用 GET SNAPSHOT 命令并检查缓冲池的当前大小(bp_cur_buffsz 监视器元素的值)。

作为 DB2 工作负载管理器所提供的更大的工作负载管理功能集的组成部分,可以对活动的缓冲池优先级进行控制。有关更多信息,请参阅“DB2 工作负载管理器概念简介”和“服务类的缓冲池优先级”。



----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

缓冲池介绍及创建语句

转载:http://www.db2china.net/home/space.php?uid=3821&do=blog&id=8833

1、缓冲池
        
        (1)、数据库缓冲池区域是一块内存,当从磁盘上读取一个表的索引和数据页,以便对它们进行扫描或修改时,可以用缓冲池缓存它们。缓冲池区域有助于提高数据库系统的性能,因为它允许从内存,而不是磁盘上访问数据。由于内存访问比磁盘访问要快得多,因此 DB2 对磁盘读写得越少,系统的性能就越好。
        
        当创建一个数据库时,会自动为该数据库创建一个默认的缓冲池。
这个缓冲池名为 IBMDEFAULTBP,它的页宽为 4 KB,它的大小取决于操作系统。
对于 Windows,默认缓冲池大小为 250 页或 1 MB;
对于 UNIX,默认缓冲池大小为 1,000 页或 4 MB。

默认缓冲池不能被删除,但是可以通过 alter bufferpool 命令改变它的大小。
        
        (2)、
创建一个缓冲池
        
        create bufferpool 命令有一些选项,可用于指定以下方面:
        
        缓冲池名称:指定缓冲池的名称。该名称不能用于任何其他缓冲池,也不能以字符 SYS 或 IBM 开头。
        
        immediate:规定如果系统上有足够的内存,则立即创建缓冲池。如下所述,如果数据库共享内存中没有预留足够的空间来分配新的缓冲池,那么将返回一个警告,并且缓冲池的创建将被推迟(DEFERRED)。(immediate 是默认设置。)
        
        deferred:规定在下一次数据库被停止和重新启动时再创建缓冲池。
        
        all dbpartitionnumbs:规定将缓冲池创建在数据库中的所有分区上。如果没有指定数据库分区组,那么这是默认设置。
        
        database partition group:指定将在其中创建缓冲池的数据库分区组。缓冲池将被创建在被指定的分区组所包含的所有数据库分区上。
        
        size:指定缓冲池的大小,并且以页为单位。在分区数据库中,对于存在缓冲池的所有数据库分区,这将是默认大小。
        
        numblockpages:指定在缓冲池的基于块的区域中创建的数据页的数量。numblockpages 的实际值可能与指定的值不符,因为其大小必须是blocksize 的倍数。缓冲池中基于块的区域不能超过缓冲池大小的 98%。如果将基于块的区域的大小指定为 0,则会禁用缓冲池的块 I/O。
        
        blocksize:指定在缓冲池基于块的区域中的一个给定块中的数据页的数量。块的大小必须介于 2 页与 256 页之间。默认值是 32 页。
        
        pagesize:指定缓冲池的页宽。默认页宽为 4 KB 或 4,096 字节。页宽可以按字节或千字节指定。
        
        extended storage/not extended storage:指定是否将缓冲池中受到危害的页复制到被称作扩展存储(extended storage)的辅助缓存中。从扩展存储检索数据比从磁盘检索数据更为高效,但是不如从缓冲池检索数据高效,因此它不适用于 64 位环境。
        
        定义好缓冲池的页宽和名称后,便不能更改它们。
        
        (3)、以下是一些 create bufferpool 的示例语句
        下面的语句:
        
        
create bufferpool BP1 size 25000
        
        创建一个名为 BP1 的缓冲池,其大小为 100 MB(25,000 个 4 KB 的页面)。由于没有指定页宽,缓冲池使用默认的 4 KB 页宽。由于 IMMEDIATE 选项是默认的,因此只要有足够的可用内存来满足请求,就可以立即为缓冲池分配空间并使之可用。
        
        下面的语句:
        
        create bufferpool BP2 deferred size 25000 pagesize 8 K
        
        创建一个名为 BP2 的缓冲池,其大小为 200 MB (25,000 个 8 KB 的页面)。该缓冲池使用 8 KB 的页宽。由于指定了 deferred 选项,因此直到数据库被停止并重新启动时才会为该缓冲池分配空间。