sp_spaceused (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Menampilkan jumlah baris, ruang disk yang dicadangkan, dan ruang disk yang digunakan oleh tabel, tampilan terindeks, atau antrean Service Broker dalam database saat ini, atau menampilkan ruang disk yang dicadangkan dan digunakan oleh seluruh database.
Sintaks
sp_spaceused [[ @objname = ] '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 and Analytics Platform System (PDW), sp_spaceused harus menentukan parameter bernama (misalnya sp_spaceused (@objname= N'Table1'); daripada mengandalkan posisi parameter ordinal.
[ @objname = ] 'objname'
Adalah nama tabel yang memenuhi syarat atau tidak memenuhi syarat, tampilan terindeks, atau antrean tempat informasi penggunaan ruang diminta. 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.
objname adalah nvarchar(776), dengan default NULL.
Catatan
Azure Synapse Analytics and Analytics Platform System (PDW) hanya mendukung database dan objek tabel.
[ @updateusage = ] 'updateusage' Menunjukkan DBCC UPDATEUSAGE harus dijalankan untuk memperbarui informasi penggunaan ruang. Ketika objname tidak ditentukan, pernyataan dijalankan pada seluruh database; jika tidak, pernyataan dijalankan pada objname. Nilai bisa benar atau salah. updateusage adalah varchar(5), dengan default 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.
Argumen mode dapat memiliki nilai berikut:
| Nilai | Deskripsi |
|---|---|
| SEMUA | 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 ketika @mode = 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 telah menjatuhkan tabel jarak jauh secara manual. Penyediaan arsip data jarak jauh mengembalikan status Berhasil, tetapi sebenarnya gagal. |
mode adalah varchar(11), dengan default N'ALL'.
[ @oneresultset = ] oneresultset Menunjukkan apakah akan mengembalikan satu tataan hasil. Argumen oneresultset dapat memiliki nilai berikut:
| Nilai | Deskripsi |
|---|---|
| 0 | Ketika @objname null atau tidak ditentukan, dua tataan hasil dikembalikan. Dua tataan hasil adalah perilaku default. |
| 1 | Ketika @objname = null atau tidak ditentukan, satu tataan hasil dikembalikan. |
oneresultsetadalah bit, dengan default 0.
[ @include_total_xtp_storage] 'include_total_xtp_storage'Berlaku untuk: SQL Server 2017 (14.x), SQL Database.
Ketika @oneresultset=1, parameter @include_total_xtp_storage menentukan apakah satu resultset menyertakan kolom untuk penyimpanan MEMORY_OPTIMIZED_DATA. Nilai defaultnya adalah 0, yaitu, secara default (jika parameter dihilangkan) kolom XTP tidak disertakan dalam resultset.
Mengembalikan Nilai Kode
0 (keberhasilan) atau 1 (kegagalan)
Tataan Hasil
Jika objname dihilangkan dan nilai oneresultset adalah 0, tataan 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 menyertakan file data dan log. |
| ruang yang tidak dialokasikan | varchar(18) | Ruang dalam database yang belum dicadangkan untuk objek database. |
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
| Dipesan | 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. |
| tidak digunakan | varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Jika objname dihilangkan dan nilai oneresultset adalah 1, satu tataan 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 menyertakan file data dan log. |
| ruang yang tidak dialokasikan | varchar(18) | Ruang dalam database yang belum dicadangkan untuk objek database. |
| Dipesan | 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. |
| tidak digunakan | varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Jika objname ditentukan, tataan hasil berikut dikembalikan untuk objek yang ditentukan.
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
| nama | 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. |
| baris | karakter(20) | Jumlah baris yang ada dalam tabel. Jika objek yang ditentukan adalah antrean Service Broker, kolom ini menunjukkan jumlah pesan dalam antrean. |
| Dipesan | 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. |
| tidak digunakan | varchar(18) | Jumlah total ruang yang dicadangkan untuk objname tetapi belum digunakan. |
Ini adalah mode default, ketika tidak ada parameter yang ditentukan. Tataan hasil berikut dikembalikan dengan 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 menyertakan file data dan log. Jika database memiliki grup file MEMORY_OPTIMIZED_DATA, ini termasuk ukuran total pada disk dari semua file titik pemeriksaan dalam grup file. |
| ruang yang tidak dialokasikan | varchar(18) | Ruang dalam database yang belum dicadangkan untuk objek database. Jika database memiliki grup file MEMORY_OPTIMIZED_DATA, ini termasuk ukuran total file titik pemeriksaan dengan status YANG TELAH DIBUAT sebelumnya dalam grup file. |
Ruang yang digunakan oleh tabel dalam database: (hasil ini tidak mencerminkan tabel yang dioptimalkan memori, karena tidak ada akuntansi per tabel penggunaan disk)
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
| Dipesan | 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. |
| tidak digunakan | varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
Tataan hasil berikut dikembalikan HANYA JIKA database memiliki grup file MEMORY_OPTIMIZED_DATA dengan setidaknya satu kontainer:
| Nama kolom | Jenis data | Deskripsi |
|---|---|---|
| xtp_precreated | varchar(18) | Ukuran total file titik pemeriksaan dengan status TELAH DIBUAT SEBELUMNYA, 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. 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. 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 tataan hasil berikut dikembalikan untuk memberikan informasi ukuran database saat ini. Jika include_total_xtp_storage adalah 0 (default), tiga kolom terakhir 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 menyertakan file data dan log. Jika database memiliki grup file MEMORY_OPTIMIZED_DATA, ini termasuk ukuran total pada disk dari semua file titik pemeriksaan dalam grup file. |
| ruang yang tidak dialokasikan | varchar(18) | Ruang dalam database yang belum dicadangkan untuk objek database. Jika database memiliki grup file MEMORY_OPTIMIZED_DATA, ini termasuk ukuran total pada disk file titik pemeriksaan dengan status DIBUAT SEBELUMNYA dalam grup file. |
| Dipesan | 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. |
| tidak digunakan | varchar(18) | Jumlah total ruang yang dicadangkan untuk objek dalam database, tetapi belum digunakan. |
| xtp_precreated | varchar(18) | Ukuran total file titik pemeriksaan dengan status DIBUAT SEBELUMNYA, dalam KB. Ini dihitung terhadap ruang yang tidak dialokasikan dalam database secara keseluruhan. Mengembalikan NULL jika database tidak memiliki grup file memory_optimized_data dengan setidaknya satu kontainer. *Kolom ini hanya disertakan jika @include_total_xtp_storage=1*. |
| xtp_used | varchar(18) | Ukuran total file titik pemeriksaan dengan status UNDER CONSTRUCTION, ACTIVE, dan MERGE TARGET, dalam KB. Ini adalah ruang disk yang secara aktif digunakan untuk data dalam tabel yang dioptimalkan memori. Mengembalikan NULL jika database tidak memiliki grup file memory_optimized_data dengan setidaknya satu kontainer. *Kolom ini hanya disertakan jika @include_total_xtp_storage=1*. |
| xtp_pending_truncation | varchar(18) | Ukuran total file titik pemeriksaan dengan status WAITING_FOR_LOG_TRUNCATION, dalam KB. Ini adalah ruang disk yang digunakan untuk file titik pemeriksaan yang menunggu pembersihan, setelah pemotokan log terjadi. Mengembalikan NULL jika database tidak memiliki grup file memory_optimized_data dengan setidaknya satu kontainer. Kolom ini hanya disertakan jika @include_total_xtp_storage=1. |
Keterangan
database_size umumnya lebih besar dari jumlah ruang yang dicadangkan + karena mencakup ukuran file log, tetapi dicadangkan 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 dalam index_size untuk kedua tataan hasil. Ketika objname ditentukan, halaman untuk indeks XML dan indeks teks lengkap untuk objek juga dihitung dalam total hasil yang dicadangkan dan index_size .
Jika penggunaan ruang dihitung untuk database atau objek yang memiliki indeks spasial, kolom ukuran spasial, seperti database_size, dicadangkan, dan index_size, sertakan ukuran indeks spasial.
Ketika updateusage ditentukan, mesin database SQL Server memindai halaman data dalam database dan membuat koreksi yang diperlukan pada tampilan katalog sys.allocation_units 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 akan 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 dealokasi halaman aktual, dan kunci terkaitnya, hingga setelah transaksi diterapkan. Operasi penghilangan yang ditangguhkan tidak segera melepaskan ruang yang dialokasikan. Oleh karena itu, nilai yang dikembalikan oleh sp_spaceused segera setelah menghilangkan atau memotong objek besar mungkin tidak mencerminkan 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
A. Menampilkan informasi ruang disk tentang tabel
Contoh berikut melaporkan informasi ruang disk untuk Vendor tabel dan indeksnya.
USE AdventureWorks2016;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Menampilkan informasi ruang yang diperbarui tentang database
Contoh berikut merangkum ruang yang digunakan dalam database saat ini dan menggunakan parameter @updateusage opsional untuk memastikan nilai saat ini dikembalikan.
USE AdventureWorks2016;
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 ini 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 StretchedAdventureWorks2016
GO
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY'
D. Menampilkan informasi penggunaan ruang untuk database dalam satu tataan hasil
Contoh berikut merangkum penggunaan ruang untuk database saat ini dalam satu tataan hasil.
USE AdventureWorks2016
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 grup file MEMORY_OPTIMIZED 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 ini meringkas penggunaan ruang untuk objek tabel MEMORY_OPTIMIZED dalam database saat ini dengan setidaknya satu grup file MEMORY_OPTIMIZED.
USE WideWorldImporters
GO
EXEC sp_spaceused
@objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Lihat juga
CREATE INDEX (Transact-SQL)
BUAT TABEL (Transact-SQL)
DBCC UPDATEUSAGE (SQL Transaksi)
SQL Server Service Broker
sys.allocation_units (SQL Bertransaksi)
sys.indexes (Transact-SQL)
sys.index_columns (SQL Bertransaksi)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Prosedur Tersimpan Sistem (SQL Transaksi)
