Mengapa .bak jauh lebih kecil dari basis data?

11

Saya baru saja mengambil cadangan dari database SQL Server. File-file MDF dan LDF bersama-sama totalnya sekitar 29 GB, tetapi file .bak hanya 23 GB, sekitar 20% lebih kecil.

Tebakan pertama saya ketika satu versi dari set data lebih kecil dari versi lain yang berisi data yang sama adalah kompresi data, tetapi kompresi biasanya menghasilkan rasio kompresi yang jauh lebih baik daripada 20%, terutama untuk data yang sangat dipesan (seperti tabel database. ) Juga, data terkompresi tidak dapat dengan mudah dikompresi lebih lanjut, tetapi saya tahu bahwa file .bak dapat dikompresi.

Jadi, jika data tidak dikompresi, dan tidak ada yang dibuang, (karena tujuan membuat cadangan adalah untuk dapat mengembalikannya ke kondisi yang sama setelah itu), lalu untuk apa 20% yang tidak terhitung?

Mason Wheeler
sumber

Jawaban:

16

Ruang dialokasikan ke file database, tetapi tidak digunakan.

Anda dapat membuat database baru, membuatnya berukuran 10GB, dan melihat file mengalokasikan jumlah ruang pada disk. Namun, hingga Anda memasukkan data ke dalam basis data, file tersebut pada dasarnya kosong, dan ukuran file cadangan Anda akan minimal.

HTH

SQLRockstar
sumber
10

Untuk cadangan lengkap, LDF biasanya dapat diabaikan

MDF berisi data aktual

File Bak hanya berisi halaman data yang digunakan di dalam mdf. Beberapa ruang tidak akan digunakan. Ruang ini adalah pengguna overhead untuk pembangunan kembali indeks misalnya.

Ini cukup khas untuk memiliki cadangan 100GB untuk DB yang mungkin memiliki 250GB mdf. Jika mdf saya adalah ukuran yang sama dengan cadangan saya itu akan menjadi bendera merah tentang DB menyusut yang tidak terduga atau kurangnya ruang disk dll

gbn
sumber
4

Ketika DB dibuat, Anda dapat menentukan (untuk kinerja) berapa banyak ruang yang ingin Anda alokasikan untuk data dan file log. Ruang ini kemudian dicadangkan meskipun tidak ada data yang disimpan dalam tabel. Hanya luasan yang memiliki data yang ditulis untuk dicadangkan.

Dalam kasus Anda, total MDF / LDF Anda mungkin bahkan 100 GB tetapi cadangan Anda masih sekitar 23 GB untuk cadangan yang Anda lakukan. Jika sekitar 1 GB data ditambahkan, total MDF / LDF Anda akan tetap 100 GB, tetapi cadangan Anda sekarang akan menjadi sekitar 24 GB.

Cadangan lengkap berisi semua luasan yang memiliki data di dalamnya dan sedikit file log. Cadangan lengkap berisi semua data dari saat tugas cadangan berakhir, dan bukan hanya dari saat tugas cadangan dimulai; Inilah sebabnya mengapa sedikit file log juga diperlukan.

StanleyJohns
sumber