sys.dm_db_stats_properties (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLБаза данных SQL в Microsoft Fabric

sys.dm_db_stats_properties Динамическая функция управления возвращает статистику для указанного объекта базы данных в текущей базе данных.

Для разделённых таблиц см. аналогичную sys.dm_db_incremental_stats_properties.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Аргументы

object_id

ID объекта в текущей базе данных. object_id Это интеллект.

stats_id

ID статистики для указанного object_id. Статистический идентификатор можно получить из динамического управления sys.stats . stats_id Это интеллект.

Таблица возвращена

Название столбца Тип данных Описание
object_id int ID объекта (таблица или индексированный вид).
stats_id int Идентификатор объекта статистики. Является уникальным в пределах таблицы или индексированного представления. Дополнительные сведения см. в статье sys.stats (Transact-SQL).
last_updated datetime2 Дата и время последнего обновления объекта статистики. Дополнительные сведения см. в разделе Примечания в этой статье.
rows bigint Общее число строк в таблице или индексированном представлении при последнем обновлении статистики. Если статистика отфильтрована или соответствует отфильтрованному индексу, количество строк может быть меньше, чем количество строк в таблице.
rows_sampled bigint Общее количество строк, выбранных для статистических вычислений.
steps int Число шагов в гистограмме. Дополнительные сведения см. в разделе DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Общее количество строк в таблице до применения критерия фильтра (для отфильтрованной статистики). Если статистика не фильтруется, unfiltered_rows то равна значению, возвращаемому в rows столбце.
modification_counter bigint Общее количество изменений в начальном столбце статистики (на основе которого строится гистограмма) с момента последнего обновления статистики.

Оптимизированные для памяти таблицы: начиная с SQL Server 2016 (13.x) и в База данных SQL Azure этот столбец содержит: общее количество изменений для таблицы с момента последнего обновления статистики или перезапуск базы данных.
persisted_sample_percent float Сохраненный процент выборки, используемый для статистических обновлений, которые явно не указывают процент выборки. Если значение равно нулю, процент материализованной выборки не устанавливается для этой статистики.

Применимо к: SQL Server 2016 (13.x) SP1 CU4 и более поздним версиям

Замечания

sys.dm_db_stats_properties Функция возвращает пустой набор строк при любом из следующих условий:

  • object_id или stats_id есть NULL.
  • Указанный объект не находится или не соответствует таблице или индексированному представлению.
  • Указанный статистический идентификатор не соответствует существующей статистике для указанного идентификатора объекта.
  • Текущий пользователь не имеет прав на просмотр объекта статистики.

Это поведение позволяет безопасно использовать при sys.dm_db_stats_properties кросс-приложении к строкам в таких видах sys.objects , как и sys.stats.

Дата обновления статистики хранится в большом двоичном объекте статистики вместе с гистограммой и вектором плотности, а не в метаданных. Если данные не считываются для создания статистических данных, большой двоичный объект статистики не создается, дата недоступна и last_updated столбец NULL. Это условие применяется к отфильтрованным статистикам, для которых предикат не возвращает строки, или к новым пустым таблицам.

Permissions

Вам нужны SELECT права на статистические столбцы, или вы должны владеть таблицой, или быть членом sysadmin роли фиксированного сервера, db_owner роли фиксированной базы данных или роли db_ddladmin фиксированной базы данных.

Examples

А. Простой пример

Следующий пример возвращает информацию о статистике таблицы Person.Person в AdventureWorks базе данных.

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

B. Вернуть все статистические свойства таблицы

Следующий пример возвращает свойства всех статистик, существующих для таблицы 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. Свойства статистики возврата для часто изменяемых объектов

Следующий пример возвращает все таблицы, индексированные представления и статистику в текущей базе данных, для которой ведущий столбец был изменён более 1000 раз с момента последнего обновления статистики.

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;