首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据库环境中设置核心berkeletdb(dbapi)中的事务参数来帮助维护数据库?

如何在数据库环境中设置核心berkeletdb(dbapi)中的事务参数来帮助维护数据库?
EN

Stack Overflow用户
提问于 2011-07-09 08:09:03
回答 1查看 56关注 0票数 1

我们正在使用核心伯克利(Dbbaseapi),并且已经处理了9个缺位记录的写/读core,现在我们在使用事务和不使用事务时在性能上有差异,这些事务如下:

  1. 我们写/读S-Max CDRFile实现了二次数据库的概念:-

使用二级数据库概念(带事务):-

代码语言:javascript
复制
Operation   No.of Rows  Time 
Write CDRFile   9,66,320    5.8 minutes
Read CDRFile    9,66,320    1.36 minutes

使用二级数据库概念(无事务):-

代码语言:javascript
复制
Operation   No.of Rows  Time 
Write CDRFile   966320          3.27 minutes
Read CDRFile    966320          1.28 minutes

我们已经设置了environConfig.setTransaction(true)中使用的参数,在数据库中设置了相同的参数。

代码语言:javascript
复制
Transaction txn = databaseEnv.getDbEnv().beginTransaction(null, null);

然后来到这里:-

代码语言:javascript
复制
databaseEnv.getCdrDb().put(txn, thekey, theData);

因此,请回答事务内部如何在数据库和环境中使用。

EN

回答 1

Stack Overflow用户

发布于 2011-08-01 23:47:02

从你随后提出的问题来看,听起来你已经超越了这个最初的问题。对于记录而言,当为事务配置BDB时,BDB执行事务日志的写操作,以便在应用程序或系统崩溃时提供可恢复性(在没有事务的情况下使用BDB时无法自动恢复)。

在使用事务时,在默认情况下,BDB将等待事务一直写入磁盘(请参阅开始处理事务的前两部分,以获得有关事务持久性以及如何通过放宽持久性约束来提高吞吐量的更多信息)。

正如上面所指出的,除了放宽持久性约束之外,还可以通过以下方式提高吞吐量:( a)在同一事务中包括多个操作(插入),而不是通过putMultiple API调用使用大容量put API (这将减少预调用JNI开销),而不是在单独的事务中插入单个记录。

将来,在OTN上的伯克利DB技术论坛上,这些问题可能会得到更快的回答。

我希望这能帮上忙。

致以敬意,

戴夫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6633575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档