350 GB SVN Repo selbst für eine einfachste Aufgabe wie Zweig / Tag mindestens 1 MB Revision erstellt

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

  •  29-09-2019
  •  | 
  •  

Frage

Das alles beginnt, als ich bemerkte, dass meine Repository Größe wird mit einer täglichen Rate von 1 GB erhöht. Ich habe einen einfachen Test. Erstellt eine Niederlassung / Tag eines vorhandenen Ordner, der eine Größe von 35KB hatte. Ich nahm Kenntnis von Revisionsnummer und ging zu $REPO/db/revs/<K-rev>/rev-number/ und überprüft die Größe der Revision. Es war ein Mega-Byte. Das klingt faul. Alle Ideen, was könnte falsch hier sein. Mein Repo ist über 350 GB in der Größe mit etwa 600.000 Revisionen.

P. S. Ich habe bereits damit begonnen, einen Umbau des gesamten Repository zu sehen, ob das einen Unterschied macht, aber es wird wahrscheinlich Tage dauern.

War es hilfreich?

Lösung

Veröffentlicht gleiche Frage users@subversion.sapache.org und bekam diese Antwort von B Smith-Mannschott - die alles erklärt. Ich habe ein Verzeichnis im Pfad haben, der 16000 Ordner enthält - für jede begehen. Vielen Dank Smith-Mannschott für die ausführliche Antwort B zu kommen. Veröffentlichung Antwort hier für die anderen Nutzen.


Hat Ihr Repository ein Verzeichnis mit sehr viele Einträge enthalten? Sind die Änderungen, die die großen Commits werden in oder unterhalb einer solchen produzieren gemacht ein Verzeichnis?

Nehmen wir an, eine einzige Änderung in einer einzigen Datei zu verpflichten, Ihre Repository. Lassen Sie uns weiter die Datei übernehmen befindet sich hier, in Ihrem Repository:

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

Wenn Sie die Änderung blah.txt begehen, wird die neue umzuschreiben die Verzeichnisknoten zwischen ‚blah.txt‘ und der Wurzel des Repository: / Projekt / trunk / some-wirklich-large-Verzeichnis / Notizen, / Projekt / trunk / some-wirklich-large-Verzeichnis / Projekt / trunk, / Projekt, /. Wenn ein Verzeichnisknoten Umschreiben, speichert FSFS immer die neue Version in seiner Gänze. (Dies unterscheidet sich von der Art und Weise Änderungen an Dateien sind gespeichert, die allgemein als Unterschiede zu einigen früheren Version sind die gleiche Datei.)

Wenn / Projekt / trunk / some-wirklich-large-Verzeichnis / enthält, sagt 10000 Dateien, dann verpflichten jeweils blah.txt eine vollständige Kopie dieses speichert Verzeichnis (mit seinen 10'000 Namen) im Repository.

Das merkte ich, als ich begann eine persönliche Wiki unter Version halten vor ein paar Jahren kontrollieren. Es war ein flaches Verzeichnis von über 10'000 Text Dateien. Ich habe schnell gemerkt, dass Commits ziemlich groß war. (Ich habe seit für diese Aufgabe zu git geschaltet, für diesen und anderen Gründen).

siehe auch http: //svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-up

Andere Tipps

Es gibt eine sehr einfache Lösung. Unter der Annahme, dass das Repository eine riesige Menge an historischen Tags enthält, können Sie sie bewegen dieses Verzeichnis Read Only /tags-archive und machen. Wenn Sie neue Tags unter /tags erstellen wird es ein Problem auftreten, wird nicht mehr.

Beachten Sie, dass Sie die URL zu URL bewegen verwenden müssen. Z.

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

Diese Lösung geholfen, das Problem für ein Endlager zu lösen, die etwa 350.000 Tags in einem einzigen Verzeichnis enthalten ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top