Unicode 圧縮の実装Unicode Compression Implementation

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server では、Standard Compression Scheme for Unicode (SCSU) アルゴリズムの実装を使用して、行またはページの圧縮オブジェクトに格納する Unicode 値を圧縮します。uses an implementation of the Standard Compression Scheme for Unicode (SCSU) algorithm to compress Unicode values that are stored in row or page compressed objects. これらの圧縮オブジェクトでは、 nchar(n) 列および nvarchar(n) 列の Unicode 圧縮が自動的に行われます。For these compressed objects, Unicode compression is automatic for nchar(n) and nvarchar(n) columns. データベース エンジンDatabase Engine では、ロケールに関係なく、Unicode データが 2 バイトで格納されます。The データベース エンジンDatabase Engine stores Unicode data as 2 bytes, regardless of locale. これは UCS-2 エンコードと呼ばれています。This is known as UCS-2 encoding. ロケールによっては、SQL Server の SCSU 圧縮実装で保存できる最大領域がストレージ領域の 50% になる場合があります。For some locales, the implementation of SCSU compression in SQL Server can save up to 50 percent in storage space.

サポートされるデータ型Supported Data Types

Unicode 圧縮では、固定長の nchar(n) データ型および nvarchar(n) データ型がサポートされます。Unicode compression supports the fixed-length nchar(n) and nvarchar(n) data types. 行外または nvarchar(max) 列に格納されるデータ値は圧縮されません。Data values that are stored off row or in nvarchar(max) columns are not compressed.

注意

行内に格納される場合であっても、 nvarchar(max) データでは Unicode 圧縮がサポートされません。Unicode compression is not supported for nvarchar(max) data even if it is stored in row. ただし、このデータ型ではページ圧縮の利点を得ることができます。However, this data type can still benefit from page compression.

以前のバージョンの SQL Server からのアップグレードUpgrading from Earlier Versions of SQL Server

SQL ServerSQL Server データベースを SQL Server 2017SQL Server 2017 にアップグレードした場合、圧縮されているか圧縮されていないかにかかわらず、データベース オブジェクトに対して Unicode 圧縮に関連する変更は加えられません。When a SQL ServerSQL Server database is upgraded to SQL Server 2017SQL Server 2017, Unicode compression-related changes are not made to any database object, compressed or uncompressed. データベースのアップグレード後、オブジェクトには次のような影響があります。After the database is upgraded, objects are affected as follows:

  • オブジェクトが圧縮されていない場合、何も変更は加えられず、オブジェクトは以前と同様に機能します。If the object is not compressed, no changes are made and the object continues to function as it did previously.

  • 行またはページ圧縮されたオブジェクトは、以前と同様に機能します。Row- or page-compressed objects continue to function as they did previously. 圧縮されていないデータは、値が更新されない限り、圧縮されていない形式のままになります。Uncompressed data remains in uncompressed form until its value is updated.

  • 行またはページ圧縮されたテーブルに新しい行を挿入すると、Unicode 圧縮を使用して圧縮されます。New rows that are inserted into a row- or page-compressed table are compressed using Unicode compression.

    注意

    Unicode 圧縮を十分に活用するには、ページまたは行の圧縮を使用してオブジェクトを再構築する必要があります。To take full advantage of the benefits of Unicode compression, the object must be rebuilt with page or row compression.

Unicode 圧縮によるデータ ストレージへの影響How Unicode Compression Affects Data Storage

行またはページの圧縮で圧縮されているテーブル内で、インデックスが作成または再構築されたときや値が変更されたとき、その影響を受けたインデックスまたは値は、圧縮後のサイズが現在のサイズより小さくなる場合に限り、圧縮して格納されます。When an index is created or rebuilt or when a value is changed in a table that was compressed with row or page compression, the affected index or value is stored compressed only if its compressed size is less than its current size. これにより、Unicode 圧縮によってテーブルの行またはインデックスのサイズが大きくなる状況が回避されます。This prevents rows in a table or index from increasing in size because of Unicode compression.

圧縮により節約されるストレージ領域は、圧縮されるデータの特性とデータのロケールによって異なります。The storage space that compression saves depends on the characteristics of the data that is being compressed and the locale of the data. 次の表に、いくつかのロケールで節約できる領域の一覧を示します。The following table lists the space savings that can be achieved for several locales.

ロケールLocale 圧縮率Compression percent
英語English 50%50%
ドイツ語German 50%50%
ヒンディー語Hindi 50%50%
トルコ語Turkish 48%48%
ベトナム語Vietnamese 39%39%
日本語Japanese 15%15%

参照See Also

データの圧縮 Data Compression
sp_estimate_data_compression_savings (Transact-SQL) sp_estimate_data_compression_savings (Transact-SQL)
ページの圧縮の実装 Page Compression Implementation
sys.dm_db_persisted_sku_features (Transact-SQL)sys.dm_db_persisted_sku_features (Transact-SQL)