Unicode 壓縮實作

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 SQL 資料庫

SQL Server 會使用 Standard Compression Scheme for Unicode (SCSU) 演算法的實作來壓縮儲存在資料列或頁面壓縮物件中的 Unicode 值。 對於這些壓縮的物件而言,系統會自動針對 nchar(n)nvarchar(n) 資料行進行 Unicode 壓縮。 不論地區設定為何,資料庫引擎都會將 Unicode 資料儲存成 2 個位元組。 這稱為 UCS-2 編碼。 對於某些地區設定而言,SQL Server 中的 SCSU 壓縮實作最多可以節省 50% 的儲存空間。

支援的資料類型

Unicode 壓縮支援固定長度的 nchar(n)nvarchar(n) 資料類型。 儲存在資料列外或儲存在 nvarchar(max) 資料行中的資料值不會被壓縮。

注意

即使 nvarchar(max) 資料儲存在資料列內,也不支援 Unicode 壓縮。 但是,此資料類型仍可以從頁面壓縮中受益。

從舊版 SQL Server 升級

當 SQL Server 資料庫升級為 SQL Server 時,系統不會對任何資料庫物件 (已壓縮或未壓縮) 進行與 Unicode 壓縮相關的變更。 升級資料庫之後,受影響的物件如下所示:

  • 如果某個物件未壓縮,就不會進行任何變更,而且此物件將繼續如同先前的方式運作。

  • 資料列壓縮或頁面壓縮的物件會繼續如先前一樣運作。 未壓縮的資料會維持未壓縮的形式,直到更新其值為止。

  • 插入到已套用資料列壓縮或頁面壓縮之資料表中的新資料列,會使用 Unicode 壓縮加以壓縮。

    注意

    若要充分運用 Unicode 壓縮的優點,可使用頁面或資料列壓縮來重建物件。

Unicode 壓縮如何影響資料儲存

建立或重建索引時,或在已套用資料列或頁面壓縮的資料表中變更值時,只有當受影響的索引或值在壓縮後的大小小於其目前大小時,才會以壓縮格式儲存。 這樣做可避免資料表中的資料列或索引由於 Unicode 壓縮而增加大小。

壓縮所節省的儲存空間主要取決於所壓縮之資料的特性以及資料的地區設定。 下表將列出許多地區設定可達成的空間節省效果。

地區設定 壓縮百分比
英文 50%
德文 50%
印地語 50%
土耳其文 48%
越南文 39%
日文 15%