Frage

Ich habe nosql Optionen erforscht für .NET in letzter Zeit und MongoDB zeichnet sich als klarer Sieger in Bezug auf Verfügbarkeit und Unterstützung, so heute Abend habe ich beschlossen, es zu geben, ein zu gehen. Ich heruntergeladene Version 1.2.4 (Windows x64 binary) von der mongodb Website und lief es mit den folgenden Optionen:

C:\mongodb\bin>mkdir data
C:\mongodb\bin>mongod -dbpath ./data --cpu --quiet

Ich lud dann auf den neuesten mongodb-csharp Treiber von http://github.com/samus/ mongodb-csharp und lief sofort das Benchmark-Programm. Nachdem gehört, wie „erstaunlich schnell“ MongoDB ist, war ich eher an der schlechten Performance der Benchmark Performance schockiert.

Starting Tests
encode (small).........................................320000 00:00:00.0156250
encode (medium)........................................80000 00:00:00.0625000
encode (large).........................................1818 00:00:02.7500000
decode (small).........................................320000 00:00:00.0156250
decode (medium)........................................160000 00:00:00.0312500
decode (large).........................................2370 00:00:02.1093750
insert (small, no index)...............................2176 00:00:02.2968750
insert (medium, no index)..............................2269 00:00:02.2031250
insert (large, no index)...............................778 00:00:06.4218750
insert (small, indexed)................................2051 00:00:02.4375000
insert (medium, indexed)...............................2133 00:00:02.3437500
insert (large, indexed)................................835 00:00:05.9843750
batch insert (small, no index).........................53333 00:00:00.0937500
batch insert (medium, no index)........................26666 00:00:00.1875000
batch insert (large, no index).........................1114 00:00:04.4843750
find_one (small, no index).............................350 00:00:14.2812500
find_one (medium, no index)............................204 00:00:24.4687500
find_one (large, no index).............................135 00:00:37.0156250
find_one (small, indexed)..............................352 00:00:14.1718750
find_one (medium, indexed).............................184 00:00:27.0937500
find_one (large, indexed)..............................128 00:00:38.9062500
find (small, no index).................................516 00:00:09.6718750
find (medium, no index)................................316 00:00:15.7812500
find (large, no index).................................216 00:00:23.0468750
find (small, indexed)..................................532 00:00:09.3906250
find (medium, indexed).................................346 00:00:14.4375000
find (large, indexed)..................................212 00:00:23.5468750
find range (small, indexed)............................440 00:00:11.3593750
find range (medium, indexed)...........................294 00:00:16.9531250
find range (large, indexed)............................199 00:00:25.0625000
Press any key to continue...

Für den Anfang kann ich besser nicht Masseneinfügemodus Leistung von SQL Server Express erhalten. Was wirklich fiel mir auf, war jedoch die geringe Leistung der find_nnnn Abfragen. Warum werden Daten von MongoDB Abrufen so langsam? Was bin ich?

Edit: Das war alles auf dem lokalen Rechner, ohne die Netzwerklatenz oder sonst etwas. MongoDB die CPU-Auslastung lief bei etwa 75% der gesamten Zeit der Test ausgeführt wurde. Außerdem lief ich eine Spur auf dem Benchmark-Programm und bestätigte, dass 50% der CPU-Zeit ausgegeben wurde, wartet auf MongoDB Daten zurück, so dass es mit den C # Fahrern kein Performance-Problem ist.

War es hilfreich?

Lösung

Ich habe diese Benchmark zu laufen. Das Stück Code hat viele Bugs. Die Erstellung des Index zum Beispiel nicht aber die Ausnahme geschluckt wird, so dass die Suche immer noch langsam.

Aber auch bewusst sein, dass das große Objekt eine Menge „Detail Objekte“ hat. Es ist eine Hierarchie, kein einziger Datensatz. Ein Dokument hat 280 Detail ‚Aufzeichnungen‘. Es ist unfair solches großes Dokument mit einer Zeile aus einer Tabelle RDBMS wie SQL Server zu vergleichen.

Andere Tipps

Das ist untypisch. Wie viel RAM haben Sie auf diesem Feld? Was tut oben zeigen, da die Tests laufen? Auf meinem Laptop kann ich leicht Zahlen viel höher als diese w / o der tatsächliche mongod Prozess sogar ins Schwitzen zu kommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top