Реализация сжатия Юникода
Область применения: 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 % |