Chúng tôi có cơ sở dữ liệu theo dõi mysql có ~ 100 triệu hàng. Chúng tôi thường chạy truy vấn nhóm theo ngày cho một số hành động nhất định, lượt truy cập duy nhất, v.v. Vấn đề là truy vấn đang chậm để tạo báo cáo hàng tháng do tương tác của các chỉ mục (chúng tôi có quét phạm vi cho ngày rồi truy vấn dựa trên nhiều các lĩnh vực khác.)có bất lợi nào trong việc xóa bảng theo dõi theo ngày không?
Để cải thiện hiệu suất, chúng tôi đã chuyển sang thực hiện công đoàn dựa trên ngày để tránh quét phạm vi và hiệu suất tốt hơn nhiều. Vì vậy, ý tưởng đã được trình bày rằng có lẽ chúng ta chỉ nên phân tích theo ngày với một bảng khác nhau cho mỗi ngày. Những lợi thế dường như là:
- chèn nhanh - mỗi ngày bàn mới/nhỏ nên luôn luôn nhanh.
- xóa dữ liệu cũ đơn giản (thay vì xóa 5M hàng khỏi bảng hàng 100M, chúng tôi chỉ có thể thả bảng)
- Cách tiếp cận hiện tại của chúng tôi là thực hiện công đoàn - vì vậy chúng tôi chỉ kết hợp các bảng khác nhau thay vì các giá trị khác nhau từ một bảng.
Có ai đã nghe hoặc thử phương pháp này không? Có vấn đề gì không?
Lưu ý: Chúng tôi đang xem xét các cách tiếp cận noSQL khác - nhưng chúng tôi muốn biết đây có phải là phương pháp hợp lệ hay không nếu chúng tôi quyết định ở lại với MySQL (vì vậy, đừng đề nghị "thử XYZ noSQL DB"). Ngoài ra, tôi hiểu rằng chúng ta chỉ có thể có được một máy tốt hơn và trong phạm vi bộ dữ liệu, điều này không lớn - nhưng chúng tôi không muốn lãng phí tiền trên một máy lớn hơn nếu nhỏ hơn sẽ hoạt động mà không cần thêm nhiều công việc.
Nếu có thể, bạn có thể thấy hữu ích khi lưu trữ kết quả hàng ngày trong một bảng riêng biệt, sau đó chạy truy vấn báo cáo trên đó. Ngoài ra, nếu bạn cũng làm báo cáo hàng tuần (đôi khi ngay cả khi bạn không), nó có thể là đáng giá để chạy truy vấn hàng tuần trên các giá trị tổng hợp hàng ngày và lưu trữ kết quả trong một khác, hàng tuần, bảng. Với một chút khó chịu, bạn có thể nhận được * gần như * mọi thông tin của khoảng thời gian ngay lập tức (tôi phải làm điều này một lần để hỗ trợ báo cáo qua biểu đồ động AJAX). Để lưu trữ và INSERT, phân vùng dựa theo ngày ngang sẽ là bạn của bạn. – LSerni