Artikel ini menjelaskan cara memeriksa penggunaan ruang pada instance RDS SQL Server, menyelesaikan masalah, serta mengatasi isu ruang disk penuh pada database.
Lihat penggunaan penyimpanan
Metode 1: Masuk ke Konsol ApsaraDB RDS dan buka halaman Basic Information instance RDS Anda. Di bagian Statistik Penggunaan, lihat total penggunaan penyimpanan instance RDS Anda. Bagian ini tidak menampilkan penggunaan saat ini atau historis berdasarkan jenis data.

Metode 2: Masuk ke Konsol ApsaraDB RDS dan navigasikan ke halaman Monitoring and Alerts. Pada tab Standard Monitoring, Anda dapat melihat penggunaan penyimpanan saat ini dan historis berdasarkan jenis data. Untuk informasi lebih lanjut, lihat Lihat Pemantauan Standar.

Metode 3: Masuk ke Konsol ApsaraDB RDS dan buka halaman detail instance RDS Anda. Di panel navigasi kiri, pilih Autonomy Services > Storage Management. Kemudian, lihat penggunaan penyimpanan instance RDS Anda. Informasi ini mencakup persentase penyimpanan data dan log yang digunakan, tren konsumsi penyimpanan, serta konsumsi penyimpanan untuk 10 database teratas dan 20 tabel teratas yang paling banyak menggunakan sumber daya. Untuk informasi lebih lanjut, lihat Manajemen Penyimpanan.
CatatanInstance RDS Anda tidak menjalankan SQL Server 2008 R2 dengan disk cloud.

