في قاعدة بيانات خزانة Kyoto باستخدام قاعدة بيانات تجزئة الملف ، كيف يمكن تجنب زيادة حجم الملف؟

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

سؤال

أنا أستخدم المتابعة لفتح:

db.open("db.kch#tune_defrag=10000", DB.OWRITER | DB.OCREATE)

أنا أضع العناصر وأزيلها. في نهاية التنفيذ ، تكون قاعدة البيانات "فارغة" ، تُرجع وظيفة count () 0 ، لأنني أزيل جميع العناصر. لماذا يزداد حجم الملف دائمًا عندما أكرر الاختبار؟ هل من الممكن تشغيل شيء مثل "جامع القمامة" لتنظيف السجلات التي تمت إزالتها؟ إذا قمت بتنفيذ نفس الاختبار 100 مرة ، فلدي قاعدة بيانات بحجم 500 ميجابايت ، حتى لدي سجلان فقط.

حاولت وضع "Tune_defrag = 10000" لكنني أعتقد أنه لم ينجح بشكل جيد.

Obs.: التسجيل الوحيد هو أقل من 1 ألف ، لا أفهم لماذا تأخذ السجلات مساحة كبيرة في القرص.

شكرا على اي مساعدة

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

المحلول

جرب هذا:

db.kch#dfunit=8

هذا يعني أن KC يعمل على تشغيل كل 8 تجزئة تم اكتشافها ، و 8 موصى به من قبل Mikio.

يتم سرد الخيارات المتاحة هنا ، ومع ذلك يمكن أن تستخدم بعض البولندية.

http://fallabs.com/kyotocabinet/command.html

نصائح أخرى

ادارة:

kchashmgr defrag path_to_kcabinet_file

هو ما أفعله للحصول على ملف DB "تغيير حجمه". لم أجد وصول API إلى هذا ، ولهذا السبب أقوم بذلك باستخدام أمر Shell باستخدام أداة KchashMgr (Obviosuly يمكن استدعاء هذا من داخل البرنامج).

لم أستخدم هذا DB المعين ، لكن في بعضها آخر ، فإن الاختراق لحل هذه المشكلة هو نسخ DB إلى واحد جديد ، ثم حذف القديم. بعد التأكد من نسخها بشكل جيد :).

لقد قمت بتنفيذ هذه العملية في أنظمة الإنتاج ، طالما تم ترميزها جيدًا ، يجب أن تعمل.

من نظرة سريعة من خلال وثائق Kyoto ، لا يبدو أن لديك أي طريقة لتغيير حجم قاعدة بيانات السجلات المحذوفة أو تنظيفها بطريقة أخرى ... أو حقًا لإدارتها بأي شكل من الأشكال أو الشكل.

هذا المشروع يبدو أنه بعيد عن كونه "جاهزًا للإنتاج". إذا كنت ترغب حقًا في تنفيذها ، أقترح الاتصال بأصحاب المشروع (http://fallabs.com/) ومعرفة ما إذا كان لديهم أي خطط لبعض وظائف الأداة المساعدة التي تشتد الحاجة إليها.

خلاف ذلك ، أقترح الانتقال إلى قاعدة بيانات نمط NOSQL مختلفة أكثر نضجًا قليلاً.

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