Menyusutkan database
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Artikel ini menjelaskan cara menyusutkan database di SQL Server dengan menggunakan Object Explorer di 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.
Pembatasan dan batasan
Database tidak dapat dibuat lebih kecil dari ukuran minimum database. Ukuran minimum adalah ukuran yang ditentukan ketika database awalnya dibuat, atau ukuran eksplisit terakhir yang ditetapkan dengan menggunakan operasi pengubahan ukuran file, seperti
DBCC SHRINKFILE
. Misalnya, jika database awalnya dibuat dengan ukuran 10 MB dan tumbuh menjadi 100 MB, ukuran terkecil database dapat dikurangi menjadi 10 MB, bahkan jika semua data dalam database telah dihapus.Anda tidak dapat menyusutkan database saat database sedang dicadangkan. Sebaliknya, Anda tidak dapat mencadangkan database saat operasi penyusutan pada database sedang dalam proses.
Rekomendasi
Untuk melihat jumlah ruang bebas saat ini (tidak dialokasikan) dalam database. Untuk informasi selengkapnya, lihat Menampilkan Data dan Informasi Ruang Log untuk Database
Pertimbangkan informasi berikut saat Anda berencana menyusutkan database:
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 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 database adalah operasi yang-. Peristiwa autogrow yang diperlukan untuk menumbuhkan performa penghambat file database.
Operasi penyusutan tidak mempertahankan status fragmentasi indeks dalam database, dan umumnya meningkatkan fragmentasi ke tingkat tertentu. Ini adalah alasan lain untuk tidak berulang kali menyusutkan database.
Kecuali Anda memiliki persyaratan khusus, jangan setel opsi database AUTO_SHRINK ke AKTIF.
Izin
Memerlukan keanggotaan dalam peran server tetap sysadmin atau peran database tetap db_owner .
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), menyusutkan operasi database 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. Untuk informasi selengkapnya, lihat DBCC SHRINKDATABASE.
Untuk informasi tentang manajemen file dan operasi penyusutan khusus untuk Azure SQL Database, lihat Mengelola ruang file untuk database di Azure SQL Database.
Menggunakan SQL Server Management Studio
Berlaku untuk: SQL Server, Azure SQL Managed Instance
Menyusutkan database
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 Database.
Database
Menampilkan nama database terpilih.
Ruang yang dialokasikan saat ini
Menampilkan total ruang yang digunakan dan tidak digunakan untuk database terpilih.
Ruang kosong yang tersedia
Menampilkan jumlah ruang kosong dalam log dan file data dari database yang dipilih.
Mengatur ulang file sebelum melepaskan ruang yang tidak digunakan
Memilih opsi ini setara dengan menjalankan DBCC SHRINKDATABASE yang menentukan opsi persentase target. Menghapus opsi ini setara dengan mengeksekusi DBCC SHRINKDATABASE dengan opsi TRUNCATEONLY. Secara default, opsi ini tidak dipilih saat dialog dibuka. Jika opsi ini dipilih, pengguna harus menentukan opsi persentase target.
Ruang kosong maksimum dalam file setelah menyusut
Masukkan persentase maksimum ruang kosong yang akan dibiarkan dalam file database setelah database disusutkan. Nilai yang diizinkan adalah antara 0 dan 99.
Pilih OK.
Menggunakan Transact-SQL
Menyusutkan database
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 SHRINKDATABASE untuk mengurangi ukuran data dan file log dalam
UserDB
database, dan untuk memungkinkan10
persen ruang kosong dalam database.
DBCC SHRINKDATABASE (UserDB, 10);
GO
Setelah Anda menyusutkan 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. Untuk informasi selengkapnya, lihat Membangun ulang indeks.
Konten terkait
- Menyusutkan database tempdb
- Pertimbangan untuk pengaturan autogrow dan autoshrink di SQL Server
- File Database dan Grup File
- sys.databases (T-SQL)
- sys.database_files (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Menghapus Data atau File Log dari Database
- Menyusutkan file
- Mengelola ruang file untuk database di Azure SQL Database