350GB SVN REPO ينشئ مراجعة 1 ميغابايت على الأقل حتى لمهمة أبسط مثل الفرع/العلامة

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

  •  29-09-2019
  •  | 
  •  

سؤال

بدأ كل هذا عندما لاحظت أن حجم المستودع الخاص بي يزداد بمعدل يومي قدره 1 جيجابايت. لقد أجريت اختبارًا بسيطًا. أنشأت فرع/علامة للمجلد الحالي الذي يبلغ حجمه 35 كيلو بايت. لاحظت رقم المراجعة وذهبت إلى $REPO/db/revs/<K-rev>/rev-number/ وفحص حجم المراجعة. كان 1 ميجا بايت. هذا يبدو مريبًا. أي أفكار حول ما قد يكون خطأ هنا. يبلغ حجم الريبو الخاص بي حوالي 350 جيجابايت مع حوالي 600000 مراجعة.

ملاحظة: لقد بدأت بالفعل إعادة بناء المستودع بأكمله لمعرفة ما إذا كان هذا يحدث أي فرق ، لكن من المحتمل أن يستغرق الأمر أيامًا لإكماله.

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

المحلول

نشر نفس السؤال على user@subversion.sapache.org وحصل على هذا الإجابة من B Smith -Mannschott - وهو ما يفسر كل شيء. لديّ دليل في المسار الذي يحتوي على 16000 مجلد - لكل التزام. شكرًا لك B Smith-Mannschott على الرد التفصيلي. نشر الرد هنا لصالح الآخرين.


هل يحتوي مستودعك على دليل مع العديد من الإدخالات؟ هل التغييرات التي تنتج الارتباطات الكبيرة التي يتم إجراؤها في أو أقل من هذا الدليل؟

لنفترض أن نلزم تغيير واحد إلى ملف واحد إلى مستودعك. لنفترض أيضًا أن الملف موجود هنا ، في مستودعك:

/project/trunk/some-real-large-directory/notes/blah.txt

عندما ترتكب التغيير إلى blah.txt ، ستعيد المراجعة الجديدة كتابة العقد الدليل بين "blah.txt" وجذر المستودع:/project/trunk/sho-large-directory/notes ،/project/trunk /بعض الدليل-اللامع ، /المشروع /الجذع ، /المشروع ، /. عند إعادة كتابة عقدة الدليل ، تقوم FSFS دائمًا بتخزين الإصدار الجديد بالكامل. (هذا يختلف عن طريقة تخزين التغييرات في الملفات ، والتي تعتبر بشكل عام اختلافات في بعض الإصدار السابق من نفس الملف.)

إذا/Project/Trunk/sho-all-large-directory/يحتوي على 10000 ملف ، فإن كل ملزمة بـ blah.txt سيقوم بتخزين نسخة كاملة من هذا الدليل (بأسماء 10'000) في مستودعك.

لقد لاحظت هذا عندما بدأت في الحفاظ على السيطرة الشخصية على الإصدار قبل بضع سنوات. لقد كان دليلًا مسطحًا يزيد عن 10000 ملف نص. لاحظت بسرعة أن الالتزامات كانت كبيرة جدا. (لقد تحولت منذ ذلك الحين إلى GIT لهذه المهمة ، لهذه الأسباب وأسباب أخرى.)

أنظر أيضاhttp://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-up

نصائح أخرى

هناك حل بسيط للغاية. على افتراض أن مستودعك يحتوي على كمية كبيرة من العلامات التاريخية ، يمكنك نقلها إلى /tags-archive وجعل هذا الدليل قراءة فقط. عندما تقوم بإنشاء علامات جديدة تحت /tags لن تحدث مشكلة بعد الآن.

لاحظ أنك تحتاج إلى استخدام عنوان URL إلى تحرك عنوان URL. على سبيل المثال

svn move https://svn.example.com/MyRepo/tags https://svn.example.com/MyRepo/tags-archive -m "Your Log Message"

ساعد هذا الحل في حل المشكلة لمستودع يحتوي على حوالي 350،000 علامة في دليل واحد.

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