Tôi đoán câu trả lời tốt nhất là nó phụ thuộc. Theo kinh nghiệm của tôi, có rất nhiều yếu tố đi vào việc chọn thuật toán lưu trữ.
Các yếu tố cần xem xét
- Đọc / ghi số dư. (Tỷ lệ truy cập được đọc so với ghi)
- Số lượng bộ nhớ cache.
- Loại phương tiện đằng sau bộ đệm. (Chúng có phải là ổ đĩa chậm SATA hay ổ SSD nhanh không?)
- Lượt vs hoa hậu. (Mức độ thường xuyên được viết lại hoặc đọc lại?)
- Kích thước truy cập trung bình (Điều này đi vào chọn kích thước trang)
- Làm thế nào đắt tiền được đọc và viết.
Khi bạn xem xét tất cả các yếu tố khác nhau, sau đó bạn cần tìm một thuật toán bộ đệm xử lý tốt nhất. Ví dụ, nói rằng bạn có một ứng dụng có rất nhiều ghi, một số viết lại, đọc dữ liệu được viết gần đây và một số loại phương tiện quay. Trong trường hợp này, bạn sẽ muốn một loại thuật toán bộ nhớ đệm lai. Để xử lý dữ liệu ghi, bạn có thể muốn một cái gì đó như Wise order of Writes (WOW) và thuật toán LRU cho dữ liệu đã được đọc từ đĩa. Lý do cho điều này là các truy cập đĩa rất tốn kém và thuật toán WOW sẽ giúp việc ghi dữ liệu hiệu quả hơn và LRU sẽ giữ dữ liệu thường xuyên truy cập luôn trong bộ nhớ cache.
Giả sử bạn có đĩa SSD, có thời gian truy cập rất nhanh, bạn có thể muốn đưa sự lựa chọn của mình vào thuật toán LRU vì truy cập đĩa tương đối rẻ.
Vì vậy, thực sự những gì tôi muốn nói là không có câu trả lời "tốt nhất". Câu trả lời tốt nhất là biết các yếu tố áp dụng cho bạn và chọn một thuật toán xử lý chúng tốt nhất.
Cách tìm thuật toán cho bạn
Hồ sơ hệ thống của bạn. Điều này thường liên quan đến việc thêm mã để giữ số liệu thống kê cho truy cập bộ nhớ. Bằng cách định hình bạn có thể thấy yếu tố nào là quan trọng nhất đối với bạn.
Trước đây tôi đã thêm mã để theo dõi tất cả các truy cập bộ nhớ trong một khoảng thời gian. Sau đó tôi tìm mẫu. Tôi tìm đọc lại, viết lại, truy cập tuần tự, truy cập ngẫu nhiên, v.v.
Một khi bạn đã xác định được những điều quan trọng, bạn cần xem xét tất cả các loại thuật toán lưu trữ khác nhau để xem xử lý nào là tốt nhất.