2011-10-10 35 views
5

Tôi có một ứng dụng Giá treo sử dụng SQLAlchemy với SQLite làm phụ trợ. Tôi muốn biết nếu mọi hoạt động đọc đi SQLite sẽ luôn luôn dẫn đến một đĩa cứng đọc (mà là rất chậm so với RAM) hoặc một số cơ chế bộ nhớ đệm đã tham gia.SQLite đọc luôn luôn đánh đĩa?

  • SQLite duy trì một tập hợp con của cơ sở dữ liệu trong RAM để truy cập nhanh hơn không?
  • Hệ điều hành (Linux) có thể tự động làm điều đó không?
  • Tôi có thể mong đợi bao nhiêu tốc độ bằng cách sử dụng cơ sở dữ liệu sản xuất (MySQL hoặc PostgreSQL) thay vì SQLite?

Trả lời

3
  1. Vâng, SQLite có bộ nhớ cache riêng của mình. Kiểm tra ví dụ PRAGMA cache_size. Ngoài ra, nếu bạn đang tìm kiếm các tăng tốc, hãy kiểm tra PRAGMA temp_store. Ngoài ra còn có API để triển khai bộ nhớ cache của riêng bạn.

  2. Cơ sở dữ liệu SQLite chỉ là một tệp cho hệ điều hành. Không có gì được 'tự động' thực hiện cho nó. Để đảm bảo bộ nhớ đệm xảy ra, có sqlite.h định nghĩa và cài đặt pragma thời gian chạy.

  3. Điều đó phụ thuộc, có rất nhiều trường hợp khi bạn sẽ bị chậm lại.

+1

Trên # 2, bạn có nghĩa là sqlite thực sự yêu cầu hệ điều hành không sử dụng bộ đệm đĩa không? –

+0

@Mechanicalsnail Tôi có nghĩa là hệ điều hành sẽ không "tự động" làm bất cứ điều gì cho cơ sở dữ liệu SQLite mà nó không làm cho bất kỳ tập tin nào khác. – hamstergene

+0

nhưng sau đó sẽ không đọc (và viết) được lưu trữ? –

0

bao nhiêu tăng tốc tôi có thể mong đợi bằng cách sử dụng một cơ sở dữ liệu sản xuất (MySQL hoặc Postgres) thay vì sqlite?

Bạn đang sử dụng sqlite trong môi trường máy chủ sản xuất? Bạn có lẽ không nên là:

Từ Appropriate Uses for Sqlite:

SQLite thường sẽ làm việc tốt như là phụ trợ cơ sở dữ liệu cho một trang web. Nhưng nếu trang web của bạn quá bận rộn đến nỗi bạn đang nghĩ đến việc tách thành phần cơ sở dữ liệu thành một máy riêng biệt, thì bạn nên chắc chắn xem xét sử dụng cơ sở dữ liệu máy chủ/máy khách cấp doanh nghiệp thay vì SQLite.

SQLite không được thiết kế tốt và không bao giờ có ý định mở rộng tốt; Các giao dịch SQLite thuận tiện cho hiệu năng; nếu hiệu suất là một mối quan tâm, bạn nên xem xét một DBMS khác là

+6

Trang bạn liên kết cụ thể nói rằng SQLite * hoạt động tốt trong môi trường sản xuất lên tới 100 nghìn đến 1000 nghìn lần truy cập mỗi ngày (hoặc, như họ nói, 99,9% trang web). Chỉ khi bạn di chuyển cơ sở dữ liệu đến máy chủ riêng biệt với máy chủ web, chúng đề xuất một máy chủ cơ sở dữ liệu thực. –

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