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


Реализация сжатия Юникода

В SQL Server реализуется алгоритм стандартной схемы сжатия Юникода (SCSU), при этом сохраняются данные в сжатых объектах строк или страниц. Для этих объектов сжатие Юникода для столбцов типов nchar(n) и nvarchar(n) выполняется автоматически. Компонент Компонент Database Engine хранит данные Юникода как 2 байта, независимо от локали. Такая кодировка называется UCS-2. Для некоторых локалей реализация сжатия по алгоритму SCSU в SQL Server может сэкономить до 50 % места в хранилище.

Поддерживаемые типы данных

Сжатие Юникода поддерживает типы данных фиксированной длины nchar(n) и nvarchar(n). Внестрочные значения данных и значения, хранящиеся в столбцах nvarchar(max), не сжимаются.

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

Сжатие Юникода не поддерживается для данных типа nvarchar(max), даже если они хранятся в строке. Однако сжатие страниц может быть полезно для этого типа данных.

Обновление с предыдущих версий SQL Server

При обновлении базы данных SQL Server до SQL Server 2012 все изменения, связанные со сжатием Юникода, не оказывают влияния на объекты базы данных, сжатые или распакованные. После обновления базы данных ситуация с объектами выглядит следующим образом.

  • Если объект не сжат, то никаких изменений не происходит и объект продолжает работать как раньше.

  • Сжатые объекты строк и страниц продолжают работу как раньше. Распакованные данные остаются в распакованной форме до тех пор, пока их значение не будет обновлено.

  • Для новых строк, вставляемых в таблицу, сжатую на уровне строк или страниц, производится сжатие Юникода.

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

    Для использования всех преимуществ сжатия Юникода объект необходимо перестроить с использованием сжатия страниц или строк.

Влияние сжатия Юникода на хранилище данных

При создании или перестройке индекса, а также при изменении значения в таблице, сжатой на уровне строк или страниц, соответствующий индекс или значение сохраняется в сжатом виде только в том случае, если его размер в сжатом виде будет меньше текущего. Сжатие Юникода позволяет предотвратить разрастание размера строк в таблице или индексе.

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

Локаль

Процент сжатия

Английский

50%

Немецкий

50%

Хинди

50%

Турецкий

48%

Вьетнамский

39%

Японский

15%

См. также

Справочник

sp_estimate_data_compression_savings (Transact-SQL)

sys.dm_db_persisted_sku_features (Transact-SQL)

Основные понятия

Сжатие данных

Реализация сжатия страниц