Làm việc với List Partition để phân vùng dữ liệu trong SQL Server

Trong bài viết này Stanford sẽ giới thiệu đến các bạn học sql server sử dụng dạng List Partition để phân vùng dữ liệu để tăng hiệu suất truy vấn trong SQL Server.

Trong SQL Server, không có hỗ trợ trực tiếp cho List Partitioning như trong Oracle hay PostgreSQL. Tuy nhiên, bạn có thể sử dụng List Partitioning bằng cách sử dụng:

  • Partition Function với các giá trị cụ thể (giống danh sách).
  • Computed Column hoặc CHECK constraints để phân chia dữ liệu theo danh sách giá trị cụ thể.


Hướng dẫn sử dụng List Partition trong SQL Server

Ví dụ: Sử dụng List Partition trong SQL Server. Bảng làm việc là bảng thông tin Hàng hóa với các mã quốc gia quy định như sau: 0: VN, 1: TQ, 2: USA, 3: NB

Bước 1: Tạo Partition Function
Vì SQL Server không hỗ trợ trực tiếp kiểu VARCHAR trong phân vùng, ta cần ánh xạ vùng miền thành số nguyên.

-- 0: VN, 1: TQ, 2: USA, 3: NB
CREATE PARTITION FUNCTION pf_ListPartition(int)
AS RANGE LEFT FOR VALUES (0, 1, 2, 3);
Bước 2: Tạo Partition Scheme

CREATE PARTITION SCHEME ps_ListPartition
AS PARTITION pf_ListPartition
ALL TO ([PRIMARY]); -- hoặc phân phối vào các filegroup khác nhau
Bước 3: Tạo bảng với cột ánh xạ mã quốc gia

CREATE TABLE HangHoa (
    MaHang INT identity,
    TenHang NVARCHAR(150),
    MoTa nvarchar(500),
    XuatXu varchar(10),
    -- Cột ánh xạ vùng miền thành số để phân vùng
    XuatXuKey AS
        CASE
            WHEN XuatXu = 'VN' THEN 0
            WHEN XuatXu = 'TQ' THEN 1
            WHEN XuatXu = 'USA' THEN 2
            WHEN XuatXu = 'NB' THEN 3
            ELSE 0
        END PERSISTED,--Giá trị sẽ được lưu vào cột
        constraint PK_HangHoa primary key(MaHang, XuatXuKey)
)
ON ps_ListPartition(XuatXuKey);
Bước 4: Thêm dữ liệu và kiểm tra phân vùng

--Thêm dữ liệu
insert into HangHoa(TenHang, MoTa, XuatXu)
values('iPhone 13 Pro max', N'Điện thoại 128GB', 'TQ');
insert into HangHoa(TenHang, MoTa, XuatXu)
values('iPhone 14 Pro max', N'Điện thoại 128GB', 'TQ');
insert into HangHoa(TenHang, MoTa, XuatXu)
values('iPhone 15 Pro max', N'Điện thoại 128GB', 'USA');
insert into HangHoa(TenHang, MoTa, XuatXu)
values('iPhone 16 Pro max', N'Điện thoại 256GB', 'VN');
Sau đó bạn có thể thực hiện chạy lệnh sau để kiểm tra dữ liệu thuộc phân vùng nào như sau:

Select MaHang, TenHang, XuatXu, XuatXuKey, $Partition.pf_ListPartition(XuatXuKey) as PartitonNumber
from HangHoa;
Trong đó:

  • XuatXuKey là cột tính toán ánh xạ giá trị chuỗi thành số nguyên.
  • Partition Function chia thành 4 phân vùng tương ứng với 4 mã quốc gia.
  • Bạn có thể mở rộng thêm vùng bằng cách cập nhật Partition Function.

Như vậy qua bài viết này Stanford đã giúp các bạn học sql hiểu hơn về kỹ thuật Partition sử dụng loại List Partition trong SQL Server với từng bước làm cụ thể giúp tối ưu hiệu suất khi truy vấn dữ liệu đối với bảng dữ liệu lưu trữ lớn.

Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao có thể tham gia ngay khóa học sql cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé.

=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I

Tags: làm việc với partition trong sql server, tìm hiểu partition trong sql server