sys.dm_db_file_space_usage (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Mengembalikan informasi penggunaan ruang untuk setiap file data dalam database.
Catatan
Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_db_file_space_usage
. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_id |
smallint | ID Database. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. |
file_id |
smallint | ID File.file_id memetakan ke file_id dalam sys.dm_io_virtual_file_stats dan untuk fileid di sys.sysfiles. |
filegroup_id |
smallint | Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. ID Grup File. |
total_page_count |
bigint | Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. Jumlah total halaman dalam file data. |
allocated_extent_page_count |
bigint | Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. Jumlah total halaman dalam tingkat yang dialokasikan dalam file data. |
unallocated_extent_page_count |
bigint | Jumlah total halaman dalam tingkat yang tidak dialokasikan dalam file data. Halaman yang tidak digunakan dalam tingkat yang dialokasikan tidak disertakan. |
version_store_reserved_page_count |
bigint | Jumlah total halaman dalam tingkat seragam yang dialokasikan untuk penyimpanan versi. Halaman penyimpanan versi tidak pernah dialokasikan dari tingkat campuran. Halaman IAM tidak disertakan, karena selalu dialokasikan dari tingkat campuran. Halaman PFS disertakan jika dialokasikan dari tingkat yang seragam. Untuk informasi selengkapnya, lihat sys.dm_tran_version_store (Transact-SQL). |
user_object_reserved_page_count |
bigint | Jumlah total halaman yang dialokasikan dari tingkat seragam untuk objek pengguna dalam database. Halaman yang tidak digunakan dari tingkat yang dialokasikan disertakan dalam hitungan. Halaman IAM tidak disertakan, karena selalu dialokasikan dari tingkat campuran. Halaman PFS disertakan jika dialokasikan dari tingkat yang seragam. Anda dapat menggunakan total_pages kolom dalam tampilan katalog sys.allocation_units untuk mengembalikan jumlah halaman yang dipesan dari setiap unit alokasi di objek pengguna. Namun, kolom menyertakan total_pages halaman IAM. |
internal_object_reserved_page_count |
bigint | Jumlah total halaman dalam tingkat seragam yang dialokasikan untuk objek internal dalam file. Halaman yang tidak digunakan dari tingkat yang dialokasikan disertakan dalam hitungan. Halaman IAM tidak disertakan, karena selalu dialokasikan dari tingkat campuran. Halaman PFS disertakan jika dialokasikan dari tingkat yang seragam. Tidak ada tampilan katalog atau objek manajemen dinamis yang mengembalikan jumlah halaman dari setiap objek internal. |
mixed_extent_page_count |
bigint | Jumlah total halaman yang dialokasikan dan tidak dialokasikan dalam tingkat campuran yang dialokasikan dalam file. Tingkat campuran berisi halaman yang dialokasikan untuk objek yang berbeda. Jumlah ini mencakup semua halaman IAM dalam file. |
modified_extent_page_count |
bigint | Berlaku untuk: SQL Server 2016 (13.x) SP2 dan versi yang lebih baru. Jumlah total halaman yang dimodifikasi dalam tingkat file yang dialokasikan sejak pencadangan database penuh terakhir. Jumlah halaman yang dimodifikasi dapat digunakan untuk melacak jumlah perubahan diferensial dalam database sejak pencadangan penuh terakhir, untuk memutuskan apakah cadangan diferensial diperlukan. |
pdw_node_id |
int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) Pengidentifikasi untuk simpul tempat distribusi ini aktif. |
distribution_id |
int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) ID numerik unik yang terkait dengan distribusi. |
Keterangan
Jumlah halaman selalu berada pada tingkat yang sama. Oleh karena itu, nilai jumlah halaman selalu kelipatan delapan. Jangkauan yang berisi halaman alokasi Peta Alokasi Global (GAM) dan Peta Alokasi Global Bersama (SGAM) dialokasikan sejauh mana. Mereka tidak disertakan dalam jumlah halaman yang dijelaskan sebelumnya. Untuk informasi selengkapnya tentang halaman dan luasnya, lihat Panduan Arsitektur Halaman dan Tingkat.
Konten penyimpanan versi saat ini ada di sys.dm_tran_version_store. Halaman penyimpanan versi dilacak di tingkat file alih-alih sesi dan tingkat tugas, karena merupakan sumber daya global. Sesi dapat menghasilkan versi, tetapi versi tidak dapat dihapus saat sesi berakhir. Pembersihan penyimpanan versi harus mempertimbangkan transaksi terlama yang membutuhkan akses ke versi tertentu. Transaksi terlama yang terkait dengan pembersihan penyimpanan versi dapat ditemukan dengan melihat kolom elapsed_time_seconds di sys.dm_tran_active_snapshot_database_transactions.
Perubahan yang sering terjadi mixed_extent_page_count
dalam kolom dapat menunjukkan penggunaan halaman SGAM yang berat. Ketika ini terjadi, Anda mungkin melihat banyak PAGELATCH_UP menunggu di mana sumber daya tunggu adalah halaman SGAM. Untuk informasi selengkapnya, lihat sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL), dan sys.dm_os_latch_stats (Transact-SQL).
Objek pengguna
Objek berikut disertakan dalam penghitung halaman objek pengguna:
- Tabel dan indeks yang ditentukan pengguna
- Tabel dan indeks sistem
- Tabel dan indeks sementara global
- Tabel dan indeks sementara lokal
- Variabel tabel
- Tabel yang dikembalikan dalam fungsi bernilai tabel
Objek internal
Objek internal hanya ada di tempdb
. Objek berikut disertakan dalam penghitung halaman objek internal:
- Tabel kerja untuk operasi kursor atau penampung dan penyimpanan objek besar sementara (LOB)
- File kerja untuk operasi seperti gabungan hash
- Mengurutkan eksekusi
Kardinalitas hubungan
Dari | Untuk | Hubungan |
---|---|---|
sys.dm_db_file_space_usage.database_id , file_id |
sys.dm_io_virtual_file_stats.database_id , file_id |
One-to-one |
Izin
Pada SQL Server 2019 (15.x) dan versi yang lebih lama, dan SQL Managed Instance, memerlukan VIEW SERVER STATE
izin.
Pada SQL Server 2022 (16.x) dan versi yang lebih baru, memerlukan izin TAMPILKAN STATUS PERFORMA SERVER di server.
Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE
pada database, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan.
Contoh
Menentukan jumlah ruang kosong di tempdb
Kueri berikut mengembalikan jumlah total halaman kosong dan total ruang kosong dalam megabyte (MB) yang tersedia di semua file data di tempdb
.
USE tempdb;
GO
SELECT
SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
Menentukan jumlah ruang yang digunakan oleh objek pengguna
Kueri berikut mengembalikan jumlah total halaman yang digunakan oleh objek pengguna dan total ruang yang digunakan oleh objek pengguna di tempdb
.
USE tempdb;
GO
SELECT
SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;