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


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

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

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

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

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

Примечание.

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

Обновление с более ранних версий SQL Server

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

  • Если объект не сжимается, изменения не вносятся, и объект продолжает функционировать, как это было ранее.

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

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

    Примечание.

    Чтобы воспользоваться преимуществами сжатия Юникода, перестройте объект с помощью сжатия страниц или строк.

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

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

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

Локаль Процент сжатия
Английский 50%
Немецкий 50%
Хинди 50%
Турецкий 48%
Вьетнамский 39 %
Японский 15 %

Следующие шаги