Bảng phân vùng Oracle là gì?
Phân vùng chia một bảng, chỉ mục hoặc bảng được tổ chức theo chỉ mục thành các thành phần nhỏ hơn. Mỗi thành phần được gọi là một phân vùng (hoặc phân vùng con cho các đối tượng được phân vùng hỗn hợp). Mọi phân vùng đều có một tên duy nhất và có thể có các đặc điểm lưu trữ riêng theo tùy chọn:ví dụ bao gồm nén hoặc được lưu trữ trong các không gian bảng khác nhau. Chiến lược phân vùng được thiết kế tốt có thể cải thiện khả năng truy cập và cập nhật truy vấn bằng cách giới hạn hoạt động trong một tập hợp phân vùng đơn hoặc phụ.
Phân vùng cho Hiệu suất - Tỉa phân vùng
Tính năng bảng được phân vùng của Oracle cho phép trình tối ưu hóa truy vấn bỏ qua các phân vùng không được yêu cầu bởi một câu lệnh SQL cụ thể. Tùy thuộc vào câu lệnh SQL, trình tối ưu hóa có thể xác định các phân vùng và phân vùng phụ cần được truy cập cũng như những phân vùng không cần truy cập. Điều này có thể dẫn đến những cải tiến đáng kể về hiệu suất truy vấn, vì trình tối ưu hóa tập trung vào một tập hợp con dữ liệu cụ thể có thể được tinh chỉnh thêm nếu tồn tại các vị từ bổ sung.
Trình tối ưu hóa thực hiện điều này bằng cách sử dụng thông tin phân vùng được lưu trữ trong từ điển dữ liệu để xác định nội dung của một phân vùng mà không cần truy vấn dữ liệu mà nó chứa. Phân vùng là một lớp bổ sung của từ điển dữ liệu giữa Bảng / Chỉ mục và Không gian bảng
Giới hạn của bảng phân vùng
Trong Cơ sở dữ liệu Oracle 11g, một bảng có thể có tối đa 1048575 (1024K - 1) phân vùng. Với ngoại lệ duy nhất của các bảng chứa các cột kiểu dữ liệu DÀI hoặc DÀI, tất cả các bảng đều có thể được phân vùng (bao gồm các cột kiểu CLOB hoặc BLOB).
Loại phân vùng bảng
Tính năng phân vùng có sẵn trong cơ sở dữ liệu Oracle từ phiên bản 8.0 và oracle liên tục bổ sung thêm nhiều tính năng sau mỗi lần phát hành. Bảng sau đây cho thấy tóm tắt những thay đổi chính
Chiến lược phân vùng chính do Oracle đưa ra là
(1) Phạm vi
(2) Danh sách
(3) Băm
(4) Kết hợp
Cách tạo Bảng phân vùng
Tùy thuộc vào loại phân vùng, đây là cách tạo bảng phân vùng
Phân vùng theo phạm vi
Oracle Phân vùng dữ liệu dựa trên các dải giá trị liên tiếp của khóa Phân vùng.
Điểm cuối của mỗi phân vùng được chỉ định bằng cú pháp sau:
VALUES LESS THAN (value-list)
Ví dụ
CREATE TABLE EXP_RANGE (ID NUMBER(15) NOT NULL, CODE_ID NUMBER(15) NOT NULL, PERIOD_NAME VARCHAR2(15) NOT NULL, ACTUAL_FLAG VARCHAR2(1) NOT NULL, VERSION_ID NUMBER(15), LAST_UPDATE_DATE DATE NOT NULL, . . . . . . ) PARTITION BY RANGE (PERIOD_NAME) ( PARTITION PR1 VALUES LESS THAN ('JAN-2019'), PARTITION PR2 VALUES LESS THAN ('FEB-2019') . . . . . . );
Phân vùng theo phạm vi rất hữu ích để phân vùng dữ liệu lịch sử và giao dịch, vì ranh giới của phân vùng phạm vi xác định thứ tự phân vùng trong các bảng và chỉ mục
Phân vùng danh sách
Trong phương pháp này, oracle ánh xạ các hàng cụ thể tới các phân vùng, dựa trên danh sách tĩnh các giá trị theo nghĩa đen. Khóa phân vùng để phân vùng danh sách chỉ có thể dựa trên một cột duy nhất.
CREATE TABLE EXP_LIST (ID NUMBER NOT NULL, ORG_ID NUMBER, OPEN_FLAG VARCHAR2(4) NOT NULL, . . . . . . ) PARTITION BY LIST (open_flag) ( PARTITION PR1 VALUES ('YES'), PARTITION PR2 VALUES ('NO') );
Phân vùng băm
Trong tiên tri này đã sử dụng thuật toán băm để quyết định vị trí vật lý của dữ liệu. Phân vùng băm sẽ phân phối dữ liệu đồng đều trên một số phân vùng cố định.
CREATE TABLE EXP_HASH (ID NUMBER NOT NULL, ORG_ID NUMBER, ORDERED_ITEM VARCHAR2(2000), OPEN_FLAG VARCHAR2(1) NOT NULL, . . . . . . ) PARTITION BY HASH (ID) PARTITIONS 10 . . . . . .; );
Phân vùng hỗn hợp
Trong tiên tri này đã sử dụng kết hợp phạm vi, danh sách và phân vùng băm. Các phương pháp phân vùng tổng hợp là phạm vi băm hoặc danh sách phạm vi.
CREATE TABLE sales_details ( prod_id NUMBER(6) , cust_id NUMBER , time_id DATE , channel_id VARCHAR2(1) , promo_id NUMBER(6) , quantity_sold NUMBER(3) , amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) SUBPARTITION BY HASH (cust_id) SUBPARTITIONS 8 STORE IN (ts1, ts2, ts3, ts4) ( PARTITION sales_q1_2019 VALUES LESS THAN (TO_DATE('01-APR-2019','dd-MON-yyyy')) , PARTITION sales_q2_2019 VALUES LESS THAN (TO_DATE('01-JUL-2019','dd-MON-yyyy')) , PARTITION sales_q3_2019 VALUES LESS THAN (TO_DATE('01-OCT-2019','dd-MON-yyyy')) , PARTITION sales_q4_2019 VALUES LESS THAN (TO_DATE('01-JAN-2019','dd-MON-yyyy')) );
Cách di chuyển đối tượng hiện có sang đối tượng được phân vùng
Có nhiều cách để đạt được kỳ tích này. Tôi đang giải thích ở đây phương pháp đơn giản
1.Tạo một bảng được phân vùng trống bằng cách sử dụng mệnh đề phân vùng và với tùy chọn song song. Tên bảng phải có tên khác với bảng không được phân vùng.
2. Điền dữ liệu cho phân vùng bắt buộc từ bảng không được phân vùng.
3. Hãy xem xét sử dụng gợi ý tiên tri APPEND với câu lệnh INSERT như một sự thay đổi mã dễ dàng mang lại hiệu suất tốt. Nếu tính năng ghi nhật ký được bật và có các chỉ mục thì gợi ý INSERT / * + APPEND * / có thể không hiệu quả.> 4.Đổi tên bảng được phân vùng giống như bảng gốc hoặc thay đổi từ đồng nghĩa.
5. Tạo chỉ mục bảng cho bảng được phân vùng
Cũng đã đọc
Chỉ mục phân vùng Oracle
Truy vấn song song của Oracle
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm