SQLite WAL-Leistungsverbesserung

Ich habe eine Anwendung auf Embedded Linux. Ich habe eine vorgefertigte Datenbank mit einigen Tabellen, in denen jede viele Zeilen (Tausende) und 52 Spalten enthält. Ich habe die Datenbank im Voraus erstellt, weil ich mir Sorgen mache, wenn ich zur Laufzeit 'INSERT' mache, werde ich die Festplatte fragmentieren. Stattdessen erst eine Datenbank mit viel Müll 'INSERT's' und zur Laufzeit erstellen Ich benutze 'UPDATE's.

Ich schreibe alle 3 Sekunden eine Menge Daten in die Datenbank. Um einen schnellen Schreibvorgang zu gewährleisten, verwende ich den WAL-Modus in SQLite. Ich habe jedoch ein Leistungsproblem. Wann immer ein Checkpoint auftritt, dauert es anscheinend zu lange und der Prozessor schafft es nicht in weniger als 3 Sekunden. Um dies zu verbessern, habe ich einen Thread erstellt, der nach etwa 10 schreibenden Aufrufen eine Nachrichtenwarteschlange vom Haupt-Thread erhält und dann Checkpointing durchführt.

Es sieht also so aus, als wäre die Situation besser, aber die WAL-Datei wird immer größer und größer ... Wie kann ich hier umgehen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage