sys.dm_db_file_space_usage (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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.
file_id smallint ID File.

file_id memetakan ke file_id di sys.dm_io_virtual_file_stats dan fileid di sys.sysfiles.
filegroup_id smallint Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

ID Grup File.
total_page_count bigint Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Jumlah total halaman dalam file data.
allocated_extent_page_count bigint Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Jumlah total halaman dalam jangkauan yang dialokasikan dalam file data.
unallocated_extent_page_count bigint Jumlah total halaman dalam jangkauan yang tidak dialokasikan dalam file data.

Halaman yang tidak digunakan dalam jangkauan yang dialokasikan tidak disertakan.
version_store_reserved_page_count bigint Jumlah total halaman dalam jangkauan 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 yang seragam untuk objek pengguna dalam database. Halaman yang tidak digunakan dari jangkauan 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 bisa menggunakan kolom total_pages dalam tampilan katalog sys.allocation_units untuk mengembalikan jumlah halaman yang dipesan dari setiap unit alokasi di objek pengguna. Namun, perhatikan bahwa kolom total_pages menyertakan halaman IAM.
internal_object_reserved_page_count bigint Jumlah total halaman dalam jangkauan seragam yang dialokasikan untuk objek internal dalam file. Halaman yang tidak digunakan dari jangkauan 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 setiap objek internal.
mixed_extent_page_count bigint Jumlah total halaman yang dialokasikan dan tidak dialokasikan dalam jangkauan campuran yang dialokasikan dalam file. Jangkauan 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 yang lebih baru.

Jumlah total halaman yang dimodifikasi dalam jangkauan file yang dialokasikan sejak pencadangan database lengkap terakhir. Jumlah halaman yang dimodifikasi dapat digunakan untuk melacak jumlah perubahan diferensial dalam database sejak pencadangan penuh terakhir, untuk memutuskan apakah pencadangan 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 pada tingkat tertentu. Oleh karena itu, nilai jumlah halaman akan selalu menjadi 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 jangkauan, lihat Panduan Arsitektur Halaman dan Jangkauan.

Konten penyimpanan versi saat ini ada di sys.dm_tran_version_store. Halaman penyimpanan versi dilacak pada tingkat file alih-alih tingkat sesi dan tugas, karena halaman tersebut adalah 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 di kolom mixed_extent_page_count 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 dalam 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

  • Urutkan 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 dan SQL Managed Instance, memerlukan VIEW SERVER STATE izin.

Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Azure Active Directory, 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 dalam tempdb

Kueri berikut mengembalikan jumlah total halaman kosong dan total ruang kosong dalam megabyte (MB) yang tersedia di semua file data dalam 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 dalam 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;

Lihat juga