Compartir vía


sys.dm_db_stats_properties (Transact-SQL)

Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada

Devuelve las propiedades de las estadísticas del objeto de base de datos especificado (tabla o vista indizada) en la base de datos de SQL Server actual. Para las tablas con particiones, consulte el sys.dm_db_incremental_stats_properties similar.

Sintaxis

sys.dm_db_stats_properties (object_id, stats_id)  

Argumentos

object_id
Es el identificador del objeto en la base de datos actual para el que se han solicitado propiedades de una de sus estadísticas. object_id es int.

stats_id
Es el identificador de estadísticas para el object_idespecificado. El identificador de estadísticas se puede obtener desde la vista de administración dinámica sys.stats . stats_id es int.

Tabla devuelta

Nombre de la columna Tipo de datos Descripción
object_id int Identificador del objeto (tabla o vista indizada) para el que se devuelven las propiedades del objeto de estadísticas.
stats_id int Identificador del objeto de estadísticas. Es único dentro de la vista indizada o la tabla. Para obtener más información, vea sys.stats (Transact-SQL).
last_updated datetime2 Fecha y hora de la última actualización del objeto de estadísticas. Para más información, vea la sección Comentarios en esta página.
rows bigint Número total de filas que tenía la tabla o la vista indizada la última vez que se actualizaron las estadísticas. Si las estadísticas se filtran o corresponden a un índice filtrado, el número de filas puede ser inferior al número de filas de la tabla.
rows_sampled bigint Número total de filas muestreadas para cálculos de estadísticas.
steps int Número de pasos del histograma. Para obtener más información, vea DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Número total de filas de la tabla antes de aplicar la expresión de filtro (para estadísticas filtradas). Si las estadísticas no están filtradas, unfiltered_rows es igual al valor devuelto en la columna rows.
modification_counter bigint Número total de modificaciones para la columna de estadísticas iniciales (la columna en la que se ha generado el histograma) desde la última vez que se actualizaron las estadísticas.

Tablas optimizadas para memoria: a partir de SQL Server 2016 (13.x) y en Azure SQL Database, esta columna contiene: número total de modificaciones para la tabla desde la última vez que se actualizaron las estadísticas o se reinició la base de datos.
persisted_sample_percent float Porcentaje de ejemplo persistente empleado en las actualizaciones de estadísticas en las que no se especifica explícitamente un porcentaje de muestreo. Si el valor es cero, significa que no hay establecido ningún porcentaje de ejemplo persistente para esta estadística.

Se aplica a: SQL Server 2016 (13.x) SP1 CU4

Comentarios

sys.dm_db_stats_properties devuelve un conjunto de filas vacío en cualquiera de las condiciones siguientes:

  • object_id o stats_id es NULL.
  • El objeto especificado no se encuentra o no corresponde a una vista indizada o a una tabla.
  • El identificador de estadísticas especificado no se corresponde con las estadísticas existentes para el identificador de objeto especificado.
  • El usuario actual no tiene permisos para ver el objeto de estadísticas.

Este comportamiento permite el uso seguro de sys.dm_db_stats_properties cuando se aplican cruzadas a filas en vistas como sys.objects y sys.stats.

La fecha de actualización de estadísticas se almacena en el objeto BLOB de estadísticas junto con el histograma y el vector de densidad, pero no en los metadatos. Cuando no se lee ningún dato para generar datos de estadísticas, no se crea el blob de estadísticas, la fecha no está disponible y la columna last_updated es NULL. Esto sucede en las estadísticas filtradas, en las que el predicado no devuelve ninguna fila, o en las tablas nuevas vacías.

Permisos

Necesita que el usuario tenga permisos de selección en columnas de estadísticas o posea la tabla, o que el usuario sea miembro del rol fijo de servidor sysadmin, del rol fijo de base de datos db_owner o del rol fijo de base de datos db_ddladmin.

Ejemplos

A. Ejemplo sencillo

En el ejemplo siguiente se devuelven las estadísticas de la Person.Person tabla de la base de datos AdventureWorks.

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

B. Devolver propiedades de todas las estadísticas de una tabla

En el ejemplo siguiente se devuelven propiedades de todas las estadísticas que existen para la tabla TEST.

SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter   
FROM sys.stats AS stat   
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = object_id('TEST');  

C. Devolver propiedades de estadísticas para objetos modificados frecuentemente

En el ejemplo siguiente se devuelven todas las tablas, vistas indizadas y estadísticas de la base de datos actual para las que la columna inicial se modificó más de 1000 veces desde la última actualización de estadísticas.

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

Consulte también

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con objetos (Transact-SQL)
Funciones y vistas de administración dinámica (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)