伯克利 DB 中的交易。快速地?
Posted
技术标签:
【中文标题】伯克利 DB 中的交易。快速地?【英文标题】:Transactions in Berkeley DB. Fast? 【发布时间】:2014-09-03 12:34:14 【问题描述】:当 Berkeley DB 只有一个写入者时,是否值得使用事务?
事务会导致显着放缓吗? (请以百分比表示)
【问题讨论】:
【参考方案1】:如果您需要事务提供的原子性,则可以使用事务。也许您需要中止事务,撤消其中的所有内容?或者您可能需要应用程序失败时中止部分完成的事务的语义。您对事务的选择基于原子性,而不是性能。如果你需要它,你需要它。
如果您不需要原子性,则可能不需要持久性。然后,这明显更快!
【讨论】:
【参考方案2】:Berkeley DB 中与 DB_INIT_TXN 的交易并不显着 比其他模型慢,尽管通常保持事务性 log 要求在写入之前将所有数据写入日志 到数据库。
对于单个写入器和多个读取器,请尝试 DB_INIT_CDB 模型,因为代码要简单得多。 INIT_CDB 中的锁 模型是按表计算的,因此整体吞吐量可能会更差 比 INIT_TXN 模型因为粗粒度的每个表 锁争用。
性能将更多地取决于访问模式,而不是是否 一种使用 DB_INIT_TXN 或 DB_INIT_CDB 模型。
【讨论】:
以上是关于伯克利 DB 中的交易。快速地?的主要内容,如果未能解决你的问题,请参考以下文章