# Live Coding: Entdeckung von DuckDB am Donnerstag, den 20. Juni um 10 Uhr!

**URL:** <https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979>\
**Category:** Actualités\
**Created:** [19. Juni 2024 um 16:24 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979 "2024-06-19T16:24:50Z")\
**Posts on this page:** 9\
**Page:** 4

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [16. August 2024 um 12:20 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/61 "2024-08-16T12:20:27Z")

</div>

> [@Terdious](#):
>
> EDIT: Bon bah j’ai ma réponse 😅 une fois que les états SQLite sont tombés à 0 tout est revenu

Normalerweise hast du auch ohne Löschung Zugriff auf die Diagramme, aber ich denke, dass Gladys hier mit der Löschung beschäftigt war und dein System dadurch etwas blockiert war

> [@Terdious](#):
>
> Je ne touche à rien pour le moment (pas de nettoyage de la DB) ?

Wenn du keine Zustände mehr in SQLite hast, denke ich, dass du die Datenbank bereinigen und Gladys neu starten kannst 🙂

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [16. August 2024 um 12:29 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/62 "2024-08-16T12:29:15Z")

</div>

> [@pierre-gilles](#):
>
> Normalerweise hast du auch ohne Löschung Zugriff auf die Diagramme, aber ich denke, dass Gladys hier mit dem Löschen beschäftigt war und dein System etwas blockiert hat

Also, um sehr präzise zu sein, bis vor etwa 2 Stunden (also denke ich, bis er die Daten dieser Sensoren gelöscht hat, hatte ich die Anzeige auf den Kurven, aber ohne neue Daten, da die Kurven bei gestern 10:xx aufgehört haben, also der Zeit, als ich auf das neue Image umgestiegen bin.

Ich bin mir also ziemlich sicher, dass ich bis zum Löschen auf den Daten der SQLite-DB geblieben bin. Die neuen Daten wurden tatsächlich in DuckDB geschrieben, da die Anzahl der Zustände zunahm.

> [@pierre-gilles](#):
>
> Wenn du keine Zustände mehr in SQLite hast, denke ich, dass du die DB bereinigen und Gladys neu starten kannst 🙂

Oki, dann mache ich mich mal ran ^^

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [16. August 2024 um 12:33 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/63 "2024-08-16T12:33:04Z")

</div>

> [@Terdious](#):
>
> Ich bin mir also ziemlich sicher, dass ich bis zur Löschung auf die Datenbankdaten von SQLite geblieben bin.

Nein, das ist unmöglich, der SQLite-Code wurde entfernt, er ist nicht in der duckDB-Image enthalten. Du hattest vielleicht einen Cache-Anzeige, aber das kam nicht von deiner Datenbank.

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [16. August 2024 um 14:51 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/64 "2024-08-16T14:51:06Z")

</div>

Ergebnisse der Migration für meine Installation (80 Millionen Zustände):

- Migration =\> 3h30,
- Löschung =\>
  - 23h für das Löschen der SQLite-Zustände
  - immer noch in Bearbeitung (74% in 25h30)

- Datenbankbereinigung (Vacuum) =\> 24 Minuten  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/8/1/81c77b79a37a596296a8f8df422834b361f914dc.png)

SQLite-Datenbank vor der Bereinigung: 47,7 GB  
DuckDB-Datenbank nach der Migration: 410 MB  
SQLite-Datenbank nach der Bereinigung: 13,7 GB  
Gewinn: 47,7 - (13,7 + 0,41) = 33,6 GB (70% ^^) 😅

Vielen Dank an @pierre-gilles für diesen schnellen Übergang!!

Probleme: Meine Kurven sind momentan unterbrochen (Cache vielleicht?)  
Letzte 24 Stunden:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/f/2/f26691d0101816257cd174c75f9a8067ad713612.png)  
Letzte Stunde:  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/3/4/344e43fcbdb5d45def1a7b86aaff249b377d7fdb.png)

Als ob die Zustandsrückmeldungen verpasst wurden (obwohl sich DuckDB im Systemzähler korrekt inkrementiert hat)

Außerdem gibt es etwas, das mir vorher nicht wie ein Problem vorkam: Ich habe einen Wert „Mustergeschwindigkeit“, der den letzten empfangenen Wert aus dem MQTT-Netzwerk (von einem beliebigen Topic) übernimmt

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/f/d/fd86a9af7063d2abe8eb273f82258f6fcd30e7e1.png)  
Dabei gibt es keinen Wert, der auf diesem Topic (xxxxx:speed) erscheint  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/5/b/5bf41593bfe5c70fcdad825c8055e2685ff1885f.png)

Aber das könnte auch nicht zusammenhängen. Ich weiß nur, dass es vor meinem Urlaub funktioniert hat ^^

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [16. August 2024 um 15:21 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/65 "2024-08-16T15:21:07Z")

</div>

> [@Terdious](#):
>
> DB SQLite nach der Reinigung: 13,7 GB

Mich wundert, dass es so groß ist… Hast du wirklich 0 Zustände in SQLite? Hast du Gladys nach der DB-Reinigung neu gestartet?

Normalerweise sollte die DB wieder sehr klein sein (maximal ein paar MB).

Führe einen weiteren Löschvorgang durch, sonst ^^ Vielleicht sind noch Daten in der Tabelle aggregate

> [@Terdious](#):
>
> Als ob er die Statusrückmeldungen verpasst hätte (während DuckDB den Systemzähler korrekt inkrementiert hat)

In deinem Fall, angesichts der Größe deiner DB und der Langsamkeit des Löschvorgangs, hat Gladys möglicherweise einige Zustände verpasst, weil das System mit der Reinigung beschäftigt war.. Leider ist das verloren, du wirst Lücken in diesen Zeiträumen haben.

> [@Terdious](#):
>
> Aber das könnte auch nicht zusammenhängen.

Ich würde mich wundern, wenn das zusammenhängt, aber wenn du mehr Infos hast, zögere nicht

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [16. August 2024 um 15:54 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/66 "2024-08-16T15:54:56Z")

</div>

> [@pierre-gilles](#):
>
> Es wundert mich, dass es so schwer ist… Hast du wirklich 0 Zustände in SQLite? Hast du Gladys nach der Datenbankbereinigung neu gestartet?
> 
> Normalerweise solltest du auf eine winzige Datenbank zurückkommen (maximal ein paar MB).
> 
> Führe einen weiteren Löschvorgang durch, falls nötig ^^ Vielleicht sind noch Daten in der Tabelle aggregate übrig

Auch wenn ich das schon super finde (^^), ja, es wundert mich auch ^^ wie ich dir vorhin gesagt habe, ja, ich habe wirklich 0 Zustände in SQLite im Systemtab. Aber die Löschaufgabe war noch im Gange:

> [@Terdious](#):
>
> - Löschvorgang =\>
> - 23 Stunden für das Löschen der SQLite-Zustände
> - immer noch in Wartestellung für die Aufgabe (74% in 25 Stunden 30 Minuten)
> - Datenbankbereinigung (Vacuum) =\> 24 Minuten
> 
> ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/8/1/81c77b79a37a596296a8f8df422834b361f914dc.png)

Ich warte, bis sie abgeschlossen ist, um neu zu starten. Ich werde danach erneut einen Löschvorgang und eine Bereinigung durchführen.  
Die Datenbankbereinigung schien mir auch im Vergleich zum letzten Mal, als ich sie durchgeführt habe, sehr schnell, sodass die Datenbank viel leichter war.

Ich werde auch den Browser-Cache leeren.

Ich werde danach einen neuen Bericht machen.

> [@pierre-gilles](#):
>
> In deinem Fall, angesichts der Größe deiner Datenbank und der Langsamkeit des Löschvorgangs, hat Gladys möglicherweise einige Zustände verpasst, da das System „beschäftigt“ war, um zu bereinigen… Leider sind sie verloren, du wirst eine Lücke in diesen Perioden haben.

Wenn es nur das ist, ist das nicht schlimm ^^ Ich hatte nur Angst, dass alle Histos gelöscht werden ^^

---

<div class="post-metadata">

**Author:** ![GBoulvin](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/gboulvin/32/10006_2.png) [@GBoulvin](https://community.gladysassistant.com/u/GBoulvin)\
**Post date:** [16. August 2024 um 16:09 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/67 "2024-08-16T16:09:36Z")

</div>

Warte wirklich, bis die Bereinigung abgeschlossen ist, und führe dann dein Vacuum durch. Bei mir musste ich den gesamten Vorgang (nach einem Neustart von Gladys) wiederholen, damit alle Aufgaben vollständig erledigt wurden…

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [16. August 2024 um 23:32 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/68 "2024-08-16T23:32:34Z")

</div>

> [@pierre-gilles](#):
>
> Es wundert mich, dass es so schwer ist… Hast du wirklich 0 Zustände in SQLite? Hast du Gladys nach der DB-Reinigung neu gestartet?
> 
> Normalerweise solltest du wieder auf eine winzige DB zurückkommen (maximal ein paar MB).
> 
> Führe noch einmal eine Bereinigung durch, falls nötig ^^ Vielleicht gibt es noch Daten in der Tabelle aggregate

Ok ok … ich bin sprachlos … ^^ Ich wiederhole, für 80 Millionen Zustände:

- Migration =\> 3h30,
- Vollständige Bereinigung =\> 32h
  - 23h für das Löschen der SQLite-Zustände,

- DB-Reinigung in zwei Schritten (Vacuum) =\> 34 Minuten
  - erste 24 Minuten
  - zweite 10 Minuten  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/e/e/eea5ef9ebb6224b51e36a3db21ccff9f0d74109f.png)

SQLite-DB vor der Reinigung: 47,7 GB  
DuckDB-DB nach der Migration: 410 MB  
SQLite-DB nach der Reinigung: ~~1,1 GB~~ =\> 27 MB nach der Reinigung der Tabelle `t_message`  
~~Gewinn: 47,7 - (1,1 + 0,41) = 46,2 GB, also - 97% ^^ 😅~~  
Also, ich muss mich korrigieren, es ist so schnell, die DB jetzt wiederherzustellen, dass ich nachgesehen habe, was mir 1 GB in SQLite einnimmt, und es stellt sich heraus, dass ich 3 Millionen Zeilen in der Tabelle `t_message` hatte, die den Text ‹&nbsp;Test Licht Auto an/aus&nbsp;› enthielt.  
Ich habe alles gelöscht (man sollte vielleicht daran denken, eine Option zum Reinigen dieses Teils hinzuzufügen, denn in meinem Fall muss es eine Szene gewesen sein, die ich falsch gemacht habe …):  
Gewinn: 47,7 - (0,03 + 0,41) = 47,26 GB, also - 99% ^^ 😅

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/c/f/cfa3577bf646a1baed52b4e247f599788419236b.png)

DB-Backup vor der Migration: 12,28 GB  
DB-Backup nach der Migration: ~~694 MB~~ =\> 408 MB nach der Reinigung der Tabelle `t_message`  
~~Gewinn: 12,28 - 0,694 = 11,586 GB, also - 94% ^^~~  
Gewinn: 12,28 - 0,408 = 11,872 GB, also - 97% ^^

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/5/d/5d81c43663d5bb9c1d802716c46af716bb59f5a3.png)

Gut gemacht @pierre-gilles😍

Speicherproblem gelöst!

Und wie du sagtest, Anzeige der Kurven ist sofort möglich, sei es in 24h, in 1h oder in einer Mischung von Zeiträumen. Jetzt bleibt nur noch, sich auf die PRs zu stürzen, die gerade für die erweiterten Visualisierungen der Kurven laufen. Beeindruckend!  
Übrigens, auf 11 Dashboard-Seiten, von denen 4 Seiten 4 bis 8 Kurven mit mehreren Funktionen wie unten enthalten, sind die Anzeigen fast sofort (das war vorher weit entfernt davon):

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/e/4/e4b5b67bdbab945f18f0b7c22dbd3e7212f8a8e5.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/8/c/8c4597ba602b2da9bc406fa5ceac5b91528c3752.png)  
Keine Zeit, das Lade-Icon zu sehen ^^

EDIT (falls das anderen, die einen langsamen Chat haben, Ideen gibt ^^) : Und seit dem Löschen der Zeilen in der Tabelle `t_message` ist die Chat-Anzeige wieder sofort (das habe ich seit Jahren nicht mehr erlebt 🤦‍♂️ 😅)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/8/5/85a2dff60331fc27ed67b4182a5d858cb2967057.png) =\> ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/7/8/781cca5620e2cdb2267126994221654601e09312.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [19. August 2024 um 10:07 UTC](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979/69 "2024-08-19T10:07:31Z")

</div>

Super, danke für den Erfahrungsbericht! Es ist wirklich unglaublich, der Unterschied 🤩

Für den Chat sollten wir täglich eine Löschung der Nachrichten durchführen, um nur die 1000 neuesten zu behalten (ich weiß nicht, ob es sinnvoll ist, mehr zu behalten, wir machen das ja schon bei den Hintergrundaufträgen).

[Vorherige Seite](https://community.gladysassistant.com/t/live-coding-decouverte-de-duckdb-le-jeudi-20-juin-a-10h/8979.md?page=3)
