2011-11-08 29 views
7

Theo lược đồ đặt giá mới của Google App Engine, tôi nhận được bảng định giá bất ngờ như được hiển thị bên dưới.Giảm lưu lượng dữ liệu đã đọc Hoạt động

enter image description here

Thủ phạm chính là, tôi nhận được một khổng lồ tăng lên trong "Datastore đọc Operations", chỉ trong vòng vài giờ, mặc dù chỉ có ít hơn 50 cuộc gọi đến tôi DownloadServlet

DownloadServlet sẽ chỉ đọc blob (Thường dưới 1 MB) từ cơ sở dữ liệu và trả lại cho người dùng. Có bất kỳ điều gì tôi có thể làm để tối ưu hóa mã của mình không, do đó tôi sẽ không đạt đến giới hạn hạn ngạch miễn phí quá nhanh.

+0

Bạn nên chuyển sang sử dụng blobstore thay vì lưu trữ dữ liệu trong kho dữ liệu dưới dạng blob. –

+0

Ít hoặc không thể giúp bạn nếu không nhìn thấy mã của bạn. Tại sao không chỉ ngân sách một số hạn ngạch tăng lên, mặc dù? –

+0

@NickJohnson Mã được xuất bản. Vui lòng xem liên kết được hướng dẫn bởi "DownloadServlet". –

Trả lời

9

Bạn đang thực hiện rất nhiều lần đọc vì bạn đã chia nhỏ các tệp của mình thành các khối 1MB trong kho dữ liệu. Kết quả là, bạn phải thực hiện một lần đọc cho mỗi đoạn và bởi vì bạn không sử dụng tên hoặc ID chính, bạn cũng đang thực hiện truy vấn cho mỗi tệp, làm giảm thêm hạn mức của bạn.

Lưu trữ dữ liệu của bạn trong cửa hàng blobstore thay thế.

3

Nếu dữ liệu bạn đọc từ kho dữ liệu tương đối tĩnh (ví dụ: văn bản cho mục nhập blog), bạn có thể xem xét lưu vào bộ nhớ cache dữ liệu trong memcache.

Không đảm bảo dữ liệu có thể tồn tại trong memcache trong bao lâu, vì vậy bạn cần thường xuyên tìm nạp lại dữ liệu từ kho dữ liệu trong trường hợp dữ liệu trong memcache bị vô hiệu, nhưng tiết kiệm cho các kho dữ liệu đọc sẽ khá đáng kể.

+0

Nó sẽ không giúp được gì nhiều. Vì dữ liệu dành riêng cho người dùng cá nhân. Tôi sẽ nói với <50 người dùng, bạn sẽ thấy thanh toán của mình bắt đầu chạy. –

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