我已阅读手册并知道如何设置锁,锁柜,数据库页面大小等数量,但我只是喜欢有BDB并发实际经验的人的一些建议.
我的应用程序非常简单,我将进行获取和放置大约1KB的记录.没有游标,没有删除.
Daa*_*aan 14
这取决于您正在构建的应用程序类型.创建一个有代表性的测试场景,并开始锤击.然后你会知道明确的答案.
除了用例之外,它还取决于CPU,内存,前端总线,操作系统,缓存设置等.
说真的,只测试你自己的场景.
如果您需要一些数字(实际上在您的方案中可能没有任何意义):
我非常同意Daan的观点:创建一个测试程序,并确保它访问数据的方式尽可能地模仿您希望应用程序具有的模式.这对于BDB非常重要,因为不同的访问模式会产生非常不同的吞吐量.
除此之外,这些是我发现对吞吐量有重大影响的一般因素:
访问方法(在你的情况下,我猜是BTREE).
您配置DBD的持久性级别(例如,在我的情况下,'DB_TXN_WRITE_NOSYNC'环境标志将写入性能提高了一个数量级,但它会影响持久性)
工作集是否适合缓存?
读数比.写.
如何扩展您的访问权限(请记住BTREE具有页面级别锁定 - 因此访问具有不同线程的不同页面是一个很大的优势).
访问模式 - 意味着线程彼此锁定甚至死锁的可能性,以及您的死锁解决策略(这可能是一个杀手).
硬件(缓存的磁盘和内存).
这相当于以下几点:基于DBD扩展解决方案以便提供更高的并发性有两个关键方法; 要么最小化设计中的锁数,要么添加更多硬件.