sql >> Database teknologi >  >> NoSQL >> MongoDB

Er det OK at forespørge en MongoDB flere gange pr. anmodning?

For at besvare spørgsmålet om $in....

Jeg lavede nogle præstationstest med følgende scenarie:

~24 millioner dokumenter i en samling
Slå 1 million af disse dokumenter op baseret på en nøgle (indekseret)
Ved brug af CSharp-driver fra .NET

Resultater:
Forespørger 1 ad gangen, enkelt gevind:109s
Forespørger 1 ad gangen, multitrådet:48s
Forespørger 100K ad gangen ved hjælp af $in, single threaded=20s
Forespørgsel 100K ad gangen ved hjælp af $in, multi threaded=9s

Så mærkbart bedre ydeevne ved brug af en stor $in (begrænset til maks. forespørgselsstørrelse).

Opdatering: I forlængelse af kommentarer nedenfor om, hvordan $in klarer sig med forskellige chunkstørrelser (forespørgsler med flere tråde):

Forespørger 10 ad gangen (100000 batches) =8,8 s
Forespørger 100 ad gangen (10000 batches) =4,32 s
Forespørger 1000 ad gangen (1000 batches) =4,31 s
Forespørger 10000 ad gangen (100 batches) =8,4 s
Forespørger 100000 ad gangen (10 batches) =9 s (pr. originale resultater ovenfor)

Så der ser ud til at være et sweet-spot for, hvor mange værdier der skal samles i en $in-klausul kontra antallet af returflyvninger




  1. Hvordan deaktiverer man persistens med redis?

  2. Redis ERR ukendt kommando 'FLUSHDB'

  3. mongodb:forespørgsel efter tidsperioden mellem to datofelter

  4. Er Redis bare en cache?