Nếu bạn đang nói về khối lượng dữ liệu lớn hơn, thì hãy xem Phân vùng MySQL . Đối với các bảng này, phân vùng theo dữ liệu / thời gian chắc chắn sẽ giúp ích cho hiệu suất. Có một bài viết hay về phân vùng tại đây .
Xem xét việc tạo hai cơ sở dữ liệu riêng biệt:một cho tất cả dữ liệu thô để ghi với lập chỉ mục tối thiểu; một giây để báo cáo bằng cách sử dụng các giá trị tổng hợp; với quy trình hàng loạt để cập nhật cơ sở dữ liệu báo cáo từ cơ sở dữ liệu thô hoặc sử dụng bản sao để làm điều đó cho bạn.
CHỈNH SỬA
Nếu bạn muốn thực sự thông minh với các báo cáo tổng hợp của mình, hãy tạo một tập hợp các bảng tổng hợp ("hôm nay", "tuần đến ngày", "tháng đến nay", "theo năm"). Tổng hợp từ dữ liệu thô đến "hôm nay" hàng ngày hoặc trong "thời gian thực"; tổng hợp từ "theo ngày" đến "tuần đến nay" trên cơ sở hàng đêm; từ "tuần đến ngày" đến "tháng đến ngày" hàng tuần, v.v. Khi thực hiện truy vấn, hãy tham gia (UNION) các bảng thích hợp cho phạm vi ngày mà bạn quan tâm.
CHỈNH SỬA # 2
Thay vì một bảng cho mỗi máy khách, chúng tôi làm việc với một lược đồ cơ sở dữ liệu cho mỗi máy khách. Tùy thuộc vào kích thước của máy khách, chúng tôi có thể có một số lược đồ trong một cá thể cơ sở dữ liệu duy nhất hoặc một cá thể cơ sở dữ liệu chuyên dụng cho mỗi máy khách. Chúng tôi sử dụng các lược đồ riêng biệt để thu thập dữ liệu thô và để tổng hợp / báo cáo cho từng khách hàng. Chúng tôi chạy nhiều máy chủ cơ sở dữ liệu, giới hạn mỗi máy chủ trong một phiên bản cơ sở dữ liệu duy nhất. Để có khả năng phục hồi, cơ sở dữ liệu được sao chép trên nhiều máy chủ và cân bằng tải để cải thiện hiệu suất.