天天看点

BerkeleyDB-JE Environments

Environments封装了一个或多个的数据库。个人觉得可以理解为是JE的总的配置的环境。我们一般用它来打开database,或者是取得transaction。

下面演示打开和关闭Enviroment。

注意,可能出现一种情况是,在你关闭Environment的时候,后台线程(cleaner thread)还未完成它的工作,这将会导致你的日志文件不准确,为了保证这种情况不会发生,你可以在调用Environment.close()方法之前,调用Environment.cleanLog()方法。就像这样:

接下来,我们讨论几个Environment的常用设置。Environment可以在开始创建的时候通过EnvironmentConfig来进行属性设置。

[list]

[*]EnvironmentConfig.setAllowCreate()

设置若不存在该Environment,则新建一个。注意的是文件可以不存在,但是文件夹必须要存在。

[*]EnvironmentConfig.setReadOnly()

设置是否由此Environment打开的database都是只读的。

[*]EnvironmentConfig.setTransactional()

设置这个Environment是否支持事务。

[/list]

除了使用EnvironmentConfig在创建Environment的时候进行属性设置,你还可以用EnvironmentMutableConfig来设置一个已存在的Environment实例。注意的是EnvironmentConfig类是继承自EnvironmentMutableConfig类,所以在EnvironmentMutableConfig设置的属性,都可以通过EnvironmentConfig进行设置。

[list]

[*]setCachePercent()

设置JE缓存可以使用多少百分比的JVM缓存

[*]setCacheSize()

设置JE缓存可以使用多少大,单位是

[*]setTxnNoSync()

设置是否在事务提交的时候马上把改变写入到日志文件。

[*]setTxnWriteNoSync()

设置当事务提交的时候日志文件是否被刷新。

[/list]

下面演示下Environment属性的设置:

Environment的属性还能在JE的属性文件中设置,属性文件的位置是<environmentHome>/je.properties ,他们的优先顺序是:

1.在<environmentHome>/je.properties设置的属性

2.通过EnvironmentConfig设置的属性

3.默认的属性

继续阅读