Menyusutkan file

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Artikel ini menjelaskan cara menyusutkan data atau file log di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Menyusutkan file data memulihkan ruang dengan memindahkan halaman data dari akhir file ke ruang yang tidak ditempati lebih dekat ke bagian depan file. Ketika ruang kosong yang cukup dibuat di akhir file, halaman data di akhir file dapat dibatalkan alokasinya dan dikembalikan ke sistem file.

Batasan dan Pembatasan

  • File data utama tidak dapat dibuat lebih kecil dari ukuran file utama dalam database model.

Rekomendasi

  • Operasi penyusutan paling efektif setelah operasi yang membuat sejumlah besar ruang penyimpanan yang tidak digunakan, seperti pernyataan DELETE besar, memotong tabel, atau operasi drop table.

  • Sebagian besar database memerlukan ketersediaan ruang kosong untuk operasi rutin sehari-hari. Jika Anda menyusutkan file database berulang kali dan melihat bahwa ukuran database tumbuh lagi, ini menunjukkan bahwa ruang kosong diperlukan untuk operasi reguler. Dalam kasus ini, berulang kali menyusutkan file database adalah operasi yang sia-sia. Peristiwa autogrow yang diperlukan untuk menumbuhkan performa penghambat file database.

  • Data yang dipindahkan untuk menyusutkan file dapat tersebar ke lokasi yang tersedia dalam file. Hal ini menyebabkan fragmentasi indeks dan dapat memperlambat performa kueri yang mencari rentang indeks. Untuk menghilangkan fragmentasi, pertimbangkan untuk membangun kembali indeks pada file setelah menyusut.

  • Kecuali Anda memiliki persyaratan khusus, jangan setel opsi database AUTO_SHRINK ke AKTIF.

Keterangan

Menyusutkan operasi yang sedang berlangsung dapat memblokir kueri lain pada database, dan dapat diblokir oleh kueri yang sudah berlangsung. Diperkenalkan di SQL Server 2022 (16.x), operasi file penyusutan memiliki opsi WAIT_AT_LOW_PRIORITY. Fitur ini adalah opsi tambahan baru untuk DBCC SHRINKDATABASE dan DBCC SHRINKFILE. Jika operasi penyusutan baru dalam mode WAIT_AT_LOW_PRIORITY tidak dapat memperoleh kunci yang diperlukan karena kueri yang berjalan lama sudah berlangsung, operasi penyusutan pada akhirnya akan kehabisan waktu setelah satu menit dan keluar secara diam-diam, mencegah kueri lain diblokir. WAIT_AT_LOW_PRIORITY berlaku untuk file data (.mdf & .ndf). Ini tidak berlaku untuk file log transaksi. Untuk informasi selengkapnya, lihat DBCC SHRINKFILE.

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin atau peran database tetap db_owner .

Menggunakan SQL Server Management Studio (SSMS)

