sp_estimated_rowsize_reduction_for_vardecimal (Transact-SQL)

Вычисляет уменьшение среднего размера строк, если в таблице включен формат хранения vardecimal. С помощью этого числа можно вычислить общее уменьшение размера таблицы. Поскольку для вычисления среднего уменьшения размера строки используется статистическая выборка, это значение следует рассматривать только как приблизительное. В редких случаях размер строки может увеличиваться после включения формата хранения vardecimal. Формат хранения vardecimal доступен только в выпусках SQL Server: Enterprise, Developer и Evaluation, начиная с SQL Server 2005 с пакетом обновления 2.

ПримечаниеПримечание

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Пользуйтесь вместо этого сжатием ROW и PAGE. Дополнительные сведения см. в разделе Создание сжатых таблиц и индексов. Влияние сжатия на размер таблиц и индексов см. в разделе sp_estimate_data_compression_savings (Transact-SQL).

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_estimated_rowsize_reduction_for_vardecimal [ [ @table_name = ] 'table'] [;]

Аргументы

  • [ @table = ] 'table'
    Трехкомпонентное имя таблицы, для которой изменяется формат хранения. Аргумент table имеет тип nvarchar(776).

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Приведенный ниже результирующий набор содержит сведения о текущем и вычисленном размере таблицы.

Имя столбца

Тип данных

Описание

avg_rowlen_fixed_format

decimal (12, 2)

Представляет длину строки в формате хранения fixed decimal.

avg_rowlen_vardecimal_format

decimal (12, 2)

Представляет средний размер строки при использовании формата хранения vardecimal.

row_count

int

Количество строк в таблице.

Замечания

С помощью хранимой процедуры sp_estimated_rowsize_reduction_for_vardecimal можно вычислить экономию, которую дает включение формата хранения vardecimal в таблице. Например, если средний размер строки можно уменьшить на 40%, то размер самой таблицы также можно потенциально уменьшить на 40%. Наличие экономии места зависит от коэффициента заполнения и размера строки. Например, если длина строки, составляющая 8 000 байт, уменьшается на 40%, то на странице данных все равно помещается только одна строка, что в результате не дает никакой экономии.

Если результаты выполнения хранимой процедуры sp_estimated_rowsize_reduction_for_vardecimal показывают, что размер таблицы будет увеличиваться, то это означает, что в таблице используется почти полная точность типов данных decimal, а небольшой объем затрат, необходимый для использования формата хранения vardecimal, больше, чем экономия места от применения этого формата. В этом редком случае формат хранения vardecimal включать не следует.

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

Разрешения

Необходимо разрешение CONTROL на таблицу.

Примеры

В следующем примере вычисляется уменьшение размера строк при сжатии таблицы Production.WorkOrderRouting в базе данных AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
EXEC sp_estimated_rowsize_reduction_for_vardecimal 'Production.WorkOrderRouting' ;
GO