Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Membuat Tabel dengan Kompresi di SQL Server (T-SQL)

Saat Anda membuat tabel di SQL Server, Anda memiliki opsi untuk menggunakan kompresi data.

Kompresi data membantu mengurangi ukuran database. Ini juga dapat membantu meningkatkan kinerja beban kerja intensif I/O karena data disimpan di lebih sedikit halaman, sehingga mengurangi jumlah halaman yang perlu dibaca kueri dari disk.

Untuk melakukannya, gunakan DATA_COMPRESSION pilihan saat membuat tabel.

Contoh

Berikut ini contoh untuk didemonstrasikan.

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

Dalam hal ini saya menggunakan kompresi baris.

Berikut ini menggunakan kompresi halaman.

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

Cara Menghapus Kompresi

Anda dapat menghapus kompresi dengan menggunakan ALTER TABLE pernyataan untuk membangun kembali tabel, saat menggunakan NONE sebagai jenis kompresi.

ALTER TABLE MOVIES
REBUILD WITH (DATA_COMPRESSION = NONE);

Tabel Penyimpanan Kolom

Jika Anda menggunakan tabel columnstore (tabel yang disimpan dengan indeks columnstore berkerumun), jenis kompresi di atas tidak berlaku. Dalam hal ini, opsi kompresi Anda adalah COLUMNSTORE dan COLUMNSTORE_ARCHIVE .

Hasil Kompresi Bisa Bervariasi

Jumlah kompresi yang Anda dapatkan akan bergantung pada data dan jenis kompresi.

ROW kompresi, misalnya, menghapus byte yang tidak dibutuhkan dari nilai kolom dengan menyimpannya dalam format panjang variabel. PAGE kompresi, di sisi lain, menyimpan nilai berulang hanya sekali per halaman, dan menyetel penunjuk dari masing-masing kolom di dalam halaman.

Terkadang Anda mungkin menemukan bahwa mengompresi suatu objek tidak selalu mengurangi ukurannya, dan dalam beberapa kasus sebenarnya dapat meningkatkan ukurannya.

Ini bisa terjadi jika kolom Anda menggunakan tipe data yang tidak memanfaatkan kompresi.

Juga, kompresi baris mengurangi overhead metadata, tetapi dalam beberapa kasus, overhead mungkin lebih besar daripada format penyimpanan lama.

Jika data Anda tidak menerima manfaat dari kompresi karena jenis datanya, kemungkinan overhead tersebut akan menyebabkan peningkatan kebutuhan penyimpanan, bukan penurunan.

Tetapi variasi ukuran kompresi juga akan tergantung pada data aktual. Misalnya, jika Anda memiliki char(10) kolom, kompresi akan menghapus semua karakter padding yang tertinggal. Jika Anda memiliki banyak baris dengan karakter bantalan tambahan, Anda akan mendapatkan hasil yang lebih baik daripada jika Anda tidak memiliki (atau sedikit) baris dengan karakter bantalan tambahan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan daftar Batasan Kunci Utama dari semua database di Instance SQL Server - Tutorial SQL Server / TSQL Bagian 60

  2. Berapa ukuran yang Anda gunakan untuk varchar(MAX) dalam deklarasi parameter Anda?

  3. Bagaimana cara menggunakan alias di klausa where?

  4. Mengganti nama Tabel di SQL Server (T-SQL)

  5. Apa itu SQL Server RAISERROR?