2009-09-09 2 views
0

Я использую BerkeleyDB для разработки небольшого приложения. И у меня есть вопрос об открытии базы данных несколько раз в BDB.Эффективность проиграна при открытии db несколько раз в BerkeleyDB

У меня есть большой набор текста (corpus), и я хочу загрузить часть его для выполнения расчета. У меня есть два псевдо-код (смешать с питоном) здесь

@ 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) 

Во втором примере, я открою дб до расчетной, нагрузки токен для каждого цикла, а затем закрыть db.

В первом примере каждый раз, когда цикл запрашивает токен, я открою его, а затем закрою db.

Есть ли потеря производительности?

Я также отметить, что я использую DBEnv для управления базой данных

ответ

3

Если вы не кэшировать открытый файл, который вы всегда будете получать производительность потеряли, потому что:

  • вы называете открытым() и close() несколько раз, которые довольно дороги,
  • вы теряете все потенциальные буферы (как системные буферы, так и внутренние буферы bdb).

Но мне было бы все равно, прежде чем писать код.

Смежные вопросы