sp_spaceused (T-SQL)
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Prosedur sp_spaceused
tersimpan sistem menampilkan:
jumlah baris, ruang disk yang dicadangkan, dan ruang disk yang digunakan oleh tabel, tampilan terindeks, atau antrean Service Broker dalam database saat ini
ruang disk yang dicadangkan dan digunakan oleh seluruh database
Sintaksis
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Catatan
Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Argumen
Untuk Azure Synapse Analytics dan Analytics Platform System (PDW), sp_spaceused
harus menentukan parameter bernama (misalnya sp_spaceused (@objname= N'Table1');
), daripada mengandalkan posisi parameter ordinal.
[ @objname = ] N'objname'
Nama tabel yang memenuhi syarat atau tidak memenuhi syarat, tampilan terindeks, atau antrean tempat informasi penggunaan ruang diminta. @objname adalah nvarchar(776), dengan default NULL
. Tanda kutip diperlukan hanya jika nama objek yang memenuhi syarat ditentukan. Jika nama objek yang sepenuhnya memenuhi syarat (termasuk nama database) disediakan, nama database harus menjadi nama database saat ini.
Jika @objname tidak ditentukan, hasil dikembalikan untuk seluruh database.
Catatan
Azure Synapse Analytics and Analytics Platform System (PDW) hanya mendukung database dan objek tabel.
[ @updateusage = ] 'updateusage'
DBCC UPDATEUSAGE
Menunjukkan harus dijalankan untuk memperbarui informasi penggunaan ruang. @updateusage adalah varchar(5), dengan default false
. Saat @objname tidak ditentukan, pernyataan dijalankan pada seluruh database. Jika tidak, pernyataan dijalankan pada @objname. Nilai dapat berupa true
atau false
.
[ @mode = ] 'mode'
Menunjukkan cakupan hasil. Untuk tabel atau database yang direntangkan, parameter @mode memungkinkan Anda menyertakan atau mengecualikan bagian jarak jauh objek. Untuk informasi selengkapnya, lihat Stretch Database.
Penting
Stretch Database tidak digunakan lagi di SQL Server 2022 (16.x) dan Azure SQL Database. Fitur ini akan dihapus dalam versi Mesin Database di masa mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.
@mode adalah varchar(11), dan bisa menjadi salah satu nilai ini.
Nilai | Deskripsi |
---|---|
ALL (default) |
Mengembalikan statistik penyimpanan objek atau database termasuk bagian lokal dan bagian jarak jauh. |
LOCAL_ONLY |
Mengembalikan statistik penyimpanan hanya dari bagian lokal objek atau database. Jika objek atau database tidak diaktifkan Stretch, mengembalikan statistik yang sama seperti saat @mode adalah ALL . |
REMOTE_ONLY |
Mengembalikan statistik penyimpanan hanya dari bagian jarak jauh objek atau database. Opsi ini menimbulkan kesalahan ketika salah satu kondisi berikut ini benar: Tabel tidak diaktifkan untuk Stretch. Tabel diaktifkan untuk Stretch, tetapi Anda belum pernah mengaktifkan migrasi data. Dalam hal ini, tabel jarak jauh belum memiliki skema. Pengguna menjatuhkan tabel jarak jauh secara manual. Penyediaan arsip data jarak jauh mengembalikan status Keberhasilan, tetapi sebenarnya gagal. |
[ @oneresultset = ] oneresultset
Menunjukkan apakah akan mengembalikan satu tataan hasil. @oneresultset adalah bit, dan bisa menjadi salah satu nilai ini:
Nilai | Deskripsi |
---|---|
0 (default) |
Saat @objname null atau tidak ditentukan, dua tataan hasil dikembalikan. |
1 |
Saat @objname atau NULL tidak ditentukan, satu tataan hasil dikembalikan. |
[ @include_total_xtp_storage = ] include_total_xtp_storage
Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru, dan SQL Database
Saat @oneresultset diatur ke 1
, parameter ini menentukan apakah satu resultset menyertakan kolom untuk MEMORY_OPTIMIZED_DATA
penyimpanan. @include_total_xtp_storage adalah bit, dengan default 0
. Jika 1
, kolom XTP disertakan dalam resultset.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Tataan hasil
Jika @objname dihilangkan dan nilai @oneresultset adalah 0
, kumpulan hasil berikut dikembalikan untuk memberikan informasi ukuran database saat ini.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_name |
nvarchar(128) | Nama database saat ini. |
database_size |
varchar(18) | Ukuran database saat ini dalam megabyte. database_size mencakup file data dan log. |
unallocated space |
varchar(18) | Ruang dalam database yang tidak dicadangkan untuk objek database. |
Nama kolom | Jenis data | Deskripsi |
---|---|---|
reserved |
varchar(18) | Jumlah total ruang yang dialokasikan oleh objek dalam database. |
data |
varchar(18) | Jumlah total ruang yang digunakan oleh data. |
index_size |
varchar(18) | Jumlah total ruang yang digunakan oleh indeks. |
unused |
varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Jika @objname dihilangkan dan nilai @oneresultset adalah 1
, satu set hasil berikut dikembalikan untuk memberikan informasi ukuran database saat ini.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_name |
nvarchar(128) | Nama database saat ini. |
database_size |
varchar(18) | Ukuran database saat ini dalam megabyte. database_size mencakup file data dan log. |
unallocated space |
varchar(18) | Ruang dalam database yang tidak dicadangkan untuk objek database. |
reserved |
varchar(18) | Jumlah total ruang yang dialokasikan oleh objek dalam database. |
data |
varchar(18) | Jumlah total ruang yang digunakan oleh data. |
index_size |
varchar(18) | Jumlah total ruang yang digunakan oleh indeks. |
unused |
varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Jika @objname ditentukan, kumpulan hasil berikut dikembalikan untuk objek yang ditentukan.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
name |
nvarchar(128) | Nama objek tempat informasi penggunaan ruang diminta. Nama skema objek tidak dikembalikan. Jika nama skema diperlukan, gunakan tampilan manajemen dinamis sys.dm_db_partition_stats atau sys.dm_db_index_physical_stats untuk mendapatkan informasi ukuran yang setara. |
rows |
karakter(20) | Jumlah baris yang ada dalam tabel. Jika objek yang ditentukan adalah antrean Service Broker, kolom ini menunjukkan jumlah pesan dalam antrean. |
reserved |
varchar(18) | Jumlah total ruang yang dipesan untuk @objname. |
data |
varchar(18) | Jumlah total ruang yang digunakan oleh data dalam @objname. |
index_size |
varchar(18) | Jumlah total ruang yang digunakan oleh indeks dalam @objname. |
unused |
varchar(18) | Jumlah total ruang yang dicadangkan untuk @objname tetapi belum digunakan. |
Mode ini adalah default, ketika tidak ada parameter yang ditentukan. Kumpulan hasil berikut dikembalikan yang merinci informasi ukuran database pada disk.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_name |
nvarchar(128) | Nama database saat ini. |
database_size |
varchar(18) | Ukuran database saat ini dalam megabyte. database_size mencakup file data dan log. Jika database memiliki MEMORY_OPTIMIZED_DATA grup file, nilai ini menyertakan ukuran total pada disk dari semua file titik pemeriksaan dalam grup file. |
unallocated space |
varchar(18) | Ruang dalam database yang tidak dicadangkan untuk objek database. Jika database memiliki MEMORY_OPTIMIZED_DATA grup file, nilai ini menyertakan ukuran total pada disk file titik pemeriksaan dengan status PRECREATED dalam grup file. |
Ruang yang digunakan oleh tabel dalam database. Kumpulan hasil ini tidak mencerminkan tabel yang dioptimalkan memori, karena tidak ada akuntansi per tabel penggunaan disk:
Nama kolom | Jenis data | Deskripsi |
---|---|---|
reserved |
varchar(18) | Jumlah total ruang yang dialokasikan oleh objek dalam database. |
data |
varchar(18) | Jumlah total ruang yang digunakan oleh data. |
index_size |
varchar(18) | Jumlah total ruang yang digunakan oleh indeks. |
unused |
varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Kumpulan hasil berikut dikembalikan hanya jika database memiliki MEMORY_OPTIMIZED_DATA
grup file dengan setidaknya satu kontainer:
Nama kolom | Jenis data | Deskripsi |
---|---|---|
xtp_precreated |
varchar(18) | Ukuran total file titik pemeriksaan dengan status PRECREATED , dalam KB. Menghitung ruang yang tidak dialokasikan dalam database secara keseluruhan. Misalnya, jika ada 600.000 KB file titik pemeriksaan yang dibuat sebelumnya, kolom ini berisi 600000 KB . |
xtp_used |
varchar(18) | Ukuran total file titik pemeriksaan dengan status UNDER CONSTRUCTION , , ACTIVE dan MERGE TARGET , dalam KB. Nilai ini adalah ruang disk yang secara aktif digunakan untuk data dalam tabel yang dioptimalkan memori. |
xtp_pending_truncation |
varchar(18) | Ukuran total file titik pemeriksaan dengan status WAITING_FOR_LOG_TRUNCATION , dalam KB. Nilai ini adalah ruang disk yang digunakan untuk file titik pemeriksaan yang menunggu pembersihan, setelah pemotongan log terjadi. |
Jika @objname dihilangkan, nilai @oneresultset adalah 1
, dan @include_total_xtp_storage adalah 1
, satu set hasil berikut dikembalikan untuk memberikan informasi ukuran database saat ini. Jika @include_total_xtp_storage adalah 0
(default), tiga kolom terakhir akan dihilangkan.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_name |
nvarchar(128) | Nama database saat ini. |
database_size |
varchar(18) | Ukuran database saat ini dalam megabyte. database_size mencakup file data dan log. Jika database memiliki MEMORY_OPTIMIZED_DATA grup file, nilai ini menyertakan ukuran total pada disk dari semua file titik pemeriksaan dalam grup file. |
unallocated space |
varchar(18) | Ruang dalam database yang tidak dicadangkan untuk objek database. Jika database memiliki MEMORY_OPTIMIZED_DATA grup file, nilai ini menyertakan ukuran total pada disk file titik pemeriksaan dengan status PRECREATED dalam grup file. |
reserved |
varchar(18) | Jumlah total ruang yang dialokasikan oleh objek dalam database. |
data |
varchar(18) | Jumlah total ruang yang digunakan oleh data. |
index_size |
varchar(18) | Jumlah total ruang yang digunakan oleh indeks. |
unused |
varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
xtp_precreated 1 |
varchar(18) | Ukuran total file titik pemeriksaan dengan status PRECREATED , dalam KB. Nilai ini dihitung terhadap ruang yang tidak dialokasikan dalam database secara keseluruhan. Mengembalikan NULL jika database tidak memiliki MEMORY_OPTIMIZED_DATA grup file dengan setidaknya satu kontainer. |
xtp_used 1 |
varchar(18) | Ukuran total file titik pemeriksaan dengan status UNDER CONSTRUCTION , , ACTIVE dan MERGE TARGET , dalam KB. Nilai ini adalah ruang disk yang secara aktif digunakan untuk data dalam tabel yang dioptimalkan memori. Mengembalikan NULL jika database tidak memiliki MEMORY_OPTIMIZED_DATA grup file dengan setidaknya satu kontainer. |
xtp_pending_truncation 1 |
varchar(18) | Ukuran total file titik pemeriksaan dengan status WAITING_FOR_LOG_TRUNCATION , dalam KB. Nilai ini adalah ruang disk yang digunakan untuk file titik pemeriksaan yang menunggu pembersihan, setelah pemotongan log terjadi. Mengembalikan NULL jika database tidak memiliki MEMORY_OPTIMIZED_DATA grup file dengan setidaknya satu kontainer. |
1 Hanya disertakan jika @include_total_xtp_storage diatur ke 1
.
Keterangan
Nilai database_size
umumnya lebih besar dari jumlah reserved
unallocated space
+ karena mencakup ukuran file log, tetapi reserved
dan unallocated_space
hanya mempertimbangkan halaman data. Dalam beberapa kasus dengan Azure Synapse Analytics, pernyataan ini mungkin tidak benar.
Halaman yang digunakan oleh indeks XML dan indeks teks lengkap disertakan untuk index_size
kedua tataan hasil. Saat @objname ditentukan, halaman untuk indeks XML dan indeks teks lengkap untuk objek juga dihitung dalam total reserved
dan index_size
hasil.
Jika penggunaan ruang dihitung untuk database atau objek yang merupakan indeks spasial, kolom ukuran spasial, seperti database_size
, reserved
, dan index_size
, sertakan ukuran indeks spasial.
Ketika @updateusage ditentukan, Mesin Database SQL Server memindai halaman data dalam database dan melakukan koreksi yang diperlukan pada sys.allocation_units
tampilan katalog dan sys.partitions
mengenai ruang penyimpanan yang digunakan oleh setiap tabel. Ada beberapa situasi, misalnya, setelah indeks dihilangkan, ketika informasi spasi untuk tabel mungkin tidak terkini. @updateusage dapat memakan waktu untuk berjalan pada tabel atau database besar. Gunakan @updateusage hanya ketika Anda menduga nilai yang salah dikembalikan dan ketika proses tidak memiliki efek buruk pada pengguna atau proses lain dalam database. Jika disukai, DBCC UPDATEUSAGE
dapat dijalankan secara terpisah.
Catatan
Saat Anda menjatuhkan atau membangun kembali indeks besar, atau menghilangkan atau memotong tabel besar, Mesin Database menangguhkan alokasi halaman aktual, dan kunci terkaitnya, hingga setelah transaksi diterapkan. Operasi penurunan yang ditangguhkan tidak segera melepaskan ruang yang dialokasikan. Oleh karena itu, nilai yang dikembalikan segera setelah menghilangkan atau memotong objek besar mungkin tidak mencerminkan sp_spaceused
ruang disk aktual yang tersedia.
Izin
Izin untuk menjalankan sp_spaceused
diberikan ke peran publik . Hanya anggota peran database tetap db_owner yang dapat menentukan parameter @updateusage .
Contoh
J. Menampilkan informasi ruang disk tentang tabel
Contoh berikut melaporkan informasi ruang disk untuk Vendor
tabel dan indeksnya.
USE AdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Menampilkan informasi ruang yang diperbarui tentang database
Contoh berikut meringkas ruang yang digunakan dalam database saat ini dan menggunakan parameter opsional @updateusage untuk memastikan nilai saat ini dikembalikan.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
C. Menampilkan informasi penggunaan ruang tentang tabel jarak jauh yang terkait dengan tabel yang diaktifkan Stretch
Contoh berikut meringkas ruang yang digunakan oleh tabel jarak jauh yang terkait dengan tabel yang diaktifkan Stretch dengan menggunakan argumen @mode untuk menentukan target jarak jauh. Untuk informasi selengkapnya, lihat Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
D. Menampilkan informasi penggunaan ruang untuk database dalam satu tataan hasil
Contoh berikut meringkas penggunaan ruang untuk database saat ini dalam satu tataan hasil.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @oneresultset = 1;
E. Menampilkan informasi penggunaan ruang untuk database dengan setidaknya satu grup file MEMORY_OPTIMIZED dalam satu tataan hasil
Contoh berikut merangkum penggunaan ruang untuk database saat ini dengan setidaknya satu MEMORY_OPTIMIZED
grup file dalam satu tataan hasil.
USE WideWorldImporters
GO
EXEC sp_spaceused @updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Menampilkan informasi penggunaan ruang untuk objek tabel MEMORY_OPTIMIZED dalam database
Contoh berikut merangkum penggunaan ruang untuk MEMORY_OPTIMIZED
objek tabel dalam database saat ini dengan setidaknya satu MEMORY_OPTIMIZED
grup file.
USE WideWorldImporters
GO
EXEC sp_spaceused @objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO