Pendahuluan: SQLServer2005SP2 memberi kita fungsi vardecimal. Fungsi ini memungkinkan data desimal dengan panjang tetap asli disimpan dalam format panjang variabel dalam file data. Dikatakan bahwa fungsi ini dapat menghemat ruang untuk gudang data, dan SQLServer2008 adalah berdasarkan ini. Fungsi kompresi data telah ditingkatkan.
Fungsi kompresi data di SQL Server pertama kali dimulai di SQL Server 2005. Format penyimpanan baru yang disebut vardecimal telah ditambahkan ke edisi perusahaan dan pengembangan. Jika tabel dalam database berisi data tipe desimal dan numerik, pengguna dapat menggunakan format penyimpanan vardecimal untuk mengurangi ukuran database. Perlu diperhatikan bahwa jumlah ruang yang dapat dihemat bergantung pada berapa banyak kolom data desimal atau numerik yang terdapat dalam database, distribusi data, dan ukuran tabel.
Gunakan kompresi data
Fungsi kompresi data inilah yang menjadi fitur baru lainnya di SQL Server 2008: kompresi data. Dengan menggunakan fitur ini, Anda dapat mengurangi ukuran subset tabel data, indeks, dan partisi. Namun mengapa fungsi yang sebelumnya ada di SQL Server 2005 ini harus ditingkatkan di sistem versi generasi baru? Dalam lingkungan pasar di mana biaya penyimpanan terus menurun, manfaat apa yang dapat diberikan oleh teknologi kompresi data bagi perusahaan?
Walaupun biaya penyimpanan tidak lagi menjadi faktor sensitif yang diperhatikan oleh perusahaan, namun bukan berarti ukuran database tidak akan berdampak pada efisiensi operasional perusahaan, karena selain mempengaruhi biaya penyimpanan, ukuran database juga sangat berkaitan dengan manajemen. biaya dan masalah Kinerja.
Pertama-tama, karena database perlu dicadangkan, semakin besar ukuran database, waktu pencadangan akan semakin lama, dan biaya perangkat keras pencadangan akan meningkat. Dalam hal kinerja, ketika SQL Server memindai disk untuk membaca data, ia membaca data dalam satuan halaman data. Oleh karena itu, jika halaman data berisi lebih banyak baris data, semakin banyak data yang diperoleh SQL Server dalam satu halaman data IO menjadi lebih, yang juga akan membawa peningkatan kinerja.
Dibandingkan dengan data terkompresi vardecimal di SQL Server2005SP2, data pengujian yang saat ini dirilis oleh SQLServer2008 menggunakan teknologi kompresi data baru untuk mencapai tingkat penyimpanan yang lebih tinggi, ditambah dengan peningkatan ruang penyimpanan untuk pemulihan bencana oleh perusahaan, semua ini adalah SQLServer2008. Ada keuntungan untuk fitur baru ini.
Halaman 2: Dua mode kompresi
Setelah memahami manfaat nyata dari kompresi data, Anda dapat merasakan penetrasi konsep tersebut. Dengan bantuan kompresi data, biaya penyimpanan berkurang, kinerja kueri ditingkatkan, I/O berkurang, dan rasio klik buffering meningkat. Terlihat bahwa fungsi ini masih sangat efektif dalam proses aplikasi. Terdapat dua metode aplikasi untuk kompresi data di SQL Server 2008, yaitu kompresi baris dan kompresi halaman.
Memilih jenis kompresi selama Wizard Kompresi Data
Kompresi baris. Kompresi baris dapat menyimpan tipe dengan panjang tetap sebagai tipe penyimpanan dengan panjang variabel. Misalnya, kolom char(100) yang disimpan dalam format penyimpanan dengan panjang variabel hanya akan menggunakan data yang ditentukan oleh jumlah penyimpanan. "SQLServer2008" yang disimpan hanya perlu menyimpan 15 karakter setelah kompresi, bukan 100 karakter, sehingga menghemat 85% ruang penyimpanan. Ini merupakan perpanjangan dari ide format penyimpanan vardecimal yang disediakan di SQLServer2005ServicePack2. Perlu diperhatikan juga bahwa mode kompresi ini akan mengoptimalkan nilai NULL dan 0 dari semua tipe data sehingga tidak menempati byte apa pun.
Meskipun kompresi data SQLServer2008 memperluas fungsionalitas ini, semua tipe data dengan panjang tetap diproses, termasuk integer, char, dan float. Sekarang data tidak disimpan dalam byte berukuran tetap, tetapi dalam byte minimum yang diperlukan, yang dapat dilakukan hanya dengan mengaktifkan kompresi baris. Namun, kompresi baris tidak dapat menangani tipe data XML, BLOB, dan MAX.
Mode kompresi halaman. Fitur kompresi ini, dibangun berdasarkan kompresi baris, meminimalkan penyimpanan data berlebihan dengan hanya menyimpan byte peristiwa yang sama pada satu halaman satu kali. Tabel dan indeks dikompresi menggunakan kompresi halaman. Selain kompresi baris, kompresi awalan dan kompresi kamus juga digunakan.
Kompresi data akan mengurangi ukuran tabel atau metrik indeks Anda, yang terbaik adalah mengevaluasi penghematan ruang terlebih dahulu setelah kompresi. Setiap halaman dikompresi satu per satu, dan awalan serta kamus juga disimpan di dalam halaman. Karena halaman adalah unit penyimpanan atom, tidak masuk akal untuk mengompresi setengah halaman menjadi seperempat halaman. Oleh karena itu, proses kompresi hanya akan dimulai ketika konten halaman hampir penuh.
Terdapat juga trade-off performa saat menggunakan kompresi baris dan halaman, karena penggunaan CPU akan meningkat, namun penggunaan I/O dan jejak memori akan menurun. Namun semua opsi kompresi mungkin menjadi opsi eksklusif untuk SQLServer2008 Enterprise Edition.
Halaman 3: Cara menggunakan kompresi data
Lampiran (cara menggunakan kompresi data):
(1) Aktifkan kompresi baris
Jika kita ingin mengaktifkan kompresi baris pada tabel tertentu, kita dapat menjalankan pernyataan berikut:
BUAT TABEL Alpha(col1 int,col2 char(1000))
DENGAN (DATA_COMPRESSION = BARIS)
(2) Aktifkan kompresi halaman
Jika kita ingin mengaktifkan kompresi pada partisi tertentu, kita dapat menjalankan pernyataan berikut:
BUAT TABEL Alpha_Partition(col1 int,col2 char(1000))
ONPartitionScheme (kolom 1)
DENGAN
(DATA_COMPRESSION = HALAMAN AKTIF)
PARTISI(1-3)
(3) Ubah kompresi
Jika Anda ingin mengubah indeks yang ada untuk menggunakan kompresi, jalankan pernyataan berikut:
ALTER INDEX Collndx PADA Alpha REBUILD
DENGAN (DATA_C0MPRESSION=HALAMAN)
ALTER INDEX Collndx PADA Alpha REBUILD
partisi=2
DENGAN (DATA_COMPRESSION=HALAMAN)
Opsi kompresi di SQL Server 2008 dapat diatur melalui Option saat membuat tabel atau indeks, misalnya:
BUAT TABEL TestTable (col1 int,col2varchar(200))DENGAN(DATA_COMPRESSION = ROW);
Jika Anda perlu mengubah opsi kompresi suatu partisi, Anda dapat menggunakan pernyataan berikut:
ALTER TABLE TestTable REBUILD PARTITION = 1 WITH(DATACOMPRESSION=PAGE);
Jika Anda perlu mengatur opsi kompresi yang berbeda untuk setiap partisi dari tabel yang dipartisi, Anda dapat menggunakan pernyataan berikut: (SQLServer2008 dapat menggunakan opsi kompresi yang berbeda untuk partisi yang berbeda. Ini sangat penting untuk aplikasi gudang data karena tabel fakta dari gudang data Biasanya ada satu atau beberapa partisi panas, dan data di partisi ini sering kali perlu diperbarui. Untuk menghindari kompresi data yang membawa beban pemrosesan tambahan ke pembaruan data di partisi ini, Anda dapat menonaktifkan opsi kompresi untuk partisi ini)
BUAT TABEL PartitionedTable (col1 int, col2varchar(200))
DI PS1 (col1)
DENGAN (DATA_COMPRESSION = BARIS PADA PARTISI(1),
DATA_COMPRESSION = HALAMAN PADA PARTISI(2 SAMPAI 4));
Jika Anda mengatur opsi kompresi untuk indeks, Anda dapat menggunakan:
BUAT INDEKS IX_TestTable_Col1 ONTestTable(Col1)DENGAN(DATA_COMPRESSION = ROW);
Jika Anda ingin mengubah opsi kompresi indeks, Anda dapat menggunakan:
ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);