Bạn có thể sử dụng ALTER TABLE
để bật tính năng nén trên bảng hiện có trong SQL Server.
Để làm điều này, bạn cần sử dụng REBUILD WITH
trong khi chỉ định loại nén mong muốn của bạn.
Ví dụ
Đây là một ví dụ để chứng minh.
ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = ROW);
Trong trường hợp này, tôi đã tạo lại bảng bằng cách sử dụng nén hàng.
Phần sau sẽ xây dựng lại nó bằng tính năng nén trang.
ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = PAGE);
Áp dụng tính năng nén cho một phân vùng duy nhất
Nếu bảng của bạn được phân vùng, bạn có thể chỉ định phân vùng đó để xây dựng lại bằng tính năng nén.
ALTER TABLE Cats
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = ROW);
Cách loại bỏ nén
Bạn có thể loại bỏ phần nén bằng cách sử dụng NONE
dưới dạng kiểu nén.
ALTER TABLE Cats
REBUILD WITH (DATA_COMPRESSION = NONE);
Bảng Columnstore
Nếu bạn đang sử dụng bảng columnstore (các bảng được lưu trữ bằng chỉ mục columnstore được phân cụm), thì các kiểu nén ở trên không áp dụng. Trong trường hợp này, các tùy chọn nén của bạn là COLUMNSTORE
và COLUMNSTORE_ARCHIVE
.
Hạn chế / Hạn chế
Không thể bật bảng hệ thống để nén.
Nếu bảng là một heap (bảng không có chỉ mục được phân cụm), thì thao tác xây dựng lại cho ONLINE
chế độ sẽ là một luồng. Đối với hoạt động xây dựng lại heap đa luồng, hãy sử dụng OFFLINE
chế độ.
Ngoài ra, khi sử dụng các bảng được phân vùng, các hạn chế sau sẽ được áp dụng:
- Bạn không thể thay đổi cài đặt nén của một phân vùng nếu bảng không có chỉ mục không được đánh dấu.
-
ALTER TABLE <table> REBUILD PARTITION ...
cú pháp xây dựng lại phân vùng được chỉ định. -
ALTER TABLE <table> REBUILD WITH ...
cú pháp xây dựng lại tất cả các phân vùng.