sys.dm_db_stats_properties (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Fungsi sys.dm_db_stats_properties manajemen dinamis mengembalikan statistik untuk objek database yang ditentukan dalam database saat ini.

Untuk tabel yang dipartisi, lihat juga sys.dm_db_incremental_stats_properties serupa.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Argumen

object_id

ID objek dalam database saat ini. object_id adalah int.

stats_id

ID statistik untuk .object_id Anda bisa mendapatkan ID statistik dari tampilan manajemen dinamis sys.stats . stats_id adalah int.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
object_id int ID objek (tabel atau tampilan terindeks).
stats_id int ID objek statistik. Unik dalam tabel atau tampilan terindeks. Untuk informasi selengkapnya, lihat sys.stats (Transact-SQL).
last_updated datetime2 Tanggal dan waktu objek statistik terakhir diperbarui. Untuk informasi selengkapnya, lihat bagian Catatan di artikel ini.
rows bigint Jumlah total baris dalam tabel atau tampilan terindeks saat statistik terakhir diperbarui. Jika statistik difilter atau sesuai dengan indeks yang difilter, jumlah baris mungkin kurang dari jumlah baris dalam tabel.
rows_sampled bigint Jumlah total baris yang diambil sampelnya untuk perhitungan statistik.
steps int Jumlah langkah dalam histogram. Untuk informasi selengkapnya, lihat SHOW_STATISTICS DBCC (Transact-SQL).
unfiltered_rows bigint Jumlah total baris dalam tabel sebelum menerapkan ekspresi filter (untuk statistik yang difilter). Jika statistik tidak difilter, sama dengan nilai yang ditampilkan di unfiltered_rows kolom. rows
modification_counter bigint Jumlah total modifikasi untuk kolom statistik utama (kolom tempat histogram dibangun) sejak terakhir kali statistik diperbarui.

Tabel yang dioptimalkan memori: memulai SQL Server 2016 (13.x) dan di Azure SQL Database kolom ini berisi: jumlah total modifikasi untuk tabel sejak terakhir kali statistik diperbarui atau database dimulai ulang.
persisted_sample_percent float Persentase sampel persisten yang digunakan untuk pembaruan statistik yang tidak secara eksplisit menentukan persentase pengambilan sampel. Jika nilainya nol, maka tidak ada persentase sampel yang dipertahankan yang ditetapkan untuk statistik ini.

Berlaku untuk: SQL Server 2016 (13.x) SP1 CU4 dan versi yang lebih baru

Keterangan

Fungsi ini sys.dm_db_stats_properties mengembalikan kumpulan baris kosong di bawah salah satu kondisi berikut:

  • object_id atau stats_id adalah NULL.
  • Objek yang ditentukan tidak ditemukan atau tidak sesuai dengan tabel atau tampilan yang diindeks.
  • ID statistik yang ditentukan tidak sesuai dengan statistik yang ada untuk ID objek yang ditentukan.
  • Pengguna saat ini tidak memiliki izin untuk melihat objek statistik.

Perilaku ini memungkinkan penggunaan sys.dm_db_stats_properties aman saat diterapkan silang ke baris dalam tampilan seperti sys.objects dan sys.stats.

Tanggal pembaruan statistik disimpan dalam objek blob statistik bersama dengan histogram dan vektor kepadatan, bukan dalam metadata. Ketika tidak ada data yang dibaca untuk menghasilkan data statistik, blob statistik tidak dibuat, tanggal tidak tersedia, dan last_updated kolomnya adalah NULL. Kondisi ini berlaku untuk statistik yang difilter yang predikatnya tidak mengembalikan baris apa pun, atau untuk tabel kosong baru.

Permissions

Anda memerlukan SELECT izin pada kolom statistik, atau Anda harus memiliki tabel, atau menjadi anggota sysadmin peran server tetap, db_owner peran database tetap, atau db_ddladmin peran database tetap.

Examples

A. Contoh sederhana

Contoh berikut mengembalikan informasi tentang statistik untuk Person.Person tabel dalam AdventureWorks database.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B. Mengembalikan semua properti statistik untuk tabel

Contoh berikut mengembalikan properti semua statistik yang ada untuk tabel Sales.SalesOrderDetail.

SELECT 
    OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
    OBJECT_NAME(stat.object_id)        AS table_name,
    sp.stats_id, 
    stat.[name], 
    stat.filter_definition, 
    sp.last_updated, 
    sp.[rows], 
    sp.rows_sampled, 
    sp.steps,
    sp.unfiltered_rows, 
    sp.modification_counter   
FROM sys.stats AS stat   
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')

C. Mengembalikan properti statistik untuk objek yang sering dimodifikasi

Contoh berikut mengembalikan semua tabel, tampilan yang diindeks, dan statistik dalam database saat ini yang kolom terdepan dimodifikasi lebih dari 1.000 kali sejak pembaruan statistik terakhir.

SELECT 
    OBJECT_SCHEMA_NAME(obj.[object_id]) AS schema_name,
    obj.[name],
    stat.[name],
    stat.stats_id, 
    sp.last_updated, 
    sp.modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id  
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE sp.modification_counter > 1000;