在BerkeleyDB中多次打开数据库时性能丢失

时间:2009-09-09 19:09:07

标签: python database performance berkeley-db

我正在使用BerkeleyDB开发一个小应用程序。我有一个关于在BDB中多次打开数据库的问题。

我有一大组文本(语料库),我想加载它的一部分来进行计算。我在这里有两个伪代码(与python混合)

@ 1

def getCorpus(token):
    DB.open()
    DB.get(token)
    DB.close()

@ 2

#open and wait
def openCorpus():
    DB.open()

#close database
def closeCorpus():
    DB.close()

def getCorpus(token):
    DB.get(token)

在第二个例子中,我将在计算之前打开数据库,为每个循环加载令牌,然后关闭数据库。

在第一个例子中,每次循环请求令牌时,我都会打开,获取然后关闭数据库。

是否有任何表现丢失?

我还注意到我正在使用DBEnv来管理数据库

1 个答案:

答案 0 :(得分:3)

如果你没有缓存打开的文件,你将永远失去性能,因为:

  • 你多次调用open()和close()非常昂贵,
  • 丢失所有可能的缓冲区(系统缓冲区和bdb内部缓冲区)。

但在编写代码之前,我不太关心性能。