sql >> Databáze >  >> NoSQL >> MongoDB

mongodb groupby pomalý i po přidání indexu

Jak můžete vidět z dotazu, který jste napsali, tento typ agregace ve verzi 2.0 vyžaduje spuštění Map/Reduce. Map/Reduce na MongoDB má některé výkonové sankce, které byly pokryty na SO dříve - v zásadě, pokud nejste schopni paralelizovat přes cluster, budete spouštět jednovláknový javascript přes Spidermonkey - není to rychlý návrh. Index, protože nejste selektivní, ve skutečnosti nepomůže – stačí naskenovat celý rejstřík a případně i dokument.

S blížícím se vydáním 2.2 (aktuálně v rc1 v době psaní tohoto článku) však máte nějaké možnosti. rámec agregace (který je nativní, nikoli Map/Reduce založený na JS) představený ve verzi 2.2 má vestavěný skupinový operátor a byl vytvořen speciálně pro urychlení tohoto druhu operací v MongoDB.

Doporučil bych vyzkoušet 2.2 a zjistit, zda se váš výkon při seskupování zlepší. Myslím, že by to vypadalo nějak takto (poznámka:netestováno):

db.alarm.aggregate(
    { $group : {
        _id : "$serverName",
        count : { $sum : 1 }
    }}
);


  1. Používáte Redis k implementaci přihlášení?

  2. Zobrazuje se mi chyba Třída 'Predis\Client' nebyla nalezena v Laravelu 5.2

  3. $unwind objekt v agregačním rámci

  4. Čtení z Kinesis dává prázdné záznamy při spuštění s předchozím pořadovým číslem nebo časovým razítkem