MongoDB có tự động tạo chỉ mục không?
Các chỉ mục rất quan trọng trong bất kỳ cơ sở dữ liệu nào và với MongoDB thì điều đó cũng không khác. Với việc sử dụng Chỉ mục, việc thực hiện các truy vấn trong MongoDB trở nên hiệu quả hơn Show
Nếu bạn có một bộ sưu tập với hàng nghìn tài liệu không có chỉ mục và sau đó bạn truy vấn để tìm một số tài liệu nhất định, thì trong trường hợp đó, MongoDB sẽ cần quét toàn bộ bộ sưu tập để tìm tài liệu. Nhưng nếu bạn có các chỉ mục, MongoDB sẽ sử dụng các chỉ mục này để giới hạn số lượng tài liệu phải được tìm kiếm trong bộ sưu tập Chỉ mục là tập dữ liệu đặc biệt lưu trữ một phần dữ liệu của tập hợp. Vì dữ liệu là một phần nên việc đọc dữ liệu này trở nên dễ dàng hơn. Bộ một phần này lưu trữ giá trị của một trường cụ thể hoặc một tập hợp các trường được sắp xếp theo giá trị của trường Trong hướng dẫn này, bạn sẽ học – Hiểu tác động của các chỉ mụcBây giờ, mặc dù từ phần giới thiệu, chúng ta đã thấy rằng các chỉ mục rất tốt cho các truy vấn, nhưng có quá nhiều chỉ mục có thể làm chậm các hoạt động khác, chẳng hạn như thao tác Chèn, Xóa và Cập nhật Nếu thường xuyên có các thao tác chèn, xóa và cập nhật được thực hiện trên tài liệu, thì các chỉ mục sẽ cần phải thay đổi hoạt động đó thường xuyên, đây sẽ chỉ là chi phí chung cho bộ sưu tập Ví dụ dưới đây cho thấy một ví dụ về những giá trị trường nào có thể tạo thành một chỉ mục trong một bộ sưu tập. Chỉ mục có thể dựa trên chỉ một trường trong tập hợp hoặc có thể dựa trên nhiều trường trong tập hợp Trong ví dụ bên dưới, Mã nhân viên “1” và Mã nhân viên “AA” được sử dụng để lập chỉ mục các tài liệu trong bộ sưu tập. Vì vậy, khi tìm kiếm truy vấn được thực hiện, các chỉ mục này sẽ được sử dụng để tìm các tài liệu cần thiết trong bộ sưu tập một cách nhanh chóng và hiệu quả Vì vậy, ngay cả khi truy vấn tìm kiếm dựa trên Mã nhân viên “AA”, tài liệu đó sẽ được trả về Cách tạo chỉ mục. tạo Index()Tạo một Index trong MongoDB được thực hiện bằng cách sử dụng phương thức “createIndex” Ví dụ sau đây cho thấy cách thêm chỉ mục vào bộ sưu tập. Giả sử rằng chúng ta có cùng một bộ sưu tập Nhân viên có tên Trường là “Employeeid” và “EmployeeName” db.Employee.createIndex({Employeeid:1}) Giải thích mã
Nếu lệnh được thực hiện thành công, Kết quả sau sẽ được hiển thị đầu ra
Đoạn mã trên cho biết cách tạo chỉ mục dựa trên một giá trị trường, nhưng người ta cũng có thể tạo chỉ mục dựa trên nhiều giá trị trường Lập chỉ mục là một khái niệm quan trọng trong thế giới cơ sở dữ liệu. Ưu điểm chính của việc tạo chỉ mục trên bất kỳ trường nào là truy cập dữ liệu nhanh hơn. Nó tối ưu hóa quá trình tìm kiếm và truy cập cơ sở dữ liệu. Hãy xem xét ví dụ này để hiểu điều này Khi bất kỳ người dùng nào yêu cầu một hàng cụ thể từ cơ sở dữ liệu, hệ thống DB sẽ làm gì? Nói chung, khi bạn xác định một chỉ mục trên một trường cụ thể, hệ thống DB sẽ tạo một danh sách theo thứ tự giá trị của trường đó và lưu trữ nó trong một bảng khác. Mỗi mục của bảng này sẽ trỏ đến các giá trị tương ứng trong bảng gốc. Vì vậy, khi người dùng cố gắng tìm kiếm bất kỳ hàng nào, trước tiên, nó sẽ tìm kiếm giá trị trong bảng chỉ mục bằng thuật toán tìm kiếm nhị phân và trả về giá trị tương ứng từ bảng gốc. Quá trình này sẽ mất ít thời gian hơn vì chúng tôi đang sử dụng tìm kiếm nhị phân thay vì tìm kiếm tuyến tính Trong bài viết này, chúng tôi sẽ tập trung vào Lập chỉ mục MongoDB và hiểu cách tạo và sử dụng các chỉ mục trong MongoDB Làm cách nào để tạo một chỉ mục trong Bộ sưu tập MongoDB?Để tạo chỉ mục bằng Mongo shell, bạn có thể sử dụng cú pháp này
Thí dụ Để tạo chỉ mục trên trường tên trong bộ sưu tập myColl .
Các loại chỉ mục MongoDB
Thuộc tính của chỉ mục
Phân tích hiệu suấtXem xét một tập hợp các điểm số của sinh viên. Nó có chính xác 3000000 tài liệu trong đó. Chúng tôi chưa tạo bất kỳ chỉ mục nào trong bộ sưu tập này. Xem hình ảnh dưới đây để hiểu lược đồ Văn bản mẫu trong bộ sưu tập điểm Bây giờ, hãy xem xét truy vấn này mà không có bất kỳ chỉ mục nào 0Truy vấn này mất 1155 mili giây để thực hiện. Đây là đầu ra. Tìm kiếm trường executionTimeMillis để biết kết quả. Thời gian thực hiện mà không cần lập chỉ mục Bây giờ hãy tạo chỉ mục trên trường sinh viên. Để tạo chỉ mục chạy truy vấn này 1Bây giờ cùng một truy vấn mất 0ms Thời gian thực hiện với lập chỉ mục Bạn có thể thấy rõ sự khác biệt về thời gian thực hiện. Nó gần như ngay lập tức. Đó là sức mạnh của việc lập chỉ mục Phần kết luậnMột điều rõ ràng là. Tạo chỉ mục. Dựa trên các truy vấn của bạn, bạn có thể xác định các loại chỉ mục khác nhau trên bộ sưu tập của mình. Nếu bạn không tạo chỉ mục, thì mỗi truy vấn sẽ quét toàn bộ bộ sưu tập, điều này sẽ mất rất nhiều thời gian khiến ứng dụng của bạn rất chậm và nó sử dụng nhiều tài nguyên của máy chủ của bạn. Mặt khác, đừng tạo quá nhiều chỉ mục vì việc tạo các chỉ mục không cần thiết sẽ gây thêm thời gian cho tất cả các thao tác chèn, xóa và cập nhật. Khi bạn thực hiện bất kỳ thao tác nào trong số này trên một trường được lập chỉ mục, thì bạn cũng phải thực hiện thao tác tương tự trên cây chỉ mục, điều này sẽ mất thời gian. Các chỉ mục được lưu trữ trong RAM nên việc tạo các chỉ mục không liên quan có thể ngốn dung lượng RAM của bạn và làm chậm máy chủ của bạn Làm thế nào các chỉ mục được tạo trong MongoDB?Để tạo chỉ mục trong Mongo Shell, hãy sử dụng db. thu thập. createIndex() . db. thu thập. Phương thức createIndex() chỉ tạo một chỉ mục nếu một chỉ mục của cùng một đặc điểm kỹ thuật chưa tồn tại. Các chỉ mục MongoDB sử dụng cấu trúc dữ liệu B-tree.
Trường nào được MongoDB tự động tạo?Về mặt kiến trúc, theo mặc định, trường _id là một ObjectID, một trong các loại BSON của MongoDB. ObjectID là khóa chính cho tài liệu được lưu trữ và được tạo tự động khi tạo tài liệu mới trong bộ sưu tập.
MongoDB quyết định sử dụng chỉ mục nào như thế nào?Thực tế, cách để xác định chỉ mục nào sẽ được sử dụng là tạo một kế hoạch truy vấn cho truy vấn tìm bằng cách sử dụng phương pháp giải thích() . Bạn có thể phân tích kế hoạch và tìm ra chỉ mục nào được sử dụng, cách thức và xem số liệu thống kê như mất bao nhiêu thời gian để thực hiện truy vấn. Xem Phân tích hiệu suất truy vấn để biết chi tiết. |