LocalDb (SQL Server) vs Db4Objects – Performance

Der folgende Post lässt eine objektorientierte DB (vertreten durch Db4Objects) gegen eine relationale DB (LocalDb) antreten.

Die Daten werden durch die Klasse “Person” repräsentiert.
Sie hat keine Beziehungen. Die Attribute “Firstname” und “Lastname” werden mit einem zufälligen String (immer derselben Länge) befüllt.
Id ist eine fortlaufende Nummer.

Messungen
Die Zeit ist im Format h:mm:ss,ms angegeben.

  • Write: Alle Daten werden in die Datenbank geschrieben
  • Search: Es wird eine Suche nach einem (nicht vorhanden) Firstname gesucht
  • Read: Alle Daten werden gelesen
  • Size: Die Grösse (Byte) des Datenbank Files

Der Code kann hier heruntergeladen werden.

Db4Obj ohne Index

Count Write Search Read Size:
1 0:00:00,2766866 0:00:00,0926416 0:00:00,0542263 2004
10 0:00:00,0630409 0:00:00,0493961 0:00:00,0489822 2716
100 0:00:00,0758578 0:00:00,0474336 0:00:00,0674975 9736
1’000 0:00:00,0989539 0:00:00,0489845 0:00:00,0674975 94552
10’000 0:00:00,3767558 0:00:00,1375684 0:00:00,2107468 914709
100’000 0:00:04,1002942 0:00:00,9162394 0:00:02,2182488 10361781
1’000’000 0:00:45,1474648 0:00:08,8411672 0:00:29,299794 103710689

Db4Obj mit Index über Firstname

Count Write Search Read Filesize
1 0:00:00,2516671 0:00:00,1206857 0:00:00,0849104 2234
10 0:00:00,0698322 0:00:00,0964174 0:00:00,073208 2889
100 0:00:00,088821 0:00:00,0493498 0:00:00,0516119 11070
1’000 0:00:00,1046793 0:00:00,0514473 0:00:00,072989 110849
10’000 0:00:00,4743861 0:00:00,0519616 0:00:00,2595576 1096295
100’000 0:00:05,2705423 0:00:00,0623769 0:00:02,3931587 12214414
1’000’000 0:01:16,1957974 0:00:00,1158708 0:00:33,6506017 122262113

LocalDb (gleiche Resultate auf SQL Express)
Hinweis: Mit Linq-2-Sql

Count Write Search Read Filesize
1 0:00:00,0074054 0:00:00,0083223 0:00:00,0063696 4194304
10 0:00:00,0342301 0:00:00,005793 0:00:00,0054368 4194304
100 0:00:00,3158096 0:00:00,0058344 0:00:00,0052122 4194304
1’000 0:00:03,196444 0:00:00,0040695 0:00:00,0043246 4194304
10’000 0:00:32,0548376 0:00:00,0091779 0:00:00,0162657 4194304
100’000 0:05:23,6816568 0:00:00,4693613 0:00:00,1180606 6291456
1’000’000 1:00:32,235 0:00:00,2278069 0:00:05,3492533 32505856

LocalDb (gleiche Resultate auf SQL Express)
Hinweis: Mit eigenem Sql (immer 1000 Records pro Insert)

Count Write
1 0:00:00,0070273
10 0:00:00,0039312
100 0:00:00,0060903
1’000 0:00:00,7149703
10’000 0:00:05,6108428
100’000 0:00:58,9830222
1’000’000 0:14:03,5821326

Die folgenden Diagramme vergleichen die jeweiligen Werte.
Die Achsen sind mit Log Basis 10 aufgetragen.

Db4Obj Diagrams

 

Leave a Reply

Your email address will not be published. Required fields are marked *