Menyusutkan file
Berlaku untuk: SQL ServerAzure SQL Database Azure 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
- File data utama tidak dapat dibuat lebih kecil dari ukuran file utama dalam
model
database.
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-. 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)
Menyusutkan data atau file log menggunakan SSMS
Di Object Explorer, sambungkan ke instans Mesin Database SQL Server lalu perluas instans tersebut.
Perluas Database lalu klik kanan database yang ingin Anda susutkan.
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 outputDBCC SQLPERF(LOGSPACE)
.Ruang kosong yang tersedia
Untuk file data, menampilkan ruang kosong yang tersedia saat ini yang dihitung dari outputDBCC SHOWFILESTATS(fileid)
. Untuk file log, menampilkan ruang kosong yang tersedia saat ini yang dihitung dari outputDBCC 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 eksekusiDBCC 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 dipilih.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 mengeksekusiDBCC SHRINKFILE
denganEMPTYFILE
opsi .EMPTYFILE
tidak didukung di Azure SQL Database atau Azure SQL Database Hyperscale.Pilih jenis file dan nama file.
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.
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.
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.
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 mengeksekusi
DBCC SHRINKFILE
dengan opsi EMPTYFILE.Pilih OK.
Menggunakan Transact-SQL
Menyusutkan data atau file log menggunakan Transact-SQL
Sambungkan ke Mesin Database.
Dari bilah Standar, pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini menggunakan DBCC SHRINKFILE untuk menyusutkan ukuran file data bernama
DataFile1
dalamUserDB
database menjadi 7 MB.
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO