http://vietjack.com/mongodb/index.jsp Copyright © vietjack.com Phân tích truy vấn MongoDB Việc phân tích truy vấn khía cạnh quan trọng để đánh giá tính hiệu Database tính hiệu mục thiết kế Chúng ta tìm hiểu hai truy vấn sử dụng thường xuyên $explain $hint Sử dụng $explain MongoDB Tốn tử $explain cung cấp thơng tin truy vấn, mục sử dụng truy vấn số thống kê khác Toán tử có ích cần phân tích xem mục bạn tối ưu hóa Trong chương trước, tạo mục cho users collection trườnggender user_name với truy vấn sau: >db.users.ensureIndex({gender:1,user_name:1}) Bây giờ, bạn sử dụng $explain truy vấn sau: >db.users.find({gender:"M"},{user_name:1,_id:0}).explain() Truy vấn cho kết qua phân tích sau: { "cursor" : "BtreeCursor gender_1_user_name_1", "n" : 1, "nscannedObjects" : 0, "nscannedObjectsAllPlans" : 0, false, "nscanned" : 1, "nscannedAllPlans" : 1, "indexOnly" : true, "nYields" : 0, "millis" : 0, "indexBounds" : { "M", "M" { "$minElement" : "$maxElement" : "isMultiKey" : false, ] } "scanAndOrder" : "nChunkSkips" : 0, "gender" : [ ], [ "user_name" : [ }, ] [ { ] } } Nhìn vào trường tập kết này: • Giá trị true indexOnly truy vấn sử dụng việc lập mục • Trường cursor xác định kiểu trỏ sử dụng Kiểu BTreeCursor mục sử dụng cung cấp tên mục sử dụng BasicCursor full scan thực mà không sử dụng mục http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/mongodb/index.jsp Copyright © vietjack.com • Số n số Document so khớp kết trả • nscannedObjects tổng số Document quét • nscanned tổng số Document mục quét Sử dụng $hint MongoDB Toán tử $hint ép Query Optimizer để sử dụng mục xác định để chạy truy vấn Nó đặc biệt hữu ích bạn muốn kiểm tra hiệu suất truy vấn với mục khác Ví dụ, truy vấn sau xác định mục trường gender user_name để sử dụng cho truy vấn này: >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}) Để phân tích truy vấn trên, bạn sử dụng toán tử $explain MongoDB: >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).e xplain() http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ...http://vietjack.com /mongodb/ index.jsp ... trả • nscannedObjects tổng số Document quét • nscanned tổng số Document mục quét Sử dụng $hint MongoDB Toán tử $hint ép Query Optimizer để sử dụng mục xác định để chạy truy vấn Nó đặc biệt hữu... >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}) Để phân tích truy vấn trên, bạn sử dụng tốn tử $explain MongoDB: >db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).e xplain()