对于hash数据库而言,优化项目按照重要程度排序,分为以下几项:
扩展MMap内存:
通过mmap call可以被映射到内存中的数据文件的内容大小,也就是相当于缓存。hash数据库的数据在<=扩展MMAP内存的情况下是最优的。
bucket array:
hash表的元素数量,值越大,key的hash值分布越均匀,在bucket内的二分查找的时间复杂度越低,效率也就越高。
free block pool:
用来记录数据文件中已经废弃的部分,并在需要的时候将其再次利用起来。该值越大,数据文件的利用率越高,文件膨胀也就越慢。
JAVA API
setxmsiz
public boolean setxmsiz(long xmsiz)
设置扩展mapp内存大小
Parameters:
xmsiz - 扩展mapp内存大小. 如果该值小于0,扩展mapp内存将被禁用. 默认大小是67108864字节.
Returns:
If successful, it is true, else, it is false.
Note:
需要在打开数据库之前设置.
optimize
public boolean optimize(long bnum,
int apow,
int fpow,
int opts)
优化数据库文件.
Parameters:
bnum - bucket array的元素数量. 如果该值小于0,将使用默认值。默认值为记录数的两倍。
apow - 记录列队大小的2的次方数(假如apow值为4,那么记录列队的大小就是2的4次方,也就是16.)。 如果该值是负的,那么不会改变当前设置。
fpow - free block pool 的最大元素数的2的次方数。 如果该值是负的,那么不会改变当前设置。
opts - `HDB.TLARGE' 指定了数据库文件大小可以通过使用64-bit的bucket array来超过2G的限制;`HDB.TDEFLATE'指定以Deflate格式压缩每个记录;`HDB.TBZIP'指定以BZIP2 格式压缩每条记录; `HDB.TTCBS'指定以TCBS格式压缩每条记录;如果是0xff,不做任何更改。
Returns:
If successful, it is true, else, it is false.
Note:
这个函数可以降低带有连续更新碎片的数据库文件大小。
setcache
public boolean setcache(int rcnum)
设置缓存参数.
Parameters:
rcnum - 被缓存的最大记录数。如果该值小于0,那么该项被禁用,默认情况下该项被禁用。
Returns:
If successful, it is true, else, it is false.
Note:
需要在打开数据库之前设置.
setdfunit
public boolean setdfunit(int dfunit)
设置自动除碎片的单位步长。
Parameters:
dfunit - 单位步长。如果该值小于0,自动除碎片是被禁用的。默认情况下该项被禁用。
Returns:
If successful, it is true, else, it is false.
Note:
需要在打开数据库之前设置.