تم فقدان الأداء عند فتح قاعدة بيانات عدة مرات في BerkeleyDB

StackOverflow https://stackoverflow.com/questions/1401497

سؤال

أنا أستخدم BerkeleyDB لتطوير تطبيق صغير.ولدي سؤال حول فتح قاعدة بيانات عدة مرات في BDB.

لدي مجموعة كبيرة من النصوص (المتن)، وأريد تحميل جزء منها لإجراء الحساب.لدي رمزان زائفان (مختلطان مع بايثون) هنا

@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 لإدارة قاعدة البيانات

هل كانت مفيدة؟

المحلول

إذا لم تقم بتخزين الملف المفتوح مؤقتًا، فسوف تفقد دائمًا الأداء للأسباب التالية:

  • يمكنك استدعاء open() و Close() عدة مرات وهو أمر مكلف للغاية،
  • ستفقد كافة المخازن المؤقتة المحتملة (كل من المخازن المؤقتة للنظام والمخازن المؤقتة الداخلية لـ bdb).

لكنني لن أهتم كثيرًا بالأداء قبل كتابة الكود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top