Phân vùng bảng là cách để thực hiện. Không tạo ra tất cả những cấu trúc bảng giống hệt nhau.
phân vùng bảng Điều gì sẽ cung cấp cho bạn
- Bạn sẽ có bảng duy nhất mà là một cách logic phân chia bởi các cơ sở dữ liệu.
- Trong giao diện ứng dụng của bạn, bạn đang truy vấn một bảng đơn giống như bất kỳ bảng cơ sở dữ liệu nào khác.
- Trong phối cảnh cơ sở dữ liệu, nó lưu trữ dữ liệu theo phân vùng được xác định bởi kiểu phân vùng và logic phân vùng. Trong mysql, bạn có thể tham khảo https://dev.mysql.com/doc/refman/5.7/en/partitioning-types.html
- Lợi ích hiệu suất nếu được xác định chính xác.Nó sẽ tránh quét 1 tỷ hàng nhưng thay vì quét phân vùng liên quan khi thực hiện truy vấn.
Phân vùng bảng có thể rất cụ thể về cơ sở dữ liệu.
Ví dụ đơn giản từ mysql.
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT NOT NULL,
store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
Nhân viên được lưu vào phân vùng cụ thể cho p0, p1, p2 hoặc p3 tùy thuộc vào cửa hàng (store_id) mà nhân viên đó thuộc.
Bạn vẫn đang truy cập thông qua một bảng duy nhất nhưng dữ liệu được lưu trữ hợp lý theo phân vùng tùy thuộc vào store_id.
SELECT * FROM employee WHERE store_id = 10
Cơ sở dữ liệu sẽ chỉ xem phân vùng p1 và không quét phân vùng khác (p0, p2 và p3) vì truy vấn đó sẽ không bao giờ tìm thấy dữ liệu trong phân vùng đó.
Làm thế nào để sử dụng ymal? –
Tại sao bạn lại chia nhỏ dữ liệu? Đây là một sai lầm trừ khi bạn có một lý do tuyệt vời. Một tỷ bản ghi không quá lớn cho ví dụ. postresql. Nó cho phép 32 bảng TB. Vì vậy, miễn là hồ sơ của bạn là 30Kb hoặc ít hơn bạn tốt để đi. MySQL cho phép nhiều bảng lớn hơn nhiều. – Gene
Vui lòng chỉ định cơ sở dữ liệu bạn đang sử dụng - mọi giải pháp sẽ liên quan nhiều đến các tính năng dành riêng cho DB. –