Untuk menyusutkan data atau file log menggunakan SSMS

  1. Di Object Explorer, sambungkan ke instans Mesin Database SQL Server lalu perluas instans tersebut.

  2. Perluas Database lalu klik kanan database yang ingin Anda susutkan.

  3. Arahkan ke Tugas, arahkan ke Susutkan, lalu pilih File.

    Database
    Menampilkan nama database terpilih.

    Jenis file
    Pilih jenis file untuk file tersebut. Pilihan yang tersedia adalah file Data dan Log . Pilihan defaultnya adalah Data. Memilih jenis grup file yang berbeda mengubah pilihan di bidang lain yang sesuai.

    Grup file
    Pilih grup file dari daftar Grup File yang terkait dengan tipe File terpilih di atas. Memilih grup file yang berbeda mengubah pilihan di bidang lain yang sesuai.

    Nama file
    Pilih file dari daftar file yang tersedia dari grup file dan tipe file yang dipilih.

    Location
    Menampilkan jalur lengkap ke berkas terpilih saat ini. Jalur tidak dapat diedit, tetapi dapat disalin ke clipboard.

    Ruang yang dialokasikan saat ini
    Untuk file data, menampilkan ruang yang dialokasikan saat ini. Untuk file log, menampilkan ruang yang dialokasikan saat ini yang dihitung dari output DBCC SQLPERF(LOGSPACE).

    Ruang kosong yang tersedia
    Untuk file data, menampilkan ruang kosong yang tersedia saat ini yang dihitung dari output DBCC SHOWFILESTATS(fileid). Untuk file log, menampilkan ruang kosong yang tersedia saat ini yang dihitung dari output DBCC SQLPERF(LOGSPACE).

    Lepaskan ruang yang tidak digunakan
    Menyebabkan ruang yang tidak digunakan dalam file dirilis ke sistem operasi dan menyusutkan file ke tingkat terakhir yang dialokasikan, mengurangi ukuran file tanpa memindahkan data apa pun. Tidak ada upaya yang dilakukan untuk merelokasi baris ke halaman yang tidak dialokasikan.

    Mengatur ulang halaman sebelum melepaskan spasi yang tidak digunakan
    Setara dengan menjalankan DBCC SHRINKFILE yang menentukan ukuran file target. Ketika opsi ini dipilih, pengguna harus menentukan ukuran file target dalam kotak Susutkan file ke .

    Menyusutkan file ke
    Menentukan ukuran file target untuk operasi penyusutan. Ukuran tidak boleh kurang dari ruang yang dialokasikan saat ini atau lebih dari total tingkat yang dialokasikan ke file. Memasukkan nilai di luar minimum atau maksimum akan kembali ke min atau maks setelah fokus diubah atau ketika salah satu tombol pada toolbar diklik.

    File kosong dengan memigrasikan data ke file lain dalam grup file yang sama
    Migrasikan semua data dari file yang ditentukan. Opsi ini memungkinkan file dihilangkan menggunakan pernyataan ALTER DATABASE. Opsi ini setara dengan menjalankan DBCC SHRINKFILE dengan opsi EMPTYFILE.

  4. Pilih jenis file dan nama file.

  5. Secara opsional, pilih kotak centang Rilis ruang yang tidak digunakan.

    Memilih opsi ini menyebabkan ruang yang tidak digunakan dalam file dirilis ke sistem operasi dan menyusutkan file ke tingkat terakhir yang dialokasikan. Ini mengurangi ukuran file tanpa memindahkan data apa pun.

  6. Secara opsional, pilih kotak centang Atur ulang file sebelum melepaskan ruang yang tidak digunakan. Jika ini dipilih, file Susutkan ke nilai harus ditentukan. Secara default, opsi dibersihkan.

    Memilih opsi ini menyebabkan ruang yang tidak digunakan dalam file dirilis ke sistem operasi dan mencoba merelokasi baris ke halaman yang tidak dialokasikan.

  7. Secara opsional, masukkan persentase maksimum ruang kosong yang akan dibiarkan dalam file database setelah database diciutkan. Nilai yang diizinkan adalah antara 0 dan 99. Opsi ini hanya tersedia saat Mengatur ulang file sebelum melepaskan ruang yang tidak digunakan diaktifkan.

  8. Secara opsional, pilih kotak centang Kosongkan file dengan memigrasikan data ke file lain dalam grup file yang sama.

    Memilih opsi ini memindahkan semua data dari file yang ditentukan ke file lain dalam grup file. File kosong kemudian dapat dihapus. Opsi ini sama dengan menjalankan DBCC SHRINKFILE dengan opsi EMPTYFILE.

  9. Pilih OK.

Menggunakan T-SQL

Untuk menyusutkan data atau file log menggunakan Transact-SQL

  1. Koneksi ke Mesin Database.

  2. Dari bilah Standar, pilih Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini menggunakan DBCC SHRINKFILE untuk menyusutkan ukuran file data bernama DataFile1 dalam UserDB database menjadi 7 MB.

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO

Baca juga

Langkah berikutnya