PARTITION TABLE

A. TABLE PARTITION NEW FEATURE ORALE 12c RELEASE 2

  1. Khái niệm cơ bản

Khi làm việc với những Cơ sở dữ liệu của hệ thống lớn (Core banking ngân hàng, các hệ thống Billing của viễn thông, các hệ thống ERP…) chúng ta sẽ cần đối mặt với một trong các vấn đề vô cùng hóc búa “thiết kế Cơ sở dữ liệu làm sao hiệu năng tốt và ổn định”. Hôm nay tôi sẽ chỉ bàn đến 1 vấn đề trong chuỗi các kiến thức về thiết kế, tối ưu Cơ sở dữ liệu. Vấn đề chúng ta sẽ cùng nhau xem xét đó là “PARTITION TABLE”.

Đầu tiên chúng ta cần hiểu, thế nào là PARTITION TABLE . Các bạn hãy xem xét 1 trường hợp như sau :

Giả sử chúng ta có 02 phòng họp :

  • Trong phòng họp « CỔ ĐIỂN » có 1000 người. Những người trong phòng họp có thể tự do chọn vị trí, không có bất kỳ quy tắc nào cả.
  • Tại phòng họp có tên là « TÂN TIẾN », chúng ta cũng có 1000 người, tuy nhiên trong phòng họp này lại được chia thành 63 ô nhỏ ứng với 63 tỉnh thành.
    • Những người có quê quán là Nam Định sẽ vào ô có đặt tên là Nam Định, những người có quê quán là Hà Nội sẽ vào vào ô có ghi biển Hà Nội…

Giả sử chúng ta cần tìm tất cả những người có quê ở Ninh Bình. Bạn sẽ thấy ngay sự khác biệt khi tìm kiếm ở 2 phòng trên

  • Đối với phòng họp « CỔ ĐIỂN », chúng ta sẽ phải lọc trong 1000 người để tìm xem ai có quê NINH BÌNH
  • Đối với phòng họp « TÂN TIÊN », chúng ta chỉ cần bước vào phòng và đi tìm ô có tên « NINH BÌNH ». Tất cả những người đứng trong ô này sẽ hiển nhiên thỏa mãn điều kiện

-> Trong ví dụ trên thiết kế TABLE chứa dữ liệu theo kiểu phòng họp TÂN TIÊN là cách thiết kế table partition.

Việc thiết kế này rất cần thiết khi chúng ta phải làm với các dữ liệu lớn. Thực tế với các hệ thống tôi phải hỗ trợ, nhiều table có dung lương lớn hơn 10TB, nếu thiết kế dạng NON-PARTITION ( kiểu thiết kế giống phòng họp « CỔ ĐIỂN) thì những tương tác, xử lý dữ liệu sẽ không thể đáp ứng về hiệu năng.

Tuy nhiên có 01 lưu ý, việc thiết kế partition table sẽ phải xuất phát từ yêu cầu của nghiệp vụ, chẳng hạn như trong trường hợp trên, nếu chúng ta mục tiêu cần tìm tất cả những người sinh năm 1990 – 1993 thì hiển nhiên việc sắp xếp như phòng họp « TÂN TIÊN » sẽ không đem lại hiệu quả (vì đang chia theo điều kiện « QUÊ QUÁN »).

 

B. Partition table trong phiên bản Oracle 12cR2

  1. Multi-column List Partitioning

a. Demo sử dụng Multi-column List partitioning

Trước phiên bản Oracle 12cR2, một table dạng LIST PARTITIONING có một giới hạn : partition key chỉ có thể sử dụng 01 column. Tuy nhiên từ phiên bản Oracle 12cR2, giới hạn này đã bị phá bỏ, partition key chúng ta có thể sử dụng 01 hoặc nhiều column. Các bạn có thể theo dõi demo sau để thấy rõ về tính năng này

Bước 1 : Tạo table partition dạng list sử dụng 02 column

create table test_list (a number, b number)

partition by list (a, b)

(partition p1 values ((1,2),(3,4)),

partition p2 values ((4,4)),

partition p3 values (default));

 

Table created.

 

Bước 2: Kiểm tra thông tin bảng sau khi đã tạo

select table_name, partitioning_type, partitioning_key_count

from user_part_tables

where table_name=’TEST_LIST’;

 

TABLE_NAME PARTITIONING_TYPE PARTITIONING_KEY_COUNT
TEST_LIST LIST 2

-> Bạn sẽ thấy kết quả PARTITIONING_KEY_COUNT là 02 (hệ thống sử dụng 02 cột để làm partition key)

 

Bước 3: Sử dụng câu lệnh sau để kiểm tra lại thông tin các giá trị partition key

select partition_name, high_valuefrom user_tab_partitions where table_name=’TEST_LIST’;

 

PARTITION_NAME HIGH_VALUE
P1 ( 1, 2 ), ( 3, 4 )
P2 ( 4, 4 )
P3 default

 

Bước 4: Chúng ta sẽ thêm 01 số dữ liệu vào bảng để xem phân bổ vào các partition thực tế ra sao

insert into test_list values (1,2);

insert into test_list values (1,3);

insert into test_list values (10,10);

insert into test_list values (2,2);

insert into test_list values (4,5);

commit;

 

Bước 5: Kiểm tra thông tin dữ liệu trong các partition

— Dữ liệu trong partition p1

select * from test_list partition (p1);

A B
1 2

 

— Dữ liệu trong partition p2

select * from test_list partition (p2);

no data found

 

— Dữ liệu trong partition p3

select * from test_list partition (p3);

A B
10 10
1 3
4 5
2 2

 

b. Demo thực hiện Split LIST PARTITION (Coming Soon!)

Lỗi tsnping đến database local rất lâu

Đồng hành cùng doanh nghiệp vượt qua khó khăn giai đoạn Covid-19, chúng tôi tặng bạn Voucher giảm giá 60% dịch vụ kiểm tra sức khỏe cơ sở dữ liệu toàn diện, dịch vụ Database Health Check giúp CSDL của bạn luôn khỏe mạnh!
Chi tiết xem tại đây!

 

Leave a Reply

avatar
  Subscribe  
Notify of