sql >> Database >  >> NoSQL >> MongoDB

Is het OK om een ​​MongoDB meerdere keren per verzoek op te vragen?

Om de vraag over $in te beantwoorden....

Ik heb wat prestatietests gedaan met het volgende scenario:

~24 miljoen documenten in een verzameling
Zoek 1 miljoen van die documenten op op basis van een sleutel (geïndexeerd)
Gebruik CSharp-stuurprogramma van .NET

Resultaten:
1 tegelijk query's uitvoeren, enkele thread:109s
1 tegelijk query's uitvoeren, meerdere threads:48s
100K tegelijk query's uitvoeren met $in, single threaded=20s
Query's uitvoeren 100K tegelijk met $in, multi threaded=9s

Dus merkbaar betere prestaties met een grote $in (beperkt tot de maximale querygrootte).

Bijwerken: In navolging van onderstaande opmerkingen over hoe $in presteert met verschillende chunk-groottes (queries multi-threaded):

10 tegelijk opvragen (100000 batches) =8,8s
100 tegelijk opvragen (10000 batches) =4,32s
1000 tegelijk opvragen (1000 batches) =4,31s
10000 opvragen tegelijk (100 batches) =8,4 s
100000 tegelijk opvragen (10 batches) =9 s (volgens originele resultaten hierboven)

Er lijkt dus een goede plek te zijn voor het aantal waarden dat moet worden samengevoegd tot een $in-clausule versus het aantal retourvluchten




  1. Hoe een subdocument in mangoest vullen nadat het is gemaakt?

  2. Hoe te controleren op nul/nul in Lua cjson van Redis?

  3. Mongodb-hotfix KB2731284

  4. MongoDB - onderscheiden met query gebruikt geen indexen