Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo bảng bằng nén trong SQL Server (T-SQL)

Khi bạn tạo một bảng trong SQL Server, bạn có tùy chọn sử dụng tính năng nén dữ liệu.

Nén dữ liệu giúp giảm kích thước của cơ sở dữ liệu. Nó cũng có thể giúp cải thiện hiệu suất của khối lượng công việc chuyên sâu I / O do dữ liệu được lưu trữ trong ít trang hơn, do đó giảm số lượng trang mà các truy vấn cần đọc từ đĩa.

Để thực hiện việc này, hãy sử dụng DATA_COMPRESSION khi tạo bảng.

Ví dụ

Đây là một ví dụ để chứng minh.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = ROW);

Trong trường hợp này, tôi sử dụng nén hàng.

Phần sau sử dụng tính năng nén trang.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = PAGE);

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 ALTER TABLE để tạo lại bảng, trong khi sử dụng NONE dưới dạng kiểu nén.

ALTER TABLE MOVIES
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à COLUMNSTORECOLUMNSTORE_ARCHIVE .

Kết quả nén có thể thay đổi

Số lượng nén bạn nhận được sẽ phụ thuộc vào dữ liệu và kiểu nén.

ROW nén, chẳng hạn, loại bỏ các byte không cần thiết khỏi các giá trị cột bằng cách lưu trữ chúng ở định dạng độ dài thay đổi. PAGE mặt khác, nén chỉ lưu trữ các giá trị lặp lại một lần trên mỗi trang và đặt con trỏ từ các cột tương ứng trong trang.

Đôi khi, bạn có thể thấy rằng việc nén một đối tượng không phải lúc nào cũng làm giảm kích thước của nó và trong một số trường hợp có thể thực sự tăng kích thước của nó.

Điều này có thể xảy ra nếu các cột của bạn sử dụng loại dữ liệu không được hưởng lợi từ việc nén.

Ngoài ra, nén hàng làm giảm chi phí siêu dữ liệu, nhưng trong một số trường hợp, tổng chi phí có thể lớn hơn định dạng lưu trữ cũ.

Nếu dữ liệu của bạn không nhận được lợi ích nào từ việc nén do loại dữ liệu của nó, thì có khả năng chi phí sẽ làm tăng yêu cầu lưu trữ hơn là giảm.

Nhưng các biến thể về kích thước nén cũng sẽ phụ thuộc vào dữ liệu thực tế. Ví dụ:nếu bạn có char (10) cột, nén sẽ loại bỏ mọi ký tự đệm ở cuối. Nếu bạn có nhiều hàng có ký tự đệm ở cuối, bạn sẽ nhận được kết quả tốt hơn nếu bạn không có (hoặc ít) hàng có ký tự đệm ở cuối.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phương thức xếp hạng các hàng trong SQL Server:ROW_NUMBER (), RANK (), DENSE_RANK () và NTILE ()

  2. Cách chỉ trả lại giá trị số trong SQL Server

  3. Làm cách nào để kết nối với SQL Server bằng cách sử dụng bảo mật tích hợp với trình điều khiển JDBC?

  4. Chèn 2 triệu hàng vào SQL Server nhanh chóng

  5. Cách đặt ngôn ngữ mặc định cho tất cả thông tin đăng nhập mới trong SQL Server (T-SQL)