#include <db.h>
int
DB_ENV->set_cachesize(DB_ENV *dbenv,
u_int32_t gbytes, u_int32_t bytes, int ncache);
int
DB_ENV->get_cachesize(DB_ENV *dbenv,
u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep);
描述: DB_ENV->set_cachesize
设置共享内存缓冲池的尺寸。缓冲区的尺寸应当满足应用程序的正常工作需要的工作集,还需要为特殊情况下预留一些尺寸。(注意:工作集与同时访问的页面数的概念不一样,工作集一般情况下要大得多)
缺省的缓冲区尺寸是256KB,不能够小于20KB。所有小于500MB的缓冲区被自动增加25%的大小。而尺寸大于500MB则精确指定。在32位的操作系统中,最大的单个缓冲区的尺寸为4GB,而在64位系统上,值为10TB。(所有的尺寸都是2的幂,比如,256KB是2的18次幂而不是256000)。为了详细了解Berkeley BD如何应如何调整缓冲区尺寸,请见“选缓冲区尺寸”。
可能在某些架构和操作系统上,Berkeley DB不能申请连续的大尺寸缓冲区。比如,在某些版本的Solaris上处理器就限制了能被申请的连续空间的尺寸。如果ncache是0或1,则缓冲区将被申请为一段连续的空间,如果大于1,则缓冲区被平分为数量为ncache的多块内存。
数据库环境的缓冲区尺寸还可以通过环境配置文件DB_CONFIG进行配置。在该文件中以字符串“set_cachesize”开始,一个或多个空格字符,而缓冲区尺寸包括以下三部分:缓冲区的GB部分、字节部分、以及块数,同样由空格隔开。例如: “set_cachesize 2 524288000 3” 应当建立一个2.5GB的逻辑缓冲区,缓冲区被分为3个物理块。因为DB_CONFIG文件是在数据库环境被打开时读入,它将覆盖那些在它之前执行的配置过程。
DB_ENV->set_cachesize 方法配置数据库环境,而不是只处理由DB_ENV 指定的句柄。
DB_ENV->set_cachesize 方法在DB_ENV->open 方法调用后不应当再被调用。如果在执行DB_ENV->open时数据库环境已存在,被DB_ENV->set_cachesize设定的值将会被忽略。
DB_ENV->set_cachesize 方法返回非0的错误值,0表示成功。
参数
bytes
缓冲区的总尺寸为gbytes GB + bytes。
gbytes
缓冲区的总尺寸为gbytes GB + bytes。
ncache
ncache 参数为缓冲区的块数。
错误
DB_ENV->set_cachesize 方法可能错误,返回如下的非0错误号:
EINVAL
指定的缓冲区尺寸太小,或者是在DB_ENV->open 之后被调用,或者带有不正确的标志,或参数不正确。
描述: DB_ENV->get_cachesize
DB_ENV->get_cachesize 方法返回缓冲区的尺寸。
DB_ENV->get_cachesize 方法可以在应用程序的生命周期的任何时间被调用。
DB_ENV->get_cachesize 方法返回非0的错误值,0表示成功。
参数
bytesp
缓冲区的总尺寸为gbytes GB + bytes。
gbytesp
缓冲区的总尺寸为gbytes GB + bytes。
ncachep
ncache 参数为缓冲区的块数。
类
DB_ENV
另见
数据库环境和相关方法