Làm việc với Hash Partition để tối ưu hiệu suất truy vấn trong SQL Server

Bạn đang học quản trị sql server muốn tối ưu hiệu suất truy vấn đối với bảng dữ liệu lớn ? Hãy khám phá ngay bài viết này để tìm hiểu về Hash Partition trong SQL Server qua ví dụ minh họa chi tiết.

Trong SQL Server, Hash Partitioning là một kỹ thuật phân vùng dữ liệu dựa trên giá trị băm (hash) của một cột nào đó, nhằm phân phối dữ liệu đồng đều giữa các phân vùng. Tuy nhiên, SQL Server không hỗ trợ trực tiếp Hash Partitioning như một tính năng riêng biệt (như trong Oracle hay PostgreSQL). Thay vào đó, bạn có thể thực hiện Hash Partitioning bằng cách sử dụng Partition Function và Partition Scheme kết hợp với một biểu thức băm.


Làm việc với Hash Partition trong SQL Server

1. Tạo Partition Function
Giả sử bạn muốn chia bảng thành 4 phân vùng dựa trên giá trị băm của CustomerID.

CREATE PARTITION FUNCTION pf_HashPartition (INT)
AS RANGE LEFT FOR VALUES (0, 1, 2);
Điều này tạo ra 4 phân vùng:
- Partition 1: Hash % 4 = 0
- Partition 2: Hash % 4 = 1
- Partition 3: Hash % 4 = 2
- Partition 4: Hash % 4 = 3 (mặc định)

2. Tạo Partition Scheme

CREATE PARTITION SCHEME ps_HashPartition
AS PARTITION pf_HashPartition
ALL TO ([PRIMARY]); -- hoặc chỉ định các filegroup khác nhau
3. Tạo bảng với cột phụ để lưu giá trị băm

CREATE TABLE Customer (
    CustomerID INT identity NOT NULL,
    CustomerName NVARCHAR(250),
    Phone varchar(20),
    -- Cột tính toán mô phỏng hash
    HashPartitionKey AS ABS(CHECKSUM(CustomerID)) % 4 PERSISTED,
    constraint PK_Customer primary key(CustomerID, HashPartitionKey)
)
ON ps_HashPartition(HashPartitionKey);
Trong đó: CHECKSUM() hoặc HASHBYTES() được dùng để tạo giá trị băm. ABS(... % 4) đảm bảo giá trị nằm trong khoảng 0–3.

4. Thêm dữ liệu mẫu

INSERT INTO Customer (CustomerID, Name)
VALUES
(101, 'Nguyen Van Anh'),
(102, 'Tran Thi Ha'),
(103, 'Le Van Cuong'),
(104, 'Pham Thi Diep'),
(105, 'Hoang Van Minh'),
(106, 'Do Thi Tuoi'),
(107, 'Bui Van Giang'),
(108, 'Dang Thi Hue');
5. Truy vấn dữ liệu và kiểm tra phân vùng

SELECT
    CustomerID,
    Name,
    HashValue,
    $PARTITION.pf_HashPartition(HashPartitionKey) AS PartitionNumber
FROM Customer
ORDER BY PartitionNumber;
Trong đó: Cột PartitionNumber sẽ cho biết mỗi dòng thuộc phân vùng nào (1 đến 4).

Ưu điểm của Hash Partitioning

  • Phân phối dữ liệu đồng đều hơn so với Range Partitioning.
  • Hữu ích trong các hệ thống có khối lượng truy cập đồng thời cao.

Nhược điểm

  • Không hỗ trợ trực tiếp trong SQL Server, cần mô phỏng.
  • Không tối ưu cho các truy vấn theo phạm vi (range queries).

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 Hash Partition trong SQL Server với hướng dẫn chi tiết 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: hash partition trong sql server, tìm hiểu partition trong sql server