sys.dm_db_stats_properties (Transact-SQL)
Se aplica a: SQL Server
Azure 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)