2009-10-17 22 views
9

Tôi cần cải thiện hiệu suất truy vấn tìm kiếm Lucene của mình. Tôi có thể sử dụng RAMDirectory không? Có tối ưu hóa hiệu suất không? Có giới hạn kích thước chỉ mục nào không? Tôi sẽ đánh giá cao nếu ai đó có thể liệt kê ưu và nhược điểm của việc sử dụng RAMDirectory.Cần biết ưu và khuyết điểm của việc sử dụng RAMDirectory

Cảm ơn.

Trả lời

6

RAMDirectory nhanh hơn nhưng không được ghi vào đĩa. Nó chỉ tồn tại miễn là chương trình của bạn đang chạy, và phải được tạo ra từ đầu mỗi khi chương trình của bạn chạy.

Nếu chỉ mục của bạn đủ nhỏ để vừa vặn thoải mái vào RAM và bạn không cập nhật thường xuyên, bạn có thể duy trì chỉ mục trên đĩa rồi tạo RAMDirectory từ nó bằng cách sử dụng hàm tạo RAMDirectory(Directory dir). Truy vấn rằng sau đó sẽ nhanh hơn truy vấn một trên đĩa, một khi bạn đã trả tiền phạt của tải nó lên. Nhưng hãy đo sự khác biệt - nếu chỉ mục có thể phù hợp với bộ nhớ dưới dạng RAMDirectory, thì nó cũng có thể vừa với bộ đệm đĩa, vì vậy bạn có thể không thấy nhiều khác biệt.

+0

Cảm ơn các yếu tố đầu vào ur .. có thể tôi biết nhỏ như thế nào là "đủ nhỏ"? – user43498

+0

Tôi sẽ tưởng tượng nhỏ hơn RAM vật lý hiện có của bạn. –

4

Bạn nên cấu hình việc sử dụng RAMDirectory. Ít nhất trong Linux, sử dụng RAMDirectory không phải là bất kỳ nhanh hơn bằng cách sử dụng FSDirectory mặc định, do cách hệ điều hành đệm I/O.

12

Tôi so sánh FSDirectory và RAMDirectory.

  • kích thước chỉ mục là 1.4G
  • nhớ
  • Centos, 5G

Search 1000 từ khóa, thư mục/min/Thời gian đáp ứng trung bình max (ms) là ở đây

  • FSDirectory
    • lần chạy đầu tiên: 351/7/2611
    • chạy thứ hai: 47/7/837
    • chạy thứ ba (ứng dụng khởi động lại): 53/7/2343
  • RAMDirectory
    • chạy đầu tiên: 38/7/1133
    • chạy thứ hai: 34/7/189
    • chạy thứ ba (khởi động lại ứng dụng): 38/7/959

Vì vậy, bạn có thể thấy RAMDirectory là làm nhanh hơn sau đó FSDirectory, nhưng sau khi 'os tập tin bộ nhớ cache ấm lên', khoảng cách tốc độ không phải là quá khác biệt. Đâu là bất lợi của RMADirectory? Trong thử nghiệm của tôi

  • Nó ăn nhiều bộ nhớ hơn, tệp 1.4G cần khoảng 2G để tải nó vào bộ nhớ. trong khi FSDirectory chỉ sử dụng 700m. Sau đó, nó có nghĩa là thời gian dài hơn cho gc đầy đủ.
  • Cần thêm thời gian để tải, đặc biệt khi tệp chỉ mục lớn. Nó cần sao chép dữ liệu từ tập tin vào bộ nhớ khi mở chỉ mục. Điều đó có nghĩa là các yêu cầu sẽ bị chặn trong nhiều thời gian hơn khi khởi động lại ứng dụng.
  • Không thực tế để duy trì hai chỉ mục trong cùng một thời điểm. Bởi vì ứng dụng của chúng tôi chuyển chỉ mục mỗi vài giờ.Chúng tôi muốn chỉ số mới đang ấm lên trong khi chỉ số cũ vẫn đang hoạt động trong cùng một tomcat.
Các vấn đề liên quan