2017-05-04 1 views
2

Nun, da H2 1.4 nicht mehr in der Betaversion ist, möchte ich meine alte 1.3.175-Datenbank nach 1.4.195 migrieren.Was ist die empfohlene Migration von H2 1.3.175 auf 1.4.195?

Hintergrundinfo:

  • In der Dokumentation, database upgrade nicht 1.4 noch erwähnen.
  • Die roadmap listet immer noch "Automatische Migration von 1.3-Datenbanken auf 1.4." als "geplante Änderung".
  • Die current state von MVStore wird immer noch als "experimentell" bezeichnet.

Also, was ist die empfohlene Art zu migrieren?

Zusätzliche Aspekte/Bonus Fragen:

Soll ich ermöglichen MVStore oder Stick mit Pagestor (Vor/Nachteile)? Welcher liefert bessere Performance (Multithreading ist für mich nicht wichtig), welche bessere Stabilität, vor allem Belastbarkeit gegen OutOfMemoryErrors?

Antwort

4

Eine mit 1.3.175 erstellte Datenbank kann ohne zusätzliche Arbeit mit 1.4.195 gelesen und geöffnet werden. H2 erkennt automatisch, dass es den Page Store verwendet und behandelt ihn so. Es wird keine Probleme damit geben.

Der Vorteil dabei ist, dass der PageStore während der Entwicklung des MVStore weiterhin Leistungsverbesserungen und Fehlerbehebungen erhielt. Folglich ist H2 mit dem Page Store zu einem extrem stabilen Datenbankspeicher geworden.

Es gibt noch kein automatisches Upgrade-Verfahren zum Konvertieren einer Datenbank von der Verwendung des Page Store zur Verwendung des MVStore. Wenn Sie dies tun möchten, müssen Sie dies manuell tun. Mit dem neuesten H2-Jar verwenden Sie den Befehl SCRIPT von H2, um SQL aus Ihrer 1.3-Datenbank zu exportieren. Verwenden Sie dann RUNSCRIPT in einer neu erstellten Datenbank mit 1.4.195.

Wenn Ihre H2 JDBC-URL ;mv_store=false nicht explizit angibt, beachten Sie, dass H2 zuerst nachsehen wird, ob bereits eine Seitenspeicher-Datenbank vorhanden ist. Ist dies nicht der Fall, wird eine MVStore-Datenbank erstellt. Dies erscheint nahtlos für Sie, Ihre App und Ihre Nutzer. Der einzige oberflächliche Unterschied, den Sie feststellen werden, ist, dass die Datenbankdatei auf der Festplatte eine andere Dateierweiterung hat.

Schließlich ein Vorschlag. Wenn Ihre Kundendatenbanken groß sind, sollten Sie nur den Seitenspeicher verwenden. Ich bin ein starker Nutzer von H2. (Mein kommerzielles Produkt, das auf H2 basiert, hat tausende von Benutzern, die typischerweise Datenbanken mit einer Größe von vielen Gigabyte haben.) Ich benutze immer noch den Page Store für alle meine Kunden, obwohl ich das neueste H2 Jar verwende. Es gibt immer noch einige Leistungsprobleme mit dem MVStore, die zu erscheinen beginnen, wenn Datenbanken groß werden. Mit der Zeit erwarte ich, dass die Ursache der Probleme identifiziert und behoben wird.

+0

Ich frage mich - wenn ich bei PageStore bleibe, muss ich die Datenbank dumpen und wiederherstellen, wie es oft im H2-Kontext empfohlen wird, wenn ich von 1.x auf 1.y aufrüste? – hendrik

+1

@hendrik, zwischen 1.3.175 und 1.4.191 müssen Sie nicht dump und erholen. Der Hinweis, den Sie lesen, ist wichtiger für den Übergang von 1.1 oder 1.2. –

+0

Unterstützt der PageStore MVCC in Version 1.4? Und ist Multithreading aktiviert? Unsere erste Beobachtung zeigt, dass Multithreading nicht aktiviert ist. Wir möchten MVCC und Multi-Threading BOTH aktiviert haben, also denke ich, wenn wir von 1.3 auf 1.4 migrieren, müssen wir den H2 SCRIPT Befehl manuell verwenden? –

Verwandte Themen