1. Hệ quản trị cơ sở dữ liệu
Partitioning
Dư Phương Hạnh
Bộ môn Hệ thống thông tin
Khoa CNTT, trường Đại học Công nghệ
Đại học Quốc gia Hanoi
hanhdp@vnu.edu.vn
2. Phân mảnh
Các phần của bảng được lưu như các bảng riêng
biệt tại các vị trí khác nhau
Cho phép phân phối các phần của bảng trên hệ
thống file tuân theo các luật được thiết lập.
Luật phân chia dữ liệu được chọn bởi người dùng
được gọi là hàm phân mảnh (partitioning function)
2
Hệ quản trị CSDL @ BM HTTT
4. Một số ưu điểm của phân mảnh
Phân mảnh giúp lưu dữ liệu trong một bảng lớn hơn trên một đĩa
hoặc phân vùng hệ thống file
Dữ liệu không còn hữu ích có thể thường xuyên loại bỏ dễ dàng
bằng cách xóa phân vùng
Một số truy truy vấn có thể tối ưu nếu dữ liệu thỏa mãn mệnh đề
WHERE được xác định lưu trữ trong một hoặc nhiều phân vùng
Do các phân vùng có thể sửa đổi sau khi bảng được tạo, có thể tổ
chức lại dữ liệu để nâng cao các truy vấn thường xuyên
4
Hệ quản trị CSDL @ BM HTTT
5. Các kiểu phân mảnh
Khoảng (RANGE): gán các dòng vào các phân mảnh dựa vào giá
trị của cột nằm trong một khoảng
Danh sách (List): tương tự như khoảng, nhưng danh sách là một
tập các giá trị rời rạc
Băm (HASH): dựa trên giá trị trả lại bởi biểu thức định nghĩa bởi
người dùng (tạo ra giá trị nguyên, không âm)
Khóa (KEY): tương tự phân mảnh bởi băm, ngoại trừ hàm băm
được cung cấp bởi MySQL server, đảm bảo kết quả trả lại là số
nguyên bất kỳ kiểu dữ liệu của cột. Bất kỳ các cột được sử dụng
như là khóa phân mảnh cần phải là một phần hoặc toàn bộ khóa
chính của bảng
5
Hệ quản trị CSDL @ BM HTTT
6. Ví dụ
CREATE TABLE members (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY KEY(joined) PARTITIONS 6;
6
Hệ quản trị CSDL @ BM HTTT
7. Ví dụ
CREATE TABLE members (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY RANGE( YEAR(joined) )(
PARTITION p0 VALUES LESS THAN (1960),
PARTITION p1 VALUES LESS THAN (1970),
PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
7
Hệ quản trị CSDL @ BM HTTT
8. Ví dụ
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, store_id INT
) PARTITION BY LIST(store_id) (
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);
8
Hệ quản trị CSDL @ BM HTTT
9. Ví dụ
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, store_id INT
)
PARTITION BY HASH( YEAR(hired) )
PARTITIONS 4;
9
Hệ quản trị CSDL @ BM HTTT
10. EXPLAIN PARTITIONS
Sử dụng EXPLAIN PARTITIONS SELECT để xem
các phân vùng nào được sử dụng trong lệnh
SELECT
10
Hệ quản trị CSDL @ BM HTTT
11. Quản lý phân mảnh
MySQL 5.5 hỗ trợ một số cách để sửa đổi các bảng
phân mảnh: thêm, xóa, định nghĩa lại, hòa trộn, tách
các mảnh đã tồn tại sử dụng câu lệnh ALTER
TABLE
– PARTITION BY, ADD PARTITION, DROP PARTITION,
REORGANIZE PARTITION, COALESCE PARTITION
11
Hệ quản trị CSDL @ BM HTTT
12. Ví dụ
ALTER TABLE trb3 PARTITION BY KEY(id)
PARTITIONS 2;
ALTER TABLE tr DROP PARTITION p2;
ALTER TABLE ADD PARTITION (PARTITION p3
VALUES LESS THAN (2000));
12
Hệ quản trị CSDL @ BM HTTT
13. Thông tin về các phân mảnh
SHOW CREATE TABLE
SHOW TABLE STATUS
Truy vấn bảng
INFORMATION_SCHEMA.PARTITIONS
13
Hệ quản trị CSDL @ BM HTTT
14. Giới hạn và hạn chế của phân mảnh
Thao tác phân mảnh, truy vấn có xu hướng nhanh
hơn với bảng MyISAM so với các bảng InnoDB
Số lượng phân mảnh lớn nhất cho mỗi bảng là
1024
Không hỗ trợ khóa ngoài
Các bảng phân mảnh không hỗ trợ tìm kiếm FULL
TEXT
14
Hệ quản trị CSDL @ BM HTTT
15. Tài liệu tham khảo
http://www.mysql.com
http://dev.mysql.com/doc/refman/5.5/en/
http://www.learn-mysql-tutorial.com/
15
Hệ quản trị CSDL @ BM HTTT