让DB2数据库使用所有内存的方法
2007-05-20 16:17:08 来源:WEB开发网核心提示: 让我们考虑一种典型情况:您正在设计一个数据库,在其中希望将一个表尽可能多地放入内存,让DB2数据库使用所有内存的方法(4),首先,更新数据库管理器配置并告诉它要使用多少扩充存储段(num_estore_segs),那么当访问这个表中的数据时,就增大了数据留在内存中的机会,这个值的缺省设置为
让我们考虑一种典型情况:您正在设计一个数据库,在其中希望将一个表尽可能多地放入内存。首先,更新数据库管理器配置并告诉它要使用多少扩充存储段(num_estore_segs)。这个值的缺省设置为零。n 取多大值将取决于表有多大、可用的内存有多少以及您希望这个特定表用多少内存。假定我们正在使用 Solaris,它有 6 GB 内存 — 在 4 GB 内存空间之上的 2GB 内存用于扩充存储器(也称为 estore):
update db cfg for sample using num_estore_segs n
用“扩充存储器存储段大小”(estore_seg_sz)数据库配置参数来定义 estore 段的大小:
update db cfg for sample using estore_seg_sz 32000
现在您创建了一个缓冲池。对于本示例,我们将使用 8K 页面大小,尽管 16K 和 32K 页面大小也是允许的。(如果是在 Windows 上,要使用 2GB 以上的内存,则必须使用大于 4K 的页面大小。)必须为扩充存储器启用缓冲池,可以使用 EXTENDED STORAGE 关键字做到。 highmem 是我为这个缓冲池选择的名称。其大小 n 取决于您希望这个缓冲池占用的内存数量:
CREATE BUFFERPOOL highmem SIZE n
PAGESIZE 8K EXTENDED STORAGE
现在创建一个表空间,并将它分配到这个缓冲池:
CREATE TABLESPACE highmem_tbsp PAGESIZE 8K
MANAGED BY SYSTEM
USING ('C:highmemdir)
BUFFERPOOL highmem
注:表空间的页面大小必须与该缓冲池的页面大小相匹配,并且该缓冲池由名称来标识。如果您只在这个表空间中创建一个表,而这个表空间又是该缓冲池中唯一的表空间,那么当访问这个表中的数据时,就增大了数据留在内存中的机会。但对表进行排序时仍可能会溢出,因此请确保有一个已创建了相匹配的页面大小的系统临时表空间:
更多精彩
赞助商链接