MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Śmiesznie powolne zapytanie mongoDB dotyczące małej kolekcji w prostej, ale dużej bazie danych

avgObjSize nie zgadza się z oszacowaniem 280 bajtów. Mówi, że twoje obiekty zajmują średnio około 5 MB i storageSize jest blisko 1 GB. Jeśli masz ograniczoną pamięć, uruchomienie zapytania, które wymaga dostępu do całego 1 GB pliku, spowoduje wiele błędów stron.

Czy próbowałeś kompaktowanie ?

db.runCommand({compact: 'Aggregates'})

lub naprawianie ?

db.repairDatabase()

Jeśli to nie zadziała, spróbuj wycofać tylko te pola, które są potrzebne dla sumy, zamiast ściągać cały dokument. Może się zdarzyć, że te dokumenty mają w rzeczywistości 5 MB, a czas poświęcony jest na przeciąganie danych przez sieć.

def get_total():
    start = datetime.now()
    print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
    end = datetime.now()
    print (end-start).seconds



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sprawdź istnienie obiektu w mongo za pomocą gopkg.in/mgo.v2

  2. Podręcznik DevOps Open-Source do audytu baz danych — wszystko, co powinieneś wiedzieć

  3. Wstaw lub zaktualizuj wiele dokumentów w MongoDB

  4. Mongo db nie jest równe zapytaniu nie działa

  5. Zarządzanie MySQL, MongoDB i PostgreSQL za pomocą ChatOps od Slack