Bạn có thể sử dụng các bảng hợp nhất, tuy nhiên chúng cổ hơn từ các phiên bản 4.x. Do ứng dụng của bạn được phân vùng thủ công vì đây là một) bạn đang chạy phiên bản thực sự cũ hoặc b) nhà phát triển ban đầu không biết về phân vùng bảng.
Nói tóm lại, nếu bạn đang chạy 5.1+, bạn có thể để mysql thực hiện phân vùng này cho bạn. Xem
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html Nếu bạn đang sử dụng 5.5, bạn nên kiểm tra các tài liệu cụ thể đó vì bạn sẽ tìm thấy một số khác biệt.
Có nhiều lợi thế để phân vùng. Tuy nhiên, nó thực sự phụ thuộc vào bộ dữ liệu trong tay, các mẫu truy cập và cách lập chỉ mục. Ngoài ra, hãy ghi nhớ các nhận xét sau đây của tôi trong bối cảnh phân vùng mysql 5+, KHÔNG phải các bảng Hợp nhất mysql cũ hơn; mặc dù đôi khi chúng được thảo luận về các phân vùng.
Vài ví dụ:
- Khóa thẳng (băm) dựa trên khóa tra cứu thường xuyên truy cập. Nếu bạn luôn luôn tìm kiếm bằng một khóa chính hoặc khóa duy nhất khác thì mysql có thể cắt không gian tìm kiếm theo hệ số bao nhiêu phân vùng bạn có. Lưu ý tuy nhiên điều này có thể gây bất lợi nếu bạn phân vùng theo một khóa và sau đó thường xuyên tìm kiếm theo khóa khác. Nếu bạn tìm kiếm theo một khóa, dữ liệu không được phân vùng theo thì nó phải thực hiện nhiều tìm kiếm hơn trên các tra cứu (một cho mỗi phân vùng, b / c thẳng thắn, nó không biết dữ liệu ở đâu)
- Hãy xem xét các tình huống là bạn có một bộ hồ sơ tạm thời phát triển theo ngày và bạn định kỳ cắt tỉa tháng trước. Nếu bạn đang phân vùng theo ngày thì bạn có thể chỉ cần bỏ một phân vùng nhanh như thả bảng, bất kể lớn như thế nào. Nếu bạn muốn cắt tỉa một bảng như vậy theo ngày, bạn phải đưa ra một hoặc nhiều truy vấn XÓA trong đó mỗi hàng riêng lẻ sẽ bị xóa. Nhược điểm của điều này là mysql không tự động tạo các phân vùng mới sau khi bạn đạt đến ngày tối đa bạn đã tính trong kịch bản này; bạn cần thêm các kịch bản bảo trì được xây dựng trên phần của bạn để thêm các phân vùng khi chúng cần thiết.
- Nếu bạn đang sử dụng kiểm tra myisam và phục hồi nhanh hơn nhiều. Hãy xem xét một bảng myisam 100G. Nếu bạn muốn khôi phục một bảng bị hỏng, bạn sẽ cần ít nhất khoảng 100G dung lượng đĩa dự phòng. Nếu nó được phân chia thành 10 khối khác nhau có kích thước bằng nhau thì bạn chỉ cần 10G dung lượng (và ít bộ nhớ key_sort_buffer để phục hồi nhanh); nhưng sẽ cần phải lặp lại cho mỗi phân vùng.
Vì vậy, tóm lại, cách tiếp cận chung của các bảng phân vùng có thể mang lại nhiều lợi ích. Tuy nhiên, đó không phải là một viên đạn ma thuật được áp dụng một cách mù quáng mà không xem xét đến các mẫu truy cập và cách chính xác bạn đang phân vùng.
Tôi có thể tưởng tượng các tình huống trong đó phân vùng mong muốn rất cụ thể cho ứng dụng và sẽ phù hợp hơn để có logic đó trong lớp ứng dụng. Tuy nhiên, với mô tả 10 mô-đun thẳng của bạn, điều này không giống như trường hợp như vậy.
BIÊN TẬP
Khi viết lên mô tả của tôi, tôi quên rằng bạn đã nêu bảng của bạn là 100K hàng. Với lược đồ đầy đủ của bảng và chiều dài hàng trung bình, thật khó để nói chắc chắn, nhưng nói chung, âm thanh có kích thước trung bình ngay cả đối với phần cứng khiêm tốn. Đồng thời, nếu nó không gây ra vấn đề như hiện tại hoặc trong tương lai gần thì đừng dành thời gian và đưa ra rủi ro bằng cách thay đổi nó.