Persyaratan: Dalam database SQL Server, ada tabel (misalnya, tabel log, tabel log permintaan) yang memakan ruang disk yang sangat besar, mungkin ratusan GB, bagaimana cara mengurangi penggunaan ruang tabel? Kompresi data (hemat ruang) dapat diaktifkan untuk teks yang sangat berulang (misalnya, HTML, JSON, log).
Kompresi ROW
Kompresi akan mengubah penyimpanan fisik data, tetapi bukan struktur logis data. Proses kompresi garis:
Mengidentifikasi tipe data setiap kolom dan mengonversinya menjadi panjang variabel Terakhir, jumlah permintaan ruang penyimpanan dikurangi menjadi permintaan aktual Setelah kompresi, jumlah data yang disimpan di setiap halaman meningkat Setelah kompresi, kurangi jumlah metadata Misalnya, jika jenis data kolom adalah smallint, sistem mengalokasikan 2 byte secara default Namun pada kenyataannya, hanya 1 byte ruang yang digunakan, dan jika kompresi diaktifkan pada meja, itu dapat dialokasikan sesuai permintaan
Kompresi PAGE
Kompresi halaman melakukan operasi tambahan untuk meningkatkan kompresi baris Operasi utama: kompresi garis, kompresi awalan, kompresi kamus
Konsumsi CPU: Kompresi PAGE > kompresi baris
Ujian
Buat tabel Users1 dan Users2 baru, keduanya menyisipkan 100.000 potongan data, dan skrip sql adalah sebagai berikut:
Untuk melihat hunian ruang tabel, yang semuanya berukuran 3,27 MB, perintahnya adalah sebagai berikut:
Seperti yang ditunjukkan di bawah ini:
Untuk melihat status kompresi tabel Users2, perintahnya adalah sebagai berikut:
Seperti yang ditunjukkan di bawah ini:
sp_estimate_data_compression_savingsPerkirakan penghematan yang dapat terjadi saat Anda mengaktifkan tabel atau partisi untuk baris, halaman, penyimpanan kolom, arsip penyimpanan kolom, atau kompresi XML. Perintahnya adalah sebagai berikut:
Outputnya adalah sebagai berikut:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Pengguna2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB Indeks menempati ≈ 3,29 MB dengan pengaturan kompresi saat ini size_with_requested_compression_setting (KB) 1296 KB Estimasi jejak ≈ 1,27 MB jika Anda mengaktifkan metode kompresi baru yang Anda minta, seperti PAGE atau ROW Untuk menjalankan kompresi halaman, perintahnya adalah sebagai berikut:
Perbandingan efek:Tabel Users2 adalah 3,27 MB sebelum kompresi dan 1,23 MB setelah kompresi, seperti yang ditunjukkan pada gambar di bawah ini:
Visualisasinya adalah sebagai berikut:
Referensi:
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat. |