Ich mache einige Leistungstests zwischen SQL Server 2012 und MongoDB 2.4.9. Ich habe ein wenig online recherchiert und viele Vergleiche gefunden, die nur die Performance zwischen diesen beiden Datenbanken vergleichen. Ich bin nur an select
Leistung ohne Indizes interessiert. Ich habe einen sehr einfachen Test eingerichtet. Hier sind die Spezifikationen
SQL Server-Setup
MongoDB-Konfiguration
Wenn ich die Zahlen eingegeben habe, sind es genau dieselben Zahlen, die in beide Datenbanken gehen. Die Zufallszahlen liegen zwischen 1 und 1000.
SQL Server-Abfrage
%Vor%MongoDB-Abfrage
%Vor%Ergebnisse:
Für mein Schema brauche ich keine Joins und habe nur denormalisierte Daten - deshalb habe ich MongoDB berücksichtigt. Ich habe erwartet, dass mongoDB nach dem online Lesen der Benchmarks um ein Vielfaches schneller ist als SQL Server. Kann ich etwas falsch machen? Auch hier wollte ich ohne Indizes testen.
MongoDB ist in diesem Fall wahrscheinlich fünfmal langsamer, weil es fünfmal mehr Daten lesen und ausgeben muss.
Eine Zeile in Ihrer SQL-Tabelle ist nur 4 Byte. Aber in MongoDB ist es eine 4-Byte-Ganzzahl plus eine 12-Byte-Objekt-ID. Außerdem sind die Feldnamen Teil jedes einzelnen Dokuments. Die Zeichenfolgen _id
und id1
sind Teil jedes Dokuments, das Sie abrufen, daher werden einige zusätzliche Bytes hinzugefügt.
Und das ist nur die eigentliche Nutzlast. Wenn Sie sich BSONSpec.org ansehen, können Sie sehen, dass Ihr Dokument folgendermaßen dargestellt wird:
0x01
für "Jetzt kommt eine ObjectId" _id
0x10
für "jetzt kommt eine 32bit Ganzzahl" (kleinste Ganzzahl gibt es) id1
0x00
, das das Ende des Dokuments markiert was insgesamt 31 Byte ist.
Tags und Links sql-server c# mongodb sql-server-2012