sys.dm_db_file_space_usage (T-SQL)

Berlaku untuk:SQL ServerAzure 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.

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;

Baca juga