MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tăng tốc độ tổng hợp MongoDB

Hiện tại có một số hạn chế trong những gì mà khung tổng hợp có thể làm để cải thiện hiệu suất truy vấn của bạn, nhưng bạn có thể giúp nó theo cách sau:

db.my_collection.aggregate([
    { "$sort" : { "LOG_TYPE" : 1 } },
    { "$group" :{ 
        "_id": "$LOG_TYPE",
        "COUNT": { "$sum":1 }
    }}
])

Bằng cách thêm một loại trên LOG_TYPE, bạn sẽ "buộc" trình tối ưu hóa sử dụng một chỉ mục trên LOG_TYPE để sắp xếp các tài liệu. Điều này sẽ cải thiện hiệu suất theo một số cách, nhưng khác nhau tùy thuộc vào phiên bản đang được sử dụng.

Trên dữ liệu thực nếu bạn có sắp xếp dữ liệu ở giai đoạn nhóm $, nó sẽ cải thiện hiệu quả của việc tích lũy các tổng. Bạn có thể thấy các kế hoạch truy vấn khác nhau trong đó với $ sort, nó sẽ sử dụng chỉ mục khóa phân đoạn. Sự cải thiện này mang lại hiệu suất thực tế sẽ phụ thuộc vào số lượng giá trị trong mỗi "nhóm" - nói chung LOG_TYPE chỉ có bảy giá trị riêng biệt khiến nó trở thành một khóa phân đoạn cực kỳ kém, nhưng điều đó có nghĩa là tất cả khả năng mã sau sẽ là nhanh hơn nhiều so với tổng hợp thậm chí được tối ưu hóa:

db.my_collection.distinct("LOG_TYPE").forEach(function(lt) {
   print(db.my_collection.count({"LOG_TYPE":lt});
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đếm dựa trên Điều kiện và chia cho số bản ghi trong khoảng thời gian

  2. Thực thi JS trên MongoDB khi chèn từ PHP

  3. Đặt hạn ngạch Cơ sở dữ liệu MongoDB (SIZE)

  4. Đăng nhập các truy vấn MongoDB với Spring Boot

  5. Phương pháp tùy chỉnh cho truy vấn cập nhật với dữ liệu mùa xuân MongoRepository