❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Beitrag von Freischreiber » 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. :D

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
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Beitrag von Freischreiber » So 6. Aug 2017, 17:10

Hm. Bin jetzt nicht sicher, ob diese Änderung am Makro wirklich zu Memory-Tabellen geführt hat. Oder ob das nicht nur für die Erzeugung neuer Tabellen gilt.

Der Geschwindigkeitszuwachs könnte auch von einem Java-Update herkommen... :?

Weiß jemand, wie man prüfen kann, ob die Tabellen vollständig im Arbeitsspeicher sind oder gecached?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Beitrag von RobertG » So 6. Aug 2017, 19:54

Hallo Freischreiber,

Du hast nur den default-table-type verändert. Das würde in der internen Datenbank auch gehen - allerdings müsset der Nutzer dann in die *.odb-Datei eintauchen und die Datei database/properties mit einem Packprogramm aufsuchen und ändern. In database/script ist dann zu sehen, wie die *.odb-Datei die Dateien als cached-Dateien anlegt: CREATE CACHED TABLE "Tabellenname" ...

Wenn also in Extras > SQL nur CREATE TABLE "Tabellenname" ... angegeben wird, dann wird der Defaultwert "CACHED" genommen. Du musst also explizit CREATE MEMORY TABLE "Tabellenname" ... angeben, damit daraus eine MEMORY-Tabelle wird.

Ich sehe gerade, dass ich den Default-Wert im Handbuch falsch stehen habe. Widerspricht dem Auszug aus database/properties und database/script. Wird natürlich sofort in der Überarbeitung geändert.

Ich weiß nicht, ob es für Memory-Tabellen irgendwo eine Begrenzung gibt. Ich habe mich bei einer MySQL-Datenbank vor kurzem damit auseinandersetzen müssen, wie ich bei einer Memory-Tabelle die Begrenzung hoch setzen kann, da sich MySQL sonst weigerte, die Tabelle überhaupt zu erstellen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Beitrag von Freischreiber » Mo 7. Aug 2017, 08:54

Hallo Robert,

ja, inzwischen habe ich gefunden, wie man bestehende Tabellen ändern kann:
https://stackoverflow.com/questions/591 ... sqldb?rq=1
Also bei der externen HSQL-DB 2.x mit

Code: Alles auswählen

SET TABLE "mytable" TYPE MEMORY
In der properties-Datei steht bei der 2.x-Version nichts vom Standard-Tabellentyp, das wird offenbar nur über den aufrufenden Link gemacht, wie im Makro.

In der internen 1.8-DB kann man die script-Datei anscheinend direkt editieren, um von cached auf memory zu stellen. Wenn ich das bei der 2.x-script-Datei mache, erhalte ich Fehlermeldungen wegen Indexeinträgen. Also nehme ich das SQL-Kommando.

Eine Begrenzung gibt es wahrscheinlich durch die Hardware oder das Betriebssystem. Bei Windows müßte außerdem, sobald der Arbeitsspeicher überschritten ist, die Auslagerungsdatei das RAM erweitern. Das lasse ich mal auf mich zukommen.

Gruß und vielen Dank
Freischreiber
Zuletzt geändert von Freischreiber am Mo 7. Aug 2017, 16:48, insgesamt 1-mal geändert.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Erfahrungsbericht: HSQL-DB mit Memory-Tables statt Cached Tables

Beitrag von Freischreiber » Mo 7. Aug 2017, 16:48

So, ich trau mich heute was.
- alle Tabellen auf memory gestellt
- .data-Datei gelöscht, da die nur Daten für gecachete Tabellen enthält - die ich nicht mehr habe.

Sämtliche Dateibankinhalte sind in der .script-Datei gespeichert. Jetzt verstehe ich auch, warum sich die .data-Datei in der Größe nie geändert hatte über die Zeit. Die war immer nur der Cache für die Tabelleninhalte, die komplett in der .script-Datei stehen.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten