2014-10-07 10 views
6

In meiner Anwendung verbinde ich mich mit einer H2-Datenbank und ich habe kürzlich untersucht, wie diese Datenbank heruntergefahren wird.Herunterfahren der H2-Datenbank; Compact vs Defrag?

In meiner Verbindungszeichenfolge Ich habe DEFRAG_ALWAYS=true, die eingestellt nach H2 doc

Jedes Mal, wenn die Datenbank geschlossen ist, wird es vollständig defragmentiert (SHUTDOWN DEFRAG).

Nun Ich gehe davon aus, dass, wenn die JVM wird heruntergefahren, wird der Shutdown-Hook dann Herunterfahren der Datenbank und defragmentieren es (als ob SHUTDOWN DEFRAG ausgeführt wird).

Aber wenn ich SHUTDOWN COMPACT vor dem Beenden der Anwendung ausführen würde, während in der Verbindungszeichenfolge DEFRAG_ALWAYS=true angewendet, welcher Abschaltprozess würde verwendet werden?

Antwort

6

Wenn Sie shutdown manuell ausführen, hat dies Vorrang vor der Einstellung (defrag_always=true). Also, wenn Sie shutdown compact ausführen, dann ist dies, was getan wird, und die defrag ist nicht fertig. Wenn Sie shutdown defrag ausführen, ist dies unabhängig von der Einstellung getan. Wenn Sie die Datenbank nur normal schließen, wird die Einstellung defrag_always verwendet.