Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2004  »  09  »  Datenspeicher für Sparsame  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Performance

Auf der Homepage gibt der SQLite-Autor an, dass seine Datenbank bei den "üblichen Operationen" doppelt so schnell wie PostgreSQL oder MySQL sei, und liefert auch die Daten seines Benchmark-Tests. Solche Benchmarks sind mit Vorsicht zu genießen, weil sich je nach Auswahl der Testfälle und des darauf zugeschnittenen Tunings fast jedes gewünschte Ergebnis produzieren lässt. Um seine Behauptung zu überprüfen, waren einige Messungen mit SQLite, PostgreSQL ("The world\'s most advanced Open-Source Database") und MySQL ("The world\'s most popular Open-Source Database") nötig.

Bei allen Tests griff nur das Testprogramm auf die Datenbank zu, bei PostgreSQL und MySQL über Unix-Domain-Sockets, um eventuellen Netzwerk-Overhead zu vermeiden. Bei allen Datenbanken blieb die Default-Konfiguration erhalten, wobei bei MySQL der Tabellentyp »InnoDB« zum Einsatz kam, da sonst wichtige Datenbankfunktionen nicht verfügbar sind. Der C++-Code der Testprogramme liegt auf dem Server des Linux-Magazins[6].

Die in Tabelle 2 dargestellten Ergebnisse zeigen ein differenzierteres Bild als die SQLite-Homepage:

  • Bei Abfragen, die nur eine einzige Tabelle betreffen, ist
    SQLite tatsächlich schneller.
  • Bei komplexeren Abfragen über mehrere Tabellen kann SQLite
    jedoch auch deutlich langsamer sein. Bei Abfrage 3 war SQLite sogar
    unbenutzbar langsam, was aber durch Indizes auf allen
    Fremdschlüsselfeldern behebbar war. Doch auch mit Indizes war
    SQLite noch langsamer als PostgreSQL (Abfrage 4).

Im Vergleich von PostgreSQL und MySQL ergeben sich keine extremen Ausreißer wie bei SQLite, aber es gibt doch zwei interessante Beobachtungen:

  • Bei MySQL führen die Indizes kurioserweise zur
    Verlangsamung der Abfragen. Das kann daran liegen, dass bei diesen
    Abfragen so viele Daten gelesen werden müssen, dass sowieso
    ein Tablescan nötig wird und die Indexzugriffe nur
    zusätzlicher Overhead sind.
  • Die Inserts bei PostgreSQL dauern länger, was wohl an MVCC
    (Multi Version Concurrency Control) liegt. Das ist ein modernes
    Verfahren zur Transaktionsisolation, das aufwändiger zu
    implementieren ist als klassische Sperrverfahren, aber im
    Mehrbenutzerbetrieb höhere Parallelität
    ermöglicht.

Die Insert-Geschwindigkeit von SQLite verhält sich so, wie in Abbildung 2 dargestellt: Bei einer neu angelegten Datenbankdatei sind die Inserts deutlich schneller als bei einer bereits verwendeten, aber leeren Datei (nach jedem Test wurden alle Tabellen wieder gelöscht). Nach einer Einschwingphase stellt sich ein stabiler Wert ein, der die Grundlage für Tabelle 2 ist.


Abbildung 2: Die Insert-Geschwindigkeit von SQLite hängt davon ab, wie oft die Tabellen bereits gelöscht und wieder angelegt wurden.

Tabelle 2:
Laufzeiten im Vergleich

 

Nr.

Beschreibung

Laufzeit SQLite 2.8.13

Laufzeit PostgreSQL 7.3.4

Laufzeit MySQL 4.0.20

1

110100 Inserts mit 12 Commits

54,6547 s (siehe Text)

55,1268 s

30,5562 s

2

»SELECT MAX()« auf 100000 Tupel

0,1259 s

0,2763 s

1,3934 s

3

3-Tabellen-Join ohne Indizes

1104,7357 s

0,1357 s

0,4055 s

4

3-Tabellen-Join mit Indizes

0,5690 s

0,1905 s

1,8336 s

5

Gruppieren einer Tabelle ohne Index

0,3644 s

1,6467 s

0,6772 s

6

Gruppieren einer Tabelle mit Index

0,3627 s

0,7406 s

1,2660 s

7

Gruppieren zweier Tabellen ohne Index

1,2646 s

3,5776 s

0,9119 s

8

Gruppieren zweier Tabellen mit Index

1,2659 s

2,4646 s

2,0457 s

9

Anlegen zweier Indizes für Join-Felder

4,8363 s

0,1905 s (inkl. »ANALYZE«)

7,3118 s

Fazit

Die Testergebnisse sollte niemand überbewerten. Sie bestätigen vor allem die Erkenntnis, dass durch geschickte Auswahl der Testabfragen jede Datenbank als die schnellste erscheinen kann. SQLite ist eine attraktive Möglichkeit, Anwendungen mit einer schlanken Datenspeicherkomponente zu versehen. Die SQL-Schnittstelle bietet eine Flexibilität, die mit selbst gestrickten Dateiformaten nur schwer erreichbar ist.

Anders als bei den bekannteren kommerziellen Desktop-Datenbanken Paradox oder Access ist keine weitere Konfiguration auf dem Zielsystem erforderlich. Eine mit der SQLite-Library gelinkte Anwendung ist ohne weiteres Zutun lauffähig. Das Einsatzgebiet reicht von Embedded-Systemen über Desktop-Anwendungen bis hin zu Tests für komplexere Client-Server-Anwendungen. Die Vielfalt an Skriptsprachen-Interfaces macht SQLite auch für jene Programmierer interessant, die mit C auf dem Kriegsfuß stehen. (ofr)

Infos

[1] SQLite-Homepage: [http://www.sqlite.org/]

[2] Programmiersprachen für SQLite: [http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers]

[3] Ulrich Wolf, "SQL kurz gefasst": [http://www.linux-magazin.de/Artikel/ausgabe/2001/04/sql/sql.html]

[4] SQLite-ODBC-Treiber: [http://www.ch-werner.de/sqliteodbc/]

[5] Date, Darwen, " SQL - Der Standard": Addison-Wesley 1998

[6] Testprogramme zum Artikel: [http://www.linux-magazin.de/Service/Listing s/2004/09/SQLite]

Der Autor

Christoph Dalitz lehrt an der Fachhochschule Niederrhein in Krefeld unter anderem das Fach Datenbanksysteme. Dabei kommt im Praktikum nicht SQLite zum Einsatz, sondern PostgreSQL.

Copyright © 2002 Linux New Media AG

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Andockmanöver Open Office zapft externe Datenbanken an
Sprachtalent Eva/3 UDC konvertiert mehr als ein Dutzend Datenbanken
Viel Holz für den Rahmen PHP-Frameworks im Überblick
Objekte statt Tabellen Datenbankanwendungen mit SQL Object
Datenmaler Grafischer Datenbankentwurf mit Dbwrench
Der Türenöffner Realbasic portiert Visual-Basic-Projekte nach Linux
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)