Metode 4: Gunakan alat klien seperti SQL Server Management Studio (SSMS) untuk melihat penggunaan penyimpanan instance RDS Anda. Untuk informasi lebih lanjut, lihat Hubungkan ke Instance ApsaraDB RDS for SQL Server Menggunakan SSMS.
Perintah berikut sering digunakan untuk melihat informasi penggunaan ruang database SQL Server.
Tampilan sistem atau pernyataan
Deskripsi
sp_helpdbDigunakan untuk menanyakan total ruang penyimpanan setiap database. Total ruang penyimpanan database sama dengan ukuran total file data dan file log dalam database.
sp_spaceusedDigunakan untuk menanyakan nama, ruang penyimpanan yang digunakan, dan ruang penyimpanan yang belum dialokasikan dari database saat ini.
DBCC SQLPERF(LOGSPACE)Digunakan untuk menanyakan total penyimpanan log dan penyimpanan log yang digunakan dari setiap database.
DBCC SHOWFILESTATSDigunakan untuk menanyakan total penyimpanan data dan penyimpanan data yang digunakan dari database saat ini.
SELECT * FROM sys.master_filesDigunakan untuk menanyakan total ukuran file data dan total ukuran file log di setiap database.
SELECT * FROM sys.dm_db_log_space_usageDigunakan untuk menanyakan total penyimpanan log dan penyimpanan log yang digunakan dari database saat ini. Pernyataan ini hanya didukung untuk instance RDS yang menjalankan SQL Server 2012 atau lebih baru.
SELECT * FROM sys.dm_db_file_space_usageDigunakan untuk menanyakan total penyimpanan data dan penyimpanan data yang digunakan dari database saat ini. Pernyataan ini hanya didukung untuk instance RDS yang menjalankan SQL Server 2012 atau lebih baru.
Jika penggunaan penyimpanan instance RDS Anda sangat tinggi, masuk ke Konsol RDS dan buka halaman Monitoring And Alerts instance RDS Anda untuk melihat penggunaan penyimpanan file data, file log, file sementara, dan file sistem. Identifikasi jenis file yang mengonsumsi penyimpanan secara abnormal dan evaluasi apakah perlu melepaskan penyimpanan atau menerapkan metode untuk mencegah peningkatan abnormal dalam konsumsi penyimpanan.
Reklaim dan lepaskan penyimpanan data
Analisis
Total penyimpanan data, yang sama dengan total ukuran file data, terdiri dari penyimpanan data yang dialokasikan dan penyimpanan data yang belum dialokasikan:
Penyimpanan data yang dialokasikan mencakup penyimpanan data yang digunakan dan yang tidak digunakan. Penyimpanan data yang tidak digunakan hanya dapat dialokasikan ke catatan baru di tabel atau indeks yang sama. Penyimpanan ini tidak dapat langsung dialokasikan ke objek database lainnya.
Penyimpanan data yang belum dialokasikan terdiri dari ekstent yang belum dialokasikan. Setiap ekstent menyediakan penyimpanan kontigu sebesar 64 KB. Penyimpanan ini tidak terkait dengan objek database. Anda dapat mengecilkan file data untuk melepaskan penyimpanan data yang belum dialokasikan.
Dalam kebanyakan kasus, jika jumlah data Anda terus bertambah, penyimpanan data yang belum dialokasikan akan kecil. Dalam situasi ini, Anda tidak dapat mereklaim sejumlah besar penyimpanan data dengan mengecilkan file data. Sebelum mengecilkan file data, kami sarankan Anda mengoptimalkan dan mereklaim penyimpanan data yang telah dialokasikan.
Reklaim penyimpanan data
Anda dapat menggunakan salah satu metode berikut untuk mereklaim penyimpanan data:
Arsipkan file data
Hapus file data historis yang jarang diperiksa, migrasikan file tersebut ke instance RDS lain, atau arsipkan file tersebut. Ini mengurangi jumlah data yang disimpan di instance RDS Anda.
Metode ini secara efektif mengurangi peningkatan konsumsi penyimpanan data. Namun, metode ini memiliki persyaratan untuk struktur objek database dan logika aplikasi Anda. Metode ini juga memerlukan kerja sama dengan desainer dan pengembang aplikasi.
Kompres file data
Jika instance RDS Anda menjalankan SQL Server 2016 atau lebih baru, atau SQL Server Enterprise Edition sebelum SQL Server 2016, fitur kompresi data tersedia. Fitur ini mendukung kompresi baris dan kompresi halaman. Anda dapat mengaktifkan fitur ini pada tabel individu, indeks, atau partisi. Untuk informasi lebih lanjut, lihat Kompresi Data.
Rasio kompresi data berkisar antara 10% hingga 90% dan bervariasi berdasarkan skema, tipe data kolom, dan distribusi nilai numerik. SQL Server menyediakan prosedur tersimpan khusus sp_estimate_data_compression_savings yang dapat membantu Anda mengevaluasi berapa banyak ruang penyimpanan data yang dapat dihemat dengan mengaktifkan kompresi pada tabel atau indeks tertentu.
CatatanUntuk memodifikasi pengaturan opsi kompresi tabel atau indeks, Anda harus menjalankan operasi bahasa definisi data (DDL). Jika Anda menjalankan operasi ini pada tabel besar, tabel-tabel tersebut akan terkunci untuk waktu yang lama. Ini dapat mengganggu beban kerja Anda. Kami sarankan Anda memodifikasi pengaturan opsi kompresi selama jam-jam non-puncak.
Instance RDS SQL Server Enterprise dapat mengatur parameter ONLINE ke ON, dan kemudian melakukan operasi modifikasi dengan dampak minimal terhadap operasi bisnis normal.
Kompresi data meningkatkan overhead CPU. Evaluasi kelayakan kompresi data pada instance RDS Anda berdasarkan kebutuhan bisnis Anda. Kami sarankan Anda mengaktifkan fitur kompresi data hanya pada tabel besar.
Defragmentasi indeks
Jika tingkat fragmentasi dalam indeks tinggi, data dasar indeks mengonsumsi jumlah penyimpanan yang tidak normal. Dalam kasus ini, Anda dapat mendefragmentasi indeks untuk mengurangi jumlah penyimpanan data yang digunakan.
Lihat Tingkat Fragmentasi dalam Indeks: Masuk ke Konsol ApsaraDB RDS dan pilih Autonomy Services > Performance Optimization. Kemudian, klik tab Index Usage. Pada tab ini, Anda dapat melihat fragmentasi indeks di berbagai tabel. Selain itu, Anda dapat melihat saran yang diajukan oleh layanan otonomi untuk membangun ulang atau mengorganisir ulang indeks.
CatatanTingkat fragmentasi dalam indeks mewakili persentase halaman yang urutan logikanya tidak sesuai dengan urutan fisik di dalam indeks. Persentase ini berbeda dari persentase ruang penyimpanan kosong di halaman indeks. Dalam kondisi normal, indeks dengan tingkat fragmentasi tinggi kemungkinan besar akan didedefragmentasi untuk mereklaim ruang penyimpanan.
Jika Anda ingin menganalisis rata-rata persentase ruang penyimpanan kosong per halaman dalam indeks, Anda dapat menanyakan tampilan sistem
sys.dm_db_index_physical_statsdalam modeSAMPLEDatauDETAILED. Kemudian, Anda dapat melihat nilai-nilai di kolomavg_page_space_used_in_percentdari hasil yang dikembalikan. Untuk informasi lebih lanjut, lihat sys.dm_db_index_physical_stats (Transact-SQL). Sistem membaca banyak halaman indeks selama query. Jika Anda mendefragmentasi indeks selama query, kinerja instance RDS Anda mungkin menurun. Kami sarankan Anda mendefragmentasi indeks selama jam-jam non-puncak.
Bangun Ulang Indeks
Metode ini memberikan hasil optimasi yang lebih baik dan efisiensi eksekusi yang lebih tinggi untuk tingkat fragmentasi tinggi. Secara default, tabel terkunci selama eksekusi. Di Edisi Enterprise, Anda dapat mengatur parameter
ONLINEke ON untuk menghindari penguncian tabel jangka panjang.PentingUntuk indeks besar, operasi pembangunan ulang dapat menyebabkan peningkatan signifikan dalam ruang penyimpanan database dan ukuran log dalam waktu singkat. Biasanya, sebelum melakukan operasi pembangunan ulang indeks, instance RDS Anda perlu menyediakan setidaknya dua kali ukuran indeks yang dibangun ulang sebagai ruang yang tersedia. Oleh karena itu, pastikan bahwa instance Anda memiliki ruang penyimpanan yang cukup tersedia.
Lihat Ruang Penyimpanan Instance RDS: Buka halaman Basic Information halaman detail instance RDS. Di bagian Instance Resources, lihat ukuran total ruang penyimpanan dan ukuran ruang penyimpanan yang digunakan dari instance.
ALTER INDEX <IX_YourIndexName> ON <YourTableName> REBUILD WITH (ONLINE = ON);Setelah perintah dieksekusi, sistem akan secara asinkron mengumpulkan kembali data di latar belakang, yang membutuhkan waktu. Anda dapat mengklik tombol Recollect untuk mengumpulkan data terbaru secara manual, dan setelah pengumpulan data selesai, klik Export Script untuk mengunduhnya secara lokal untuk memastikan status reklaim indeks.

