SQLite Connection - zu viel RAM benötigt

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,

    ich hab momentan ein kleines Problem mit der SQLite-Datenbank in Verbindung mit Java.

    Durch diese Zeile:
    Connection connection = DriverManager.getConnection("jdbc:sqlite:MyDatabase");

    belegt das Programm einfach mal >150MB RAM. Ich hab mir mal SQLite für Windows runtergeladen und da gibt es das Problem nicht. Ich kann mir auch nicht vorstellen woher das kommen kann.

    Ich nutze das auf dem BS Raspbian vorinstallierte Java (1.7.0_40) und sqlite3 und die .db sind auf meinen USB-Stick den ich beim PI als "Festplatte" nutze.

    mfg

    Einmal editiert, zuletzt von DrDeleber (8. April 2014 um 07:30)

    • Offizieller Beitrag

    Hey DrDeleber,

    ich glaube dein Connection String ist ein wenig fehlerhaft ;)
    "jdbc:sqlite:MyDatabase" Wenn ich das richtig im Kopf habe dann wird bei dir die Datenbank im Speicher erstellt (was dann die 150mb erklären könnte).
    Im String muss halt (am besten) ein absoluter Pfad stehen um eine File Datenbank zu nutzen.

    vielleicht hilft dir das schon weiter ;)

    gruß Turael

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

  • Oh, sry.

    Ich hatte DriverManager.getConnection("jdbc:sqlite:MyDatabase.db"); da stehen.
    Ich hoffe auch, dass er nur was im Speicher erstellt bzw. was am Connection String nicht stimmt oder fehlt.

    Ich hatte es auch mit absoluten Pfadangaben versucht zB. jdbc:sqlite:/Festplatte/MyDatabase.db. Ich gehe mal davon aus, dass dies eine korrekte absolute Pfadangabe ist?


    Bei folgenden Szenarien macht er folgendes:
    -jdbc:sqlite:MyDatabase.db
    CPU auf 100% > dauert ca. 8 Sekunden bis er die + 150MB erreicht > CPU runter

    -jdbc:sqlite:/Festplatte/MyDatabase.db
    CPU auf 100% > dauert ca. 8 Sekunden bis er die + 150MB erreicht > CPU runter

    -jdbc:sqlite:/blablalba/MyDatabase.db
    blablabla does not exist

    -jdbc:sqlite:/Festplatte/MyDatabaseeeeeeee.db
    CPU auf 100% > dauert ca. 8 Sekunden bis er die +150MB erreicht > SQL error or mising database und CPU runter

    Unter Windows ist das Verhalten mit den 150MB nicht zu beobachten, dass wundert mich etwas. Weiterhin wundert es mich auch, dass er sich gleich mal 150MB schnappt egal ob überhaupt Tabellen in der Datenbank sind bzw. die .db überhaupt existiert.

    Zur Info: -sqlite habe ich über apt-get install sqlite3 (Wie im Forum beschrieben) und für die Connection nutze ich sqlite-jdbc-3.7.2.jar

    mfg

  • Hi,

    ich muss den Thread mal aus der Versenkung holen da hier noch keine Antwort gefunden wurde.

    Ich arbeite z.Zt. auch mit SQLite und Java auf dem Pi. Dabei tritt eben das Problem des Thread-Erstellers auf - allerdings nur beim ersten DB-Zugriff nach Programmstart. Dieser dauert dann bis zu 30 Sekunden. Alle weiteren Zugriff erfolgen dann im Bereich 100...500ms.

    Greife ich direkt übers Terminal und sqlite3 auf eine DB zu, funktioniert alles zügig wie man es eigentlich erwartet.

    Vielleicht hat inzwischen jemand eine Idee wie dieses Problem zu lösen oder alternativ zu umgehen ist. Ich würde nur ungern auf ein anderes DB-System wechseln.

    mfg

    Ormilig

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!