MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Agrégation MongoDB avec $ sample très lente

Je peux confirmer que rien n'a changé dans 3.6 Le problème $sample lent persiste.

~40m collection de petits documents, pas d'index, Windows Server 2012 x64.

stockage :wiredTiger.engineConfig.journalCompressor :zlibwiredTiger.collectionConfig.blockCompressor :zlib

2018-04-02T02:27:27.743-0700I COMMANDE [conn4] commande maps.places

commande :agrégat { agrégat :"places", pipeline :[ { $échantillon :{ taille :10 } } ] ,

 cursor: {}, lsid: { id: UUID("0e846097-eecd-40bb-b47c-d77f1484dd7e") }, $readPreference: { mode: "secondaryPreferred" }, $db: "maps" } planSummary: MULTI_ITERATOR keysExamined:0 docsExamined:0 cursorExhausted:1 numYields:3967 nreturned:10 reslen:550 locks:{ Global: { acquireCount: { r: 7942 } }, Database: { acquireCount: { r: 3971 } }, Collection: { acquireCount: { r: 3971 } } }

protocole :op_query 72609ms

J'ai installé Mongo pour essayer ce "SGBD moderne et performant" dans un projet sérieux. À quel point je suis frustré.

Le plan d'explication est ici :

db.command('aggregate', 'places', pipeline=[{"$sample":{"size":10}}], explain=True)

 {'ok': 1.0,
  'stages': [{'$cursor': {'query': {},
    'queryPlanner': {'indexFilterSet': False,
     'namespace': 'maps.places',
     'plannerVersion': 1,
     'rejectedPlans': [],
     'winningPlan': {'stage': 'MULTI_ITERATOR'}}}},
  {'$sampleFromRandomCursor': {'size': 10}}]}