sql >> Databasteknik >  >> NoSQL >> MongoDB

Är det OK att fråga en MongoDB flera gånger per begäran?

För att svara på frågan om $in....

Jag gjorde några prestandatester med följande scenario:

~24 miljoner dokument i en samling
Slå upp 1 miljon av dessa dokument baserat på en nyckel (indexerad)
Med CSharp-drivrutin från .NET

Resultat:
Fråga 1 åt gången, entrådad :109s
Fråga 1 åt gången, flertrådad:48s
Fråga 100K åt gången med $in, single threaded=20s
Fråga 100K åt gången med $in, multi threaded=9s

Så märkbart bättre prestanda med en stor $in (begränsad till maximal frågestorlek).

Uppdatering: Efter kommentarer nedan om hur $in presterar med olika chunkstorlekar (frågor med flera trådar):

Fråga 10 åt gången (100 000 batcher) =8,8 s
Fråga 100 åt gången (10 000 batcher) =4,32 s
Fråga 1 000 åt gången (1 000 batcher) =4,31 s
Fråga 10000 åt gången (100 satser) =8,4 s
Frågor om 100 000 åt gången (10 satser) =9 s (per originalresultat ovan)

Så det verkar finnas en sweet-spot för hur många värden som ska samlas in i en $in-klausul kontra antalet tur- och returresor




  1. Lagrar returvärdet för node.js setTimeout i redis

  2. Hur kan du ta bort alla dokument från en samling med Mongoose?

  3. Hur importerar man data från mongodb till pandor?

  4. MongoDB $dateToString Format Specifiers