Tôi có một trang PHP cụ thể, vì nhiều lý do, cần lưu ~ 200 trường vào cơ sở dữ liệu. Đây là 200 câu lệnh chèn và/hoặc cập nhật riêng biệt. Bây giờ điều hiển nhiên là làm giảm số lượng này nhưng, như tôi đã nói, vì những lý do tôi sẽ không bận tâm đến việc tôi không thể làm điều này.Làm cách nào để triển khai bộ nhớ đệm ghi đè nền/không đồng bộ trong PHP?
Tôi đã không mong đợi vấn đề này. Lựa chọn có vẻ có hiệu quả hợp lý trong MySQL nhưng chèn/cập nhật không (mất khoảng 15-20 giây để thực hiện cập nhật này, điều này hoàn toàn không thể chấp nhận được). Tôi đã viết các hệ thống Java/Oracle có thể thực hiện hàng ngàn lần chèn/cập nhật một cách vui vẻ (trong cả hai trường hợp chạy cơ sở dữ liệu cục bộ; MySQL 5 so với OracleXE).
Bây giờ trong một cái gì đó giống như Java hay Net tôi có thể khá dễ dàng làm một trong các cách sau:
- Viết dữ liệu vào một trong bộ nhớ ghi-đằng sau bộ nhớ cache (tức là nó sẽ biết làm thế nào để tồn tại vào cơ sở dữ liệu và có thể làm như vậy một cách không đồng bộ);
- Ghi dữ liệu vào bộ nhớ cache trong bộ nhớ và sử dụng mô hình PaaS (Persistence as a Service) tức là người nghe đến bộ nhớ cache sẽ tiếp tục tồn tại các trường; hoặc
- Chỉ cần bắt đầu quá trình nền có thể duy trì dữ liệu.
Giải pháp tối thiểu là có bộ nhớ cache mà tôi có thể cập nhật, sẽ tự động truy cập cơ sở dữ liệu theo thời gian riêng (tức là nó sẽ trở lại ngay sau khi cập nhật bộ nhớ đệm trong bộ nhớ). Điều này có thể là bộ đệm ẩn toàn cục hoặc bộ nhớ cache phiên (mặc dù bộ nhớ cache được chia sẻ chung có kháng cáo theo các cách khác).
Bất kỳ giải pháp nào khác cho loại vấn đề này?
Bit "tối ưu hóa sớm" là lời khuyên tốt. Các bảng không quá phức tạp nhưng tôi có một vài điều tôi có thể kiểm tra ngay bây giờ (chỉ mục và cơ sở dữ liệu). – cletus
làm cách nào để trả lời câu hỏi liên quan đến chèn không đồng bộ? – nightograph