2010-05-04 29 views
7

Tôi đang tìm cách chạy PostgreSQL trong RAM để nâng cao hiệu suất Cơ sở dữ liệu không quá 1GB và không bao giờ nên tăng lên hơn 5GB.Cơ sở dữ liệu chạy nhanh trong RAM nhanh hơn bao nhiêu?

mối quan tâm lớn thứ hai của tôi là: làm thế nào dễ dàng là nó để sao lưu mọi thứ lên khi nó đang chạy hoàn toàn trong RAM đây có phải là giống như sử dụng RAM như tầng 1 HD, hoặc là nó phức tạp hơn nhiều

+0

Dữ liệu (chủ yếu) chỉ đọc hoặc đọc-ghi? –

+0

@codeka Khoảng 50/50 – orokusaki

Trả lời

4

Có thể đáng giá nếu cơ sở dữ liệu của bạn là I/O bị ràng buộc. Nếu đó là CPU-ràng buộc, một ổ đĩa RAM sẽ làm cho không có sự khác biệt.

Nhưng trước tiên, bạn nên đảm bảo rằng cơ sở dữ liệu của bạn được điều chỉnh đúng, bạn có thể nhận được hiệu suất rất lớn theo cách đó mà không mất bất kỳ sự đảm bảo nào. Ngay cả một cơ sở dữ liệu dựa trên RAM sẽ hoạt động kém nếu nó không được điều chỉnh đúng. Xem PostgreSQL wiki on this, chủ yếu là shared_buffers, effective_cache_size, checkpoint_ *, default_statistics_target

Thứ hai, nếu bạn muốn tránh đồng bộ bộ đệm đĩa trên mọi cam kết (như codeka đã giải thích trong nhận xét của mình), hãy tắt tùy chọn cấu hình đồng bộ_commit. Khi máy của bạn mất điện, điều này sẽ mất một số giao dịch mới nhất, nhưng cơ sở dữ liệu của bạn sẽ vẫn phù hợp 100%. Trong chế độ này, RAM sẽ được sử dụng để đệm tất cả các ghi, bao gồm ghi vào nhật ký giao dịch. Vì vậy, với các điểm kiểm tra rất hiếm, shared_buffers lớn và wal_buffers, nó thực sự có thể tiếp cận tốc độ gần với ổ đĩa RAM.

Phần cứng cũng có thể tạo sự khác biệt lớn. Ổ đĩa 15000 RPM có thể, trên thực tế, gấp 3 lần các ổ đĩa giá rẻ cho khối lượng công việc cơ sở dữ liệu. Bộ điều khiển RAID với bộ nhớ đệm được hỗ trợ pin cũng tạo ra sự khác biệt đáng kể.

Nếu vẫn chưa đủ, thì có thể có ý nghĩa khi xem xét chuyển sang bộ nhớ dễ bay hơi.

+0

@intgr Cảm ơn thông tin tuyệt vời. – orokusaki

1

trên thực tế ...? Miễn là bạn có đủ bộ nhớ, cơ sở dữ liệu của bạn sẽ được chạy hoàn toàn trong RAM. Hệ thống tập tin của bạn sẽ đệm toàn bộ dữ liệu để nó không tạo ra nhiều khác biệt. ut ... có ofcourse luôn luôn một chút trên cao, do đó bạn vẫn có thể thử và chạy tất cả từ một ramdrive.

Đối với các bản sao lưu, điều đó cũng giống như bất kỳ cơ sở dữ liệu nào khác. Bạn có thể sử dụng các tiện ích Postgres dump bình thường để sao lưu hệ thống. Hoặc thậm chí tốt hơn, hãy để nó sao chép sang một máy chủ khác như một bản sao lưu.

+3

Một cơ sở dữ liệu trên đĩa, ngay cả khi tất cả các trang nằm trong bộ nhớ, cần phải đồng bộ hóa ghi vào tệp nhật ký để duy trì các thuộc tính ACID. Vì vậy, một cơ sở dữ liệu trong RAM sẽ thực sự là khá nhanh hơn một chút bởi vì nó sẽ không phải làm điều đó. Tất nhiên, điều đó không áp dụng nếu cơ sở dữ liệu chủ yếu là chỉ đọc. –

+0

@codeka Trong trường hợp của tôi, tôi sẽ thực hiện gần như nhiều lần viết (với vô số giao dịch) vì tôi sẽ đọc. – orokusaki

+0

@Dean Harding: với hầu hết các máy chủ cơ sở dữ liệu có thể cấu hình được. Viết không _have_ để được đồng bộ. Với Postgres ví dụ bạn có thể cấu hình hoàn toàn khi viết (khoảng, byte, vv ..). – Wolph

4

Toàn bộ điều về việc có nên giữ cho bạn cơ sở dữ liệu trong bộ nhớ phụ thuộc vào kích thước và hiệu suất cũng như mức độ mạnh mẽ bạn muốn bằng viết. Tôi cho rằng bạn đang viết thư cho cơ sở dữ liệu của mình và bạn muốn duy trì dữ liệu trong trường hợp thất bại.

Cá nhân, tôi sẽ không lo lắng về việc tối ưu hóa này cho đến khi tôi gặp phải sự cố về hiệu suất. Nó chỉ có vẻ nguy hiểm với tôi.

Nếu bạn đang thực hiện nhiều lần đọc và rất ít viết bộ nhớ cache có thể phục vụ mục đích của bạn, Nhiều ORM đi kèm với một hoặc nhiều cơ chế lưu vào bộ nhớ cache.

Từ quan điểm hiệu suất, phân cụm qua mạng đến một DBMS khác thực hiện tất cả ghi đĩa, có vẻ kém hiệu quả hơn chỉ có DBMS thông thường và điều chỉnh để giữ càng nhiều càng tốt trong RAM muốn.

1

nhanh hơn từ 5 đến 40 lần so với DBMS của ổ cứng. Kiểm tra Gartner của Magic Quadrant cho DBMS hoạt động 2013. Gartner cho thấy ai là mạnh mẽ và quan trọng hơn lưu ý nghiêm trọng cảnh báo ... lỗi. .errors ...thiếu sự hỗ trợ và khó sử dụng của các nhà cung cấp.

+0

Đồng ý với golferchung. Tốc độ là tuyệt vời nhưng hãy cẩn thận với các nhà cung cấp. Chỉ một số ít có độ bền và tính nhất quán thuần túy. Những người khác có sự nhất quán cuối cùng mà là xấu. – Savino

Các vấn đề liên quan