Поделиться через


sys.dm_db_stats_properties (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Возвращает свойства статистики для указанного объекта базы данных (таблицы или индексированного представления) в текущей базе данных SQL Server. Сведения о секционированных таблицах см. в аналогичных sys.dm_db_incremental_stats_properties.

Синтаксис

sys.dm_db_stats_properties (object_id, stats_id)  

Аргументы

object_id
Идентификатор объекта текущей базы данных, для которого запрашиваются статистические свойства. object_id имеет тип int.

stats_id
Идентификатор статистики для указанного аргумента object_id. Идентификатор статистики может быть получен из динамического административного представления sys.stats . stats_id имеет тип int.

Возвращаемая таблица

Имя столбца Тип данных Description
object_id int Идентификатор объекта (таблицы или индексированного представления), для которого возвращаются свойства объекта статистики.
stats_id int Идентификатор объекта статистики. Является уникальным в пределах таблицы или индексированного представления. Дополнительные сведения см. в статье sys.stats (Transact-SQL).
last_updated datetime2 Дата и время последнего обновления объекта статистики. Дополнительные сведения см. в подразделе Примечания на этой странице.
строк 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 и накопительным обновлением 4

Замечания

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

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

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

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

Разрешения

Требуется наличие у пользователя разрешения на выбор столбцов статистики либо то, чтобы пользователь был владельцем таблицы или членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_owner или предопределенной роли базы данных db_ddladmin.

Примеры

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

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

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

B. Получение всех статистических свойств таблицы

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

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

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;  

См. также

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Связанные с объектами динамические административные представления и функции (Transact-SQL)
Динамические административные представления и функции (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)