Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables
Verfasst: So 6. Aug 2017, 15:49
Hallo,
aus Neugier und Ungeduld habe ich meine gesplittete HSQL-DB von gecacheten Tabellen auf reine Memory-Tabellen (Arbeitsspeicher-Tabellen) umgestellt.
Grund war dieser Hinweis auf unterschiedliche Performance: http://www.hsqldb.org/web/hsqlPerformance.html
Datenbanken mit Memory-Tabellen im "in-process"-Modus sind am schnellsten.
Da ich meine DB durch dieses Makro einbinde: https://forum.openoffice.org/en/forum/v ... 80#p293026
(siehe Punkt 3x), mußte ich nur ein Wort in dem Makro ändern:
sURL_args = ";default_schema=true;shutdown=true;hsqldb.default_table_type=memory;get_column_name=false"
(Danach Makro ausführen und Base-Neustart)
Auch diese Memory-Tables sind persistent: http://hsqldb.org/doc/guide/ch01.html#N1023C
Das habe ich ausprobiert durch Schreiben/Ändern von Datensätzen, was die übliche .log-Datei erzeugt hat. Nach Ausschalten des PC und Wiederhochfahren wurde die .log-Datei wie bei Cache-Tabellen auch in die DB eingebunden und die Änderungen waren da.
Der Geschwindigkeitsunterschied ist deutlich. Das Springen in einer geöffneten Tabelle zum letzten Datensatz dauert statt 5-6 Sekunden nur noch unter einer Sekunde. Der Arbeitsspeicher-Verbrauch ist nicht viel höher als bei gecacheten Tabellen, allerdings habe ich nur Tabellen mit einigen tausend Datensätzen. Für terabyte-große Tabellen ist das natürlich nichts.
Ob die Umstellung auf Memory-Tables bei der eingebetteten HSQL-Datenbank, die Libreoffice mitliefert, auch geht, weiß ich nicht.
Gruß
Freischreiber
aus Neugier und Ungeduld habe ich meine gesplittete HSQL-DB von gecacheten Tabellen auf reine Memory-Tabellen (Arbeitsspeicher-Tabellen) umgestellt.
Grund war dieser Hinweis auf unterschiedliche Performance: http://www.hsqldb.org/web/hsqlPerformance.html
Datenbanken mit Memory-Tabellen im "in-process"-Modus sind am schnellsten.

Da ich meine DB durch dieses Makro einbinde: https://forum.openoffice.org/en/forum/v ... 80#p293026
(siehe Punkt 3x), mußte ich nur ein Wort in dem Makro ändern:
sURL_args = ";default_schema=true;shutdown=true;hsqldb.default_table_type=memory;get_column_name=false"
(Danach Makro ausführen und Base-Neustart)
Auch diese Memory-Tables sind persistent: http://hsqldb.org/doc/guide/ch01.html#N1023C
Das habe ich ausprobiert durch Schreiben/Ändern von Datensätzen, was die übliche .log-Datei erzeugt hat. Nach Ausschalten des PC und Wiederhochfahren wurde die .log-Datei wie bei Cache-Tabellen auch in die DB eingebunden und die Änderungen waren da.
Der Geschwindigkeitsunterschied ist deutlich. Das Springen in einer geöffneten Tabelle zum letzten Datensatz dauert statt 5-6 Sekunden nur noch unter einer Sekunde. Der Arbeitsspeicher-Verbrauch ist nicht viel höher als bei gecacheten Tabellen, allerdings habe ich nur Tabellen mit einigen tausend Datensätzen. Für terabyte-große Tabellen ist das natürlich nichts.
Ob die Umstellung auf Memory-Tables bei der eingebetteten HSQL-Datenbank, die Libreoffice mitliefert, auch geht, weiß ich nicht.
Gruß
Freischreiber