Organisasi Ulang Indeks
Metode ini cocok jika tingkat fragmentasi rendah. Namun, efektivitas optimasi tidak sebaik metode pembangunan ulang indeks.
Kecilkan file data
Jika penyimpanan yang tersedia masih tidak mencukupi setelah Anda mencoba semua solusi yang disarankan, Anda dapat menggunakan salah satu metode berikut untuk melepaskan penyimpanan data:
Jika Anda mengecilkan banyak file data pada instance RDS Anda sekaligus, banyak log transaksi mungkin dihasilkan dan layanan Anda mungkin diblokir untuk waktu yang lama. Kami sarankan Anda menggunakan Metode 1 untuk mengecilkan sejumlah kecil file data sekaligus.
Metode 1: Kecilkan file data dalam batch. Kami sarankan Anda mengecilkan 5 GB file data sekaligus. Contoh kode:
DECLARE @dbName NVARCHAR(128) = 'YourDatabaseName' -- Nama database DECLARE @fileName NVARCHAR(128) -- Nama file data DECLARE @targetSize INT = 1024 -- Ukuran target (MB) DECLARE @shrinkSize INT = 5120 -- Ukuran file data yang Anda kecilkan sekaligus (MB), kami sarankan 5GB sekaligus DECLARE @currentSize INT -- Ukuran saat ini DECLARE @sql NVARCHAR(500) DECLARE @waitTime INT = 10 -- Waktu tunggu setelah setiap operasi pengecilan dalam detik -- Dapatkan nama file data SELECT @fileName = name FROM sys.master_files WHERE database_id = DB_ID(@dbName) AND type_desc = 'ROWS' -- Loop pengecilan WHILE 1 = 1 BEGIN -- Dapatkan ukuran file saat ini SELECT @currentSize = size/128 FROM sys.database_files WHERE name = @fileName -- Keluar jika ukuran target tercapai IF @currentSize <= @targetSize BEGIN PRINT 'Pengecilan selesai, ukuran saat ini: ' + CAST(@currentSize AS VARCHAR(20)) + 'MB' BREAK END -- Hitung ukuran setelah operasi pengecilan ini DECLARE @newSize INT = @currentSize - @shrinkSize IF @newSize < @targetSize SET @newSize = @targetSize -- Jalankan operasi pengecilan SET @sql = 'DBCC SHRINKFILE (N''' + @fileName + ''', ' + CAST(@newSize AS VARCHAR(20)) + ')' PRINT 'Menjalankan pengecilan: ' + @sql EXEC (@sql) -- Tunggu beberapa saat sebelum melanjutkan PRINT 'Menunggu ' + CAST(@waitTime AS VARCHAR(10)) + ' detik sebelum melanjutkan...' WAITFOR DELAY '00:05:00' ENDMetode 2: Jalankan perintah
DBCC SHRINKFILEuntuk mengecilkan file data individual dan melepaskan penyimpanan data yang belum dialokasikan ke sistem operasi. Untuk informasi lebih lanjut, lihat Kecilkan Database dan DBCC SHRINKFILE (Transact-SQL).DBCC SHRINKFILE(<File ID>, <Ukuran file yang diharapkan setelah pengecilan dalam MB>)
FAQ
Pengambilalihan kembali penyimpanan log
Lihat penggunaan penyimpanan log
Pengambilalihan kembali penyimpanan log relatif sederhana. Anda dapat menggunakan perintah DBCC SQLPERF(LOGSPACE) atau layanan otonomi untuk melihat persentase penggunaan penyimpanan log dalam file log database. Jika persentase penyimpanan yang digunakan tinggi, memperkecil file log hampir tidak akan berpengaruh. Anda dapat menanyakan Tampilan sistem sys.databases dan memeriksa informasi keluaran di kolom log_reuse_wait dan log_reuse_wait_desc untuk menentukan alasan mengapa ruang tidak dapat diambil kembali.
Untuk informasi lebih lanjut tentang nilai-nilai di kolom log_reuse_wait dan log_reuse_wait_desc, lihat sys.databases (Transact-SQL).
Perkecil log transaksi
Jika server database Anda menampilkan pesan "log transaksi penuh", Anda tidak dapat memperkecil log transaksi melalui konsol. Anda dapat secara manual menjalankan pernyataan SQL untuk menangani masalah ini, tetapi pendekatan ini memiliki risiko. Untuk informasi lebih lanjut, lihat Solusi untuk Ruang Log yang Tidak Mencukupi (Hanya Berlaku dalam Situasi Darurat). Ketika ruang log tidak mencukupi, kami umumnya menyarankan agar Anda pertama-tama memperluas kapasitas disk.
Atribut | Metode 1: Perkecil satu database (hanya perkecil, tanpa pencadangan) | Metode 2: Pencadangan dan perkecil tingkat instans (cadangkan dulu, lalu perkecil) |
Ruang lingkup | Satu database | Seluruh instans |
Pencadangan | Tidak ada pencadangan | Sistem secara otomatis mencadangkan semua log transaksi. |
Kecepatan pengambilalihan penyimpanan | Cepat | Lambat. Sistem membuat cadangan lalu memperkecil log transaksi. |
Skenario | Log dihasilkan dengan kecepatan tinggi. Penyimpanan log harus diambil kembali sebelum pencadangan penuh atau pencadangan tambahan tingkat instans berikutnya dibuat. | Penyimpanan log cukup. Diperlukan optimisasi global. Jika Anda memperkecil log transaksi, jumlah tertentu dari penyimpanan log akan terpakai. |
Dampak pada database lain | Tidak ada dampak | Seluruh instans terpengaruh. |
Prosedur |
Setelah operasi pemampatan selesai, Anda dapat pergi ke halaman Monitoring And Alerts dari instance RDS Anda untuk melihat penggunaan penyimpanan log terbaru.

Pengambilalihan penyimpanan file sementara
Analisis
Penyimpanan file sementara adalah jumlah penyimpanan yang digunakan oleh database sistem tempdb. Database sistem tempdb hanya menggunakan model pemulihan SIMPLE. Dalam kondisi normal, ukuran total file log dalam database sistem tempdb kecil. Namun, ukuran total file data dalam database sistem tempdb dapat meningkat secara signifikan dalam waktu singkat. Sebagai contoh, jika Anda membuat banyak tabel sementara, menggabungkan tabel besar, atau mengurutkan data, ukuran total file data dalam database sistem tempdb bertambah.
Solusi
Cegah peningkatan konsumsi penyimpanan di tingkat aplikasi. Sebagai contoh, kurangi tabel sementara yang tidak perlu, kurangi kueri yang memerlukan penggabungan tabel besar, dan jangan jalankan transaksi besar.
Mulai ulang instance RDS Anda selama jam sepi. Setelah dimulai ulang, jumlah penyimpanan yang digunakan oleh database sistem tempdb berkurang menjadi ukuran saat instance dibuat.
Reklaim ruang penyimpanan file lainnya
Analisis
Penyimpanan file lainnya mengacu pada ruang yang digunakan oleh sqlserver.other_size, mastersize, modelsize, msdbsize, dan file serupa lainnya. Dalam kebanyakan kasus, file-file ini berukuran kecil. Namun, file-file ini dapat mengonsumsi sejumlah besar ruang penyimpanan dalam skenario berikut:
Banyak file
errorlogada, dan ukuran file log kesalahan telah bertambah menjadi beberapa GB atau bahkan lebih besar.File dump memori dihasilkan ketika terjadi pengecualian parah.
Solusi
Anda dapat pergi ke halaman Monitoring And Alerts dari instance RDS Anda dan klik tab Standard Monitoring untuk melihat ruang penyimpanan yang digunakan oleh file-file ini. Untuk informasi lebih lanjut tentang metrik, lihat Lihat Pemantauan Standar.

Jika
errorlogmengonsumsi banyak ruang penyimpanan, Anda dapat membersihkan log kesalahan di halaman Log Management. Untuk informasi lebih lanjut, lihat Kelola Log.CatatanJika file lain (seperti
sqlserver.other_size) menggunakan terlalu banyak ruang, silakan hubungi helpdesk. Mereka akan membantu Anda mengidentifikasi penyebab dan menyelesaikan masalah tersebut.
Perluas kapasitas penyimpanan
Jika penggunaan penyimpanan instance RDS Anda masih terlalu tinggi setelah mencoba semua solusi yang disarankan, Anda dapat memperluas kapasitas penyimpanan instance RDS tersebut. Untuk informasi lebih lanjut, lihat Ubah Spesifikasi Instance.
Pada contoh yang ditunjukkan di atas, ukuran sebuah ekstent adalah 64 KB. Total ukuran file data adalah