Mongodb có lập chỉ mục tất cả các trường không?
Bạn có thể thắc mắc điều này vì tài liệu chỉ có bốn trường và bây giờ chỉ mục của bạn cũng có bốn trường. Nhưng với lược đồ linh hoạt, cơ sở dữ liệu không biết rằng các trường trong chỉ mục là các trường duy nhất có trong tài liệu. Vì vậy, mặc dù hiện tại điều đó có thể đúng khi ứng dụng của bạn phát triển và bạn có thể bắt đầu thêm các trường khác vào tài liệu, nhưng chỉ mục sẽ vẫn chỉ có bốn trường này Show Giờ đây, việc thêm 6 vào chỉ mục giúp truy vấn của bạn nhanh hơn nhưng nó đã nhanh hơn so với quét bộ sưu tập vì chỉ mục có thể cho phép bạn tìm một tập hợp con nhỏ các tài liệu đáp ứng tiêu chí của bạn nhanh hơn. Vì vậy, thêm 6 vì bạn cần trả lại nó là được. Ngoài ra, các chỉ mục không lưu trữ tên trường trong chúng và chúng sử dụng nén tiền tố để chỉ mục của bạn có thể nhỏ hơn nhiều so với bộ sưu tập của bạn ngay cả khi có vẻ như thông tin trong chỉ mục giống với thông tin trong bộ sưu tập Các chỉ mục tốt nhất cho ứng dụng của bạn phải tính đến một số yếu tố, bao gồm các loại truy vấn bạn mong đợi, tỷ lệ số lần đọc ghi và dung lượng bộ nhớ trống trên hệ thống của bạn Khi phát triển chiến lược lập chỉ mục của mình, bạn nên hiểu sâu về các truy vấn của ứng dụng của mình. Trước khi bạn xây dựng các chỉ mục, hãy vạch ra các loại truy vấn mà bạn sẽ chạy để bạn có thể xây dựng các chỉ mục tham chiếu đến các trường đó. Các chỉ mục đi kèm với chi phí hiệu suất, nhưng đáng giá hơn chi phí cho các truy vấn thường xuyên trên các tập dữ liệu lớn. Xem xét tần suất tương đối của mỗi truy vấn trong ứng dụng và liệu truy vấn đó có biện minh cho một chỉ mục hay không Chiến lược tổng thể tốt nhất để thiết kế chỉ mục là lập hồ sơ nhiều cấu hình chỉ mục với tập dữ liệu tương tự như cấu hình bạn sẽ chạy trong sản xuất để xem cấu hình nào hoạt động tốt nhất. Kiểm tra các chỉ mục hiện tại được tạo cho các bộ sưu tập của bạn để đảm bảo chúng đang hỗ trợ các truy vấn hiện tại và theo kế hoạch của bạn. Nếu một chỉ mục không còn được sử dụng, bỏ chỉ mục Nói chung, MongoDB chỉ sử dụng một chỉ mục để thực hiện hầu hết các truy vấn. Tuy nhiên, mỗi mệnh đề của truy vấn 8 có thể sử dụng một chỉ mục khác và ngoài ra, MongoDB có thể sử dụng giao điểm của nhiều chỉ mục Chỉ mục là một cách để tổ chức thông tin sao cho công cụ cơ sở dữ liệu có thể nhanh chóng tìm thấy các kết quả có liên quan. Hãy nghĩ về một tủ tài liệu trong một văn phòng y tế. Tất cả các tệp thường được lưu trữ theo một thứ tự cụ thể, chẳng hạn như họ của bệnh nhân. Nếu bạn cần tìm hồ sơ bệnh nhân có họ bắt đầu bằng chữ “L”, bạn sẽ biết chính xác cần tìm ở ngăn kéo nào Các chỉ mục hoạt động theo cùng một cách; . Lưu ý rằng chỉ mục không thay đổi thứ tự của dữ liệu. Thay vào đó, nó tạo ra một danh sách có thứ tự, sau đó ánh xạ tới các mục riêng lẻ Cũng trong văn phòng y tế đó, nếu bạn đang tìm kiếm tất cả bệnh nhân của mình với một đơn thuốc cụ thể, bạn sẽ cần mở từng tệp và xem nội dung. Phương pháp tìm kiếm này có thể mất nhiều thời gian Điều tương tự cũng xảy ra với cơ sở dữ liệu. Không có chỉ mục, công cụ cơ sở dữ liệu cần đi qua từng bản ghi để xem có khớp không. Rất may, với cơ sở dữ liệu, bạn có thể thêm nhiều chỉ mục. Trong trường hợp này, bạn có thể thêm chỉ mục thứ hai vào đơn thuốc và cơ sở dữ liệu sẽ nhanh hơn nhiều trong việc tìm các bản ghi phù hợp MongoDB hỗ trợ các chỉ mục phức hợp, trong đó một cấu trúc chỉ mục duy nhất chứa các tham chiếu đến nhiều trường [1] trong tài liệu của bộ sưu tập. Sơ đồ sau đây minh họa một ví dụ về chỉ số phức hợp trên hai trường [1]MongoDB áp đặt giới hạn 32 trường cho bất kỳ chỉ mục phức hợp nàoChỉ mục tổng hợp có thể hỗ trợ các truy vấn phù hợp trên nhiều trường Tạo một chỉ số hợp chấtĐể tạo ra một chỉ số hợp chất sử dụng thao tác giống với nguyên mẫu sau.
Giá trị của trường trong đặc tả chỉ mục mô tả loại chỉ mục cho trường đó. Ví dụ, một giá trị của 9 chỉ định một chỉ mục sắp xếp các mục theo thứ tự tăng dần. Giá trị của 0 chỉ định một chỉ mục sắp xếp các mục theo thứ tự giảm dần. Đối với các loại chỉ mục bổ sung, hãy xem các loại chỉ mụcThứ tự của các trường được lập chỉ mục có tác động mạnh mẽ đến hiệu quả của một chỉ mục cụ thể đối với một truy vấn nhất định. Đối với hầu hết các chỉ mục tổng hợp, việc tuân theo quy tắc ESR (Bình đẳng, Sắp xếp, Phạm vi) giúp tạo chỉ mục hiệu quả Quan trọngBắt đầu từ MongoDB 4. 4
Trong MongoDB 4. 2 hoặc sớm hơn
Xem xét một bộ sưu tập có tên 1 chứa các tài liệu giống với tài liệu sau
Thao tác sau đây tạo chỉ mục tăng dần trên các trường 2 và 3
Thứ tự của các trường được liệt kê trong chỉ mục phức hợp rất quan trọng. Chỉ mục sẽ chứa các tham chiếu đến tài liệu được sắp xếp trước tiên theo giá trị của trường 2 và, trong mỗi giá trị của trường 2, được sắp xếp theo giá trị của trường chứng khoán. Xem Thứ tự sắp xếp để biết thêm thông tin. Ngoài việc hỗ trợ các truy vấn khớp với tất cả các trường chỉ mục, các chỉ mục phức hợp có thể hỗ trợ các truy vấn khớp với tiền tố của các trường chỉ mục. Nghĩa là, chỉ mục hỗ trợ truy vấn trên trường 2 cũng như cả trường 2 và 3 2Để biết chi tiết, hãy xem Tiền tố. Thứ tự sắp xếpChỉ mục lưu trữ các tham chiếu đến các trường theo thứ tự sắp xếp tăng dần ( 9) hoặc giảm dần (_______10). Đối với các chỉ mục trường đơn, thứ tự sắp xếp của các khóa không thành vấn đề vì MongoDB có thể duyệt qua chỉ mục theo một trong hai hướng. Tuy nhiên, đối với chỉ mục tổng hợp , thứ tự sắp xếp có thể quan trọng trong việc xác định liệu chỉ mục có thể hỗ trợ thao tác sắp xếp hay không. Xem xét một bộ sưu tập 1 có chứa các tài liệu với các trường 2 và 3. Các ứng dụng có thể đưa ra các truy vấn trả về kết quả được sắp xếp trước theo giá trị 2 tăng dần và sau đó giảm dần (i. e. gần đây hơn đến cuối cùng) 3 giá trị, chẳng hạn như 9hoặc các truy vấn trả về kết quả được sắp xếp trước theo giá trị 2 giảm dần và sau đó theo giá trị 3 tăng dần, chẳng hạn như 2Chỉ mục sau có thể hỗ trợ cả hai thao tác sắp xếp này 3Tuy nhiên, chỉ mục trên không thể hỗ trợ sắp xếp theo giá trị 2 tăng dần và sau đó theo giá trị 3 tăng dần, chẳng hạn như sau 6Để biết thêm thông tin về thứ tự sắp xếp và chỉ mục phức hợp, hãy xem Sử dụng Chỉ mục để Sắp xếp Kết quả Truy vấn tiền tốTiền tố chỉ mục là tập hợp con bắt đầu của các trường được lập chỉ mục. Ví dụ, xét chỉ số hợp chất sau 7Chỉ mục có các tiền tố chỉ mục sau
Đối với chỉ mục phức hợp, MongoDB có thể sử dụng chỉ mục để hỗ trợ các truy vấn trên tiền tố chỉ mục. Như vậy, MongoDB có thể sử dụng chỉ mục cho các truy vấn trên các trường sau
MongoDB cũng có thể sử dụng chỉ mục để hỗ trợ truy vấn trên các trường 2 và 3, vì trường 2 tương ứng với một tiền tố. Tuy nhiên, trong trường hợp này, chỉ mục sẽ không hiệu quả trong việc hỗ trợ truy vấn như nếu chỉ mục chỉ có trên 2 và 3. Các trường chỉ mục được phân tích cú pháp theo thứ tự; Vì một truy vấn trên 2 và 3 bỏ qua tiền tố chỉ mục 24 nên nó không thể sử dụng trường chỉ mục 3 theo sau 24. Chỉ trường 2 trong chỉ mục mới có thể hỗ trợ truy vấn này. Xem Tạo chỉ mục để hỗ trợ truy vấn của bạn để biết thêm thông tinMongoDB không thể sử dụng chỉ mục để hỗ trợ các truy vấn bao gồm các trường sau vì không có trường 2, không có trường nào được liệt kê tương ứng với chỉ mục tiền tố
Nếu bạn có một bộ sưu tập có cả chỉ mục ghép và chỉ mục trên tiền tố của nó (e. g. 24 và 25), nếu không chỉ mục nào có ràng buộc thưa thớt hoặc duy nhất, thì bạn có thể xóa chỉ mục trên tiền tố (e. g. 25). MongoDB sẽ sử dụng chỉ mục phức hợp trong tất cả các tình huống mà nó sẽ sử dụng chỉ mục tiền tốGiao lộ chỉ mụcBắt đầu từ phiên bản 2. 6, MongoDB có thể sử dụng giao điểm chỉ mục để thực hiện các truy vấn. Lựa chọn giữa việc tạo các chỉ mục phức hợp hỗ trợ các truy vấn của bạn hoặc dựa vào giao điểm của chỉ mục tùy thuộc vào các chi tiết cụ thể của hệ thống của bạn. Xem Giao lộ chỉ mục và Chỉ mục hợp chất để biết thêm chi tiết Cân nhắc bổ sungCác ứng dụng có thể bị giảm hiệu suất trong quá trình xây dựng chỉ mục, bao gồm quyền truy cập đọc/ghi hạn chế vào bộ sưu tập. Để biết thêm thông tin về quy trình xây dựng chỉ mục, hãy xem phần Xây dựng chỉ mục trên các Bộ sưu tập phổ biến, bao gồm phần Xây dựng chỉ mục trong môi trường nhân rộng Một số trình điều khiển có thể chỉ định các chỉ mục, sử dụng 27 thay vì 9 làm thông số kỹ thuật. Điều này không có bất kỳ ảnh hưởng nào đến chỉ số kết quả
MongoDB có tự động lập chỉ mục không?Mỗi bộ sưu tập trong MongoDB sẽ tự động có một chỉ mục trên trường _id . Chỉ mục này sau đó có thể được sử dụng để lấy tài liệu từ cơ sở dữ liệu một cách hiệu quả. Tuy nhiên, hầu hết thời gian bạn sẽ cần truy vấn dữ liệu trên các trường cụ thể khác. Đây là nơi một chỉ mục trường duy nhất sẽ có ích.
Chỉ mục nào được sử dụng cho nhiều trường trong MongoDB?MongoDB hỗ trợ chỉ mục tổng hợp , trong đó một cấu trúc chỉ mục duy nhất chứa tham chiếu đến nhiều trường [1] trong tài liệu của bộ sưu tập.
Lập chỉ mục MongoDB hoạt động như thế nào?MongoDB sử dụng chỉ mục đa khóa để lập chỉ mục nội dung được lưu trữ trong mảng . Nếu bạn lập chỉ mục cho một trường chứa giá trị mảng, MongoDB sẽ tạo các mục nhập chỉ mục riêng cho mọi phần tử của mảng. Các chỉ mục đa khóa này cho phép các truy vấn chọn tài liệu có chứa mảng bằng cách so khớp trên phần tử hoặc các phần tử của mảng.
Hạn chế của MongoDB là gì?Kích thước tài liệu BSON tối đa là 16 megabyte . Kích thước tài liệu tối đa giúp đảm bảo rằng một tài liệu không thể sử dụng quá nhiều RAM hoặc quá nhiều băng thông trong quá trình truyền. Để lưu trữ tài liệu lớn hơn kích thước tối đa, MongoDB cung cấp GridFS API. |