【问题标题】:how setting transaction parameter in core berkeletdb(dbapi) help in maintaining database in database environment?在核心 berkeletdb(dbapi) 中设置事务参数如何帮助在数据库环境中维护数据库?
【发布时间】:2011-07-09 08:09:03
【问题描述】:

我们正在使用核心 Berkeley(dbbaseapi) 并且已经处理了 9 个 lack 记录的 Write/ReadCDRFile,现在我们在使用事务和不使用事务时得到了性能差异,如下所示:-

  1. 我们写入/读取 S-Max CDRFile 实现辅助数据库的概念:-

使用辅助数据库概念(带事务):-

Operation   No.of Rows  Time 
Write CDRFile   9,66,320    5.8 minutes
Read CDRFile    9,66,320    1.36 minutes

使用辅助数据库概念(无事务):-

Operation   No.of Rows  Time 
Write CDRFile   966320          3.27 minutes
Read CDRFile    966320          1.28 minutes

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

Transaction txn = databaseEnv.getDbEnv().beginTransaction(null, null);

并传递到这里:-

databaseEnv.getCdrDb().put(txn, thekey, theData);

所以回复一下事务内部如何在数据库和环境中使用

【问题讨论】:

    标签: berkeley-db


    【解决方案1】:

    从您提出的后续问题来看,您似乎已经超越了最初的问题。作为记录,当为事务配置时,BDB 执行对事务日志的写入,以便在应用程序或系统崩溃的情况下提供可恢复性(在没有事务的情况下使用 BDB 时,自动恢复不可用)。

    使用事务时,默认情况下,BDB 会一直等到事务一直写入磁盘(请参阅Getting started with Transactions 的前两节以获取有关事务持久性以及如何通过放宽持久性来提高吞吐量的更多信息约束)。

    除了放宽持久性约束,如上所述,您还可以通过 a) 在同一事务中包含多个操作(插入)而不是在单独的事务中插入单个记录,以及 b) 通过使用通过putMultiple API call 批量放置 API(这将减少调用前的 JNI 开销)

    将来,这些问题可能会在 OTN 上的 Berkeley DB 技术forum 上得到更快的解答。

    我希望这会有所帮助。

    问候,

    戴夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2019-11-14
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2015-03-10
      相关资源
      最近更新 更多