Try   HackMD

MongoDB Performance
ch4 CRUD Optimization

tags: MongoDB University M201

Optimizing your CRUD Operations

Index selectivity

  • Equality > Sort > Range

Covered Queries

  • Very performant
  • Satisfied entirely by index keys
  • 0 documents needs to be examined

An index covers a query only when both all fields in the query are a part of the index and all the fields are turned in the result are in the same index.

Can't cover a query

  • Any of indexed fields are array
  • Any of indexed fields are embedded documents
  • When run against a mongos if the index does not contain the shard key.

Regex Performance

正規表達式如果有指定開頭會比較有效率

db.user.find({ username: /^kirby/ })

Isert Performance

Data Type Implications

Mongodb will be grouping documents and comparing their fields based on different BSON types using a specific comparsion order

  1. Minkey(internal type)
  2. Null
  3. Numbers(int, doubles, longs, decimals)
  4. Symbol, String
  5. Object
  6. Array
  7. BinData
  8. ObjectId
  9. Boolean
  10. Date
  11. Timestamp
  12. Regular Expression
  13. MaxKey(internal type)

Index Structure

Aggregation Performance

  • index usage

  • Memory Constraints

  • RealTime Processing

    • Provide data for applications
    • Query performance is very important
  • Batch Processing

    • Provide data for analytics
    • Query performance is less important
  • Results are subject to 16MB document limit

    • Use $limit and $project
  • 100MB of RAM per pipeline Stage

    • Use index
    • db.orders.aggregate({}, {allowDiskUse: true})
      • Doesn't work with graphLookup