Warum ist SQL Server 2012 schneller als MongoDB für diese Abfrage

Ich bin dabei einige performance-tests zwischen SQL Server 2012 und MongoDB 2.4.9. Ich habe getan, ein wenig Forschung online und fand viele Vergleiche, vergleichen Sie nur einfügen Leistung zwischen diesen beiden Datenbanken. Ich bin nur daran interessiert selectLeistung ohne Indizes. Ich setup eine sehr einfache Prüfung. Hier sind die specs

SQL Server-setup

  • Setup-SQL-Server mit nur einem integer-Feld.
  • Einfügen 1 million zufällige Ganzzahlen

MongoDB setup

  • Zwei Felder _id und id1
  • Einfügen 1 million zufällige Ganzzahlen in das Feld id1

Wenn ich eingefügt, die zahlen sind exakt die gleichen zahlen gehen in beide Datenbanken. Die Zufallszahlen im Bereich von 1 bis 1000.

SQL Server-Abfrage

select id from a101 where id > 995

MongoDB-Abfrage

var q = Query.GT("id1", 995);        
foreach (var i in collection.Find(q))
{
     values.Add(i.id1);
}

Ergebnisse:

  • SQL-Server: 192 ms
  • MongoDB: 1109 ms

Für mein schema, werde ich nicht brauchen keine joins und haben nur denormalisierten Daten - das ist der Grund, warum ich als MongoDB. Ich erwartete, mongoDB um ein Vielfaches schneller als die SQL Server nach dem Lesen der benchmarks online. Gibt es etwas, was ich möglicherweise falsch mache? Wieder, ich wollte testen, ohne Indizes.

  • Zu viele Ungleichheiten. Warum ein anderes schema ist?Wie Messen Sie den sql server query? Lesen Sie die Ergebnisse? Welche Art von Werten in der mongo-db-Abfrage? Warum machen Sie eine Schleife durch die Ergebnisse? Etc...
  • Haben Sie Indizes auf den Tabellen?
  • Messe ich beide Abfragen durch Verwendung der StopWatch-Klasse. Es sind nur ganze zahlen in MongoDB (_id: Objekt id1: integer). Ich Schleife durch beide sql server sowie MongoDB. Es gibt nur etwa 600 Ergebnisse aus beiden Abfragen. Denkst du, dass die Schleife wirkt es.
  • Ihre Frage ist zu breit für StackOverflow ... es gibt zu viele Variablen. RAM, Festplatte, CPU, Netzwerk, etc. Und funktioniert die Abfrage tatsächlich etwas darzustellen, das real? Ich würde speichern es auf die Festplatte, und index es in beiden Fällen, wenn ich war besorgt über die tatsächliche best-case-performance. Nachdem Sie es getan haben einige der jüngsten perf Vergleiche mit MongoDB und anderen Optionen ... ist oft nicht der Schnellste oder beste Wahl. Es hängt von vielen Faktoren ab.
  • Ich würde akzeptieren, Ihr argument, aber in meinen tests sql server ist 5 mal schneller als MongoDB. Es muss eine Erklärung warum das so ist. Dies ist auch auf meinem persönlichen Schreibtisch, der nicht mit einem Netzwerk verbunden.
  • Es klingt wie Sie erwarten, dass MongoDB schneller sein? Warum? Auch -- Ihr code tut für Abfragen nicht identisch. Sollten Sie mehr ähnlichen code. Vielleicht mit Hilfe von Linq und das hinzufügen zu einer Liste, wie Sie tun.
  • Gut wollte nicht den Funken einer hitzigen Debatte. Wollte nur wissen, ob jemand kann mich in die richtige Richtung, warum die performance-Lücke ist groß.
  • Und in einem simiar test auf meinem Rechner, MongoDb werden die gefundenen Dokumente in 435ms. Wenn indiziert, 125ms.
  • Sorry, wenn du denkst, das erhitzt wird-ich denke nur, diese ist zu breit, als Sie versuchen, zu vergleichen zwei sehr unterschiedliche DB-Technologien, ohne viel erklären und nicht mit entweder unbedingt, wie es verwendet werden sollte. Der gleiche test auf meinem PC zum Beispiel dauert 2ms wenn Sie fertig sind vollständig im Arbeitsspeicher. 🙂
  • Tatsächlich, für diesen test, die ich wählen, nicht zu verwenden, Indizes. Wir sind hochladen Tausende von csv-Dateien in die Datenbank. Jede csv-Datei hochgeladen werden, auf eine separate Auflistung oder Tabelle. Wir haben nicht die Ressourcen, um index-spezifische Felder. Jede gegebene csv kann von ein paar hundert Datensätze, um ein wenig weniger als eine million. Lassen Sie mich wissen, wenn Sie wissen, wie zu optimieren, MongoDB, ohne Indizes.
  • Ich würde erwarten, dass die performance ändern wird messbar, wenn Sie die tatsächlichen Daten verwenden.

InformationsquelleAutor Luke101 | 2014-03-23
Schreibe einen Kommentar