BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
Beiträge: 755
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 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

Freischreiber
Beiträge: 755
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 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

RobertG
Beiträge: 2732
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
Beiträge: 755
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 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

Freischreiber
Beiträge: 755
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 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten