sp_spaceused (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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

Konvensi sintaks transact-SQL

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, , ACTIVEdan 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_precreated1 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_used1 varchar(18) Ukuran total file titik pemeriksaan dengan status UNDER CONSTRUCTION, , ACTIVEdan 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_truncation1 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 reservedunallocated 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