Data CompressionData Compression

適用対象: ○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 Server 2017SQL Server 2017 および Azure SQL データベースAzure SQL Databaseでは、行ストア インデックスおよびテーブルのための行およびページの圧縮がサポートされます。また、列ストアと、列ストアおよびインデックスのための列ストアの保存用圧縮もサポートされます。and Azure SQL データベースAzure SQL Database support row and page compression for rowstore tables and indexes, and supports columnstore and columnstore archival compression for columnstore tables and indexes.

行ストア テーブルおよびインデックスについては、データベースのサイズを小さくするためにデータ圧縮機能を使用してください。For rowstore tables and indexes, use the data compression feature to help reduce the size of the database. 領域を削減するだけでなく、データ圧縮を使用すると、データを格納するページ数が少なくなり、クエリがディスクから読み取る必要のあるページが少なくなるため、大量の I/O が発生する作業のパフォーマンスを向上できます。In addition to saving space, data compression can help improve performance of I/O intensive workloads because the data is stored in fewer pages and queries need to read fewer pages from disk. ただし、アプリケーションとの間でデータが交換される間は、データの圧縮と圧縮解除のためデータベース サーバーで追加の CPU リソースが必要になります。However, extra CPU resources are required on the database server to compress and decompress the data, while data is exchanged with the application. 次のデータベース オブジェクトで行とページの圧縮を構成することができます。You can configure row and page compression on the following database objects:

  • ヒープとして格納されているテーブル全体。A whole table that is stored as a heap.
  • クラスター化インデックスとして格納されているテーブル全体。A whole table that is stored as a clustered index.
  • 非クラスター化インデックス全体。A whole nonclustered index.
  • インデックス付きビュー全体。A whole indexed view.
  • パーティション分割されているテーブルおよびインデックスの場合、パーティションごとに圧縮オプションを構成することができ、オブジェクトの各パーティションを同じ圧縮設定にする必要がありません。For partitioned tables and indexes, you can configure the compression option for each partition, and the various partitions of an object do not have to have the same compression setting.

列ストア テーブルおよびインデックスの場合、すべての列ストア テーブルおよびインデックスで列ストア圧縮が使用されます。これはユーザーが構成できません。For columnstore tables and indexes, all columnstore tables and indexes always use columnstore compression and this is not user configurable. データを格納および取得できる CPU リソースと時間に余裕がある場合にデータ サイズをさらに小さくするには、列ストアの保存用圧縮を使用します。Use columnstore archival compression to further reduce the data size for situations when you can afford extra time and CPU resources to store and retrieve the data. 次のデータベース オブジェクトで列ストアの保存用圧縮を構成することができます。You can configure columnstore archival compression on the following database objects:

  • 列ストア テーブル全体またはクラスター化列ストア インデックス全体。A whole columnstore table or a whole clustered columnstore index. 列ストア テーブルはクラスター化列ストア インデックスとして格納されるため、どちらの方法を使っても同じ結果になります。Since a columnstore table is stored as a clustered columnstore index, both approaches have the same results.
  • 非クラスター化列ストア インデックス全体。A whole nonclustered columnstore index.
  • パーティション分割されている列ストア テーブルおよび列ストア インデックスの場合、パーティションごとに保存用圧縮オプションを構成することができ、オブジェクトの各パーティションを同じ保存用圧縮設定にする必要がありません。For partitioned columnstore tables and columnstore indexes, you can configure the archival compression option for each partition, and the various partitions do not have to have the same archival compression setting.

注意

GZIP アルゴリズム形式を使用してデータを圧縮することもできます。Data can also be compressed using the GZIP algorithm format. これは追加の手順であり、古いデータを長期保管するためにアーカイブする際にデータの一部を圧縮する場合に最も適しています。This is an additional step and is most suitable for compressing portions of the data when archiving old data for long-term storage. COMPRESS 関数を使用して圧縮したデータにインデックスを付けることはできません。Data compressed using the COMPRESS function cannot be indexed. 詳細については、「COMPRESS (Transact-SQL)」を参照してください。For more information, see COMPRESS (Transact-SQL).

行とページの圧縮の使用に関する注意点Considerations for When You Use Row and Page Compression

行とページの圧縮を使用する際は、次の点に注意してください。When you use row and page compression, be aware the following considerations:

  • データの圧縮に関する詳細情報は、Service Pack または今後のリリースで予告なしに変更されることがあります。The details of data compression are subject to change without notice in service packs or subsequent releases.
  • 圧縮は、 Azure SQL データベースAzure SQL Databaseで使用できます。Compression is available in Azure SQL データベースAzure SQL Database
  • 圧縮は、 SQL ServerSQL Serverのすべてのエディッションで使用できるわけではありません。Compression is not available in every edition of SQL ServerSQL Server. 詳細については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。For more information, see Features Supported by the Editions of SQL Server 2016.
  • 圧縮は、システム テーブルには使用できません。Compression is not available for system tables.
  • 圧縮を使用すると、ページに格納できる行数が増えますが、テーブルまたはインデックスの最大行サイズは変更されません。Compression can allow more rows to be stored on a page, but does not change the maximum row size of a table or index.
  • 最大行サイズに圧縮のオーバーヘッドを加えると最大行サイズが 8,060 バイトを超える場合、テーブルで圧縮を有効にすることはできません。A table cannot be enabled for compression when the maximum row size plus the compression overhead exceeds the maximum row size of 8060 bytes. 例えば、列 c1char(8000) および c2char(53) を含むテーブルは、圧縮のオーバーヘッドが追加で発生するため、圧縮できません。For example, a table that has the columns c1char(8000) and c2char(53) cannot be compressed because of the additional compression overhead. vardecimal ストレージ形式を使用する場合は、この形式が有効になると行サイズのチェックが実行されます。When the vardecimal storage format is used, the row-size check is performed when the format is enabled. 行とページの圧縮の場合は、オブジェクトが最初に圧縮されるときに行サイズのチェックが実行され、各行が挿入または変更されるときにもチェックされます。For row and page compression, the row-size check is performed when the object is initially compressed, and then checked as each row is inserted or modified. 圧縮では、次の 2 つのルールが適用されます。Compression enforces the following two rules:
    • 固定長の型に対する更新が常に成功する必要があります。An update to a fixed-length type must always succeed.
    • データ圧縮の無効化が常に成功する必要があります。Disabling data compression must always succeed. 圧縮された行がページに収まる場合 (行のサイズが 8,060 バイト未満の場合) でも、圧縮されていないときの行に収まらない更新は SQL ServerSQL Server によって回避されます。Even if the compressed row fits on the page, which means that it is less than 8060 bytes; SQL ServerSQL Server prevents updates that would not fit on the row when it is uncompressed.
  • パーティションの一覧を指定する場合は、個々のパーティションの圧縮の種類を ROW、PAGE、または NONE に設定できます。When a list of partitions is specified, the compression type can be set to ROW, PAGE, or NONE on individual partitions. パーティションの一覧を指定しない場合は、すべてのパーティションがステートメントで指定されたデータ圧縮プロパティを使用して設定されます。If the list of partitions is not specified, all partitions are set with the data compression property that is specified in the statement. 特に指定しない限り、データ圧縮はテーブルまたはインデックスの作成時に NONE に設定されます。When a table or index is created, data compression is set to NONE unless otherwise specified. 特に指定しない限り、既存の圧縮はテーブルの変更時にも保持されます。When a table is modified, the existing compression is preserved unless otherwise specified.
  • 範囲外の一連のパーティションまたは単独のパーティションを指定すると、エラーが生成されます。If you specify a list of partitions or a partition that is out of range, an error is generated.
  • テーブルの圧縮プロパティは非クラスター化インデックスに継承されません。Nonclustered indexes do not inherit the compression property of the table. インデックスを圧縮するには、インデックスの圧縮プロパティを明示的に設定する必要があります。To compress indexes, you must explicitly set the compression property of the indexes. 既定では、インデックスの圧縮設定はインデックスの作成時に NONE に設定されます。By default, the compression setting for indexes is set to NONE when the index is created.
  • ヒープにクラスター化インデックスを作成する場合、圧縮状態を特に指定しない限り、ヒープの圧縮状態がクラスター化インデックスに継承されます。When a clustered index is created on a heap, the clustered index inherits the compression state of the heap unless an alternative compression state is specified.
  • ヒープがページ レベルの圧縮用に構成されている場合、ページでは、次の方法によるページ レベルの圧縮のみが受け入れられます。When a heap is configured for page-level compression, pages receive page-level compression only in the following ways:
    • データは一括最適化を有効にして一括インポートされます。Data is bulk imported with bulk optimizations enabled.
    • INSERT INTO ...WITH (TABLOCK) 構文とテーブルに非クラスター化インデックスはありません。Data is inserted using INSERT INTO ... WITH (TABLOCK) syntax and the table does not have a nonclustered index.
    • PAGE 圧縮オプションを指定して ALTER TABLE ...REBUILD ステートメントを実行し、テーブルを再構築する方法A table is rebuilt by executing the ALTER TABLE ... REBUILD statement with the PAGE compression option.
  • DML 操作の一部としてヒープに割り当てられた新しいページでは、ヒープが再構築されるまで PAGE 圧縮は使用されません。New pages allocated in a heap as part of DML operations do not use PAGE compression until the heap is rebuilt. 圧縮を解除してから再適用するか、クラスター化インデックスを作成してから削除することで、ヒープを再構築します。Rebuild the heap by removing and reapplying compression, or by creating and removing a clustered index.
  • ヒープの圧縮設定を変更するには、テーブルのすべての非クラスター化インデックスを再構築して、ヒープ内の新しい行位置へのポインターを持つようにする必要があります。Changing the compression setting of a heap requires all nonclustered indexes on the table to be rebuilt so that they have pointers to the new row locations in the heap.
  • ROW または PAGE 圧縮はオンラインまたはオフラインで有効または無効にすることができます。You can enable or disable ROW or PAGE compression online or offline. オンライン操作の場合、ヒープに対する圧縮の有効化はシングル スレッドです。Enabling compression on a heap is single threaded for an online operation.
  • 行またはページの圧縮を有効または無効にするために必要なディスク空き容量は、インデックスを作成または再構築するために必要なディスク空き容量と同じです。The disk space requirements for enabling or disabling row or page compression are the same as for creating or rebuilding an index. パーティション データの場合は、一度に 1 つのパーティションの圧縮を有効または無効にすることによって必要な空き容量を削減できます。For partitioned data, you can reduce the space that is required by enabling or disabling compression for one partition at a time.
  • パーティション テーブルのパーティションの圧縮状態を調べるには、sys.partitions カタログ ビューの data_compression 列に対してクエリを実行します。To determine the compression state of partitions in a partitioned table, query the data_compression column of the sys.partitions catalog view.
  • インデックスを圧縮する場合、行とページの両方の圧縮を使用してリーフ レベルのページを圧縮できます。When you are compressing indexes, leaf-level pages can be compressed with both row and page compression. リーフ レベル以外のページでは、ページの圧縮は受け入れられません。Non-leaf-level pages do not receive page compression.
  • 大きな値のデータ型は、そのサイズが原因で、通常の行データとは別に特殊な目的のページに格納される場合があります。Because of their size, large-value data types are sometimes stored separately from the normal row data on special purpose pages. データ圧縮は、別個に格納されているデータには使用できません。Data compression is not available for the data that is stored separately.
  • SQL Server 2005SQL Server 2005 で vardecimal ストレージ形式を実装したテーブルは、アップグレード時にもその設定を保持します。Tables that implemented the vardecimal storage format in SQL Server 2005SQL Server 2005, retain that setting when upgraded. vardecimal ストレージ形式を使用するテーブルに行の圧縮を適用することができます。You can apply row compression to a table that has the vardecimal storage format. ただし、行の圧縮は vardecimal ストレージ形式のスーパーセットなので、vardecimal ストレージ形式を保持する理由はありません。However, because row compression is a superset of the vardecimal storage format, there is no reason to retain the vardecimal storage format. vardecimal ストレージ形式と行の圧縮を組み合わせても、10 進値の圧縮は追加されません。Decimal values gain no additional compression when you combine the vardecimal storage format with row compression. vardecimal ストレージ形式を使用するテーブルにページの圧縮を適用することができます。ただし、vardecimal ストレージ形式の列の圧縮が追加される可能性は低くなります。You can apply page compression to a table that has the vardecimal storage format; however, the vardecimal storage format columns probably will not achieve additional compression.

    注意

    SQL Server 2017SQL Server 2017 は vardecimal ストレージ形式をサポートしていますが、行レベルの圧縮で同じ目的が果たされるので、vardecimal ストレージ形式は非推奨とされます。supports the vardecimal storage format; however, because row-level compression achieves the same goals, the vardecimal storage format is deprecated. この機能はメンテナンス モードであり、Microsoft SQL Server の将来のバージョンで削除される可能性があります。This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

列ストアおよび列ストアの保存用圧縮の使用Using Columnstore and Columnstore Archive Compression

適用対象: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) から 現在のバージョンまで)、 Azure SQL データベースAzure SQL DatabaseApplies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version), Azure SQL データベースAzure SQL Database.

の基本操作Basics

列ストア テーブルおよび列ストア インデックスは常に列ストア圧縮を使用して格納されます。Columnstore tables and indexes are always stored with columnstore compression. 保存用圧縮と呼ばれる追加の圧縮機能を構成するによって、列ストアのデータ サイズをさらに小さくすることができます。You can further reduce the size of columnstore data by configuring an additional compression called archival compression. 保存用圧縮を使用するには、 SQL ServerSQL Server でデータに対して Microsoft Xpress 圧縮アルゴリズムを実行します。To perform archival compression, SQL ServerSQL Server runs the Microsoft XPRESS compression algorithm on the data. 次の種類のデータ圧縮を使用して、保存用圧縮を追加または削除します。Add or remove archival compression by using the following data compression types:

  • 保存用圧縮で列ストア データを圧縮するには、 COLUMNSTORE_ARCHIVE データ圧縮を使用します。Use COLUMNSTORE_ARCHIVE data compression to compress columnstore data with archival compression.
  • 保存用圧縮を解凍するには、 COLUMNSTORE データ圧縮を使用します。Use COLUMNSTORE data compression to decompress archival compression. この結果として生成されるデータは、引き続き列データの圧縮を使用して圧縮できます。The resulting data continue to be compressed with columnstore compression.

保存用圧縮を追加するには、REBUILD オプションと DATA COMPRESSION = COLUMNSTORE_ARCHIVE を指定して ALTER TABLE (Transact-SQL) または ALTER INDEX (Transact-SQL) を使用します。To add archival compression, use ALTER TABLE (Transact-SQL) or ALTER INDEX (Transact-SQL) with the REBUILD option and DATA COMPRESSION = COLUMNSTORE_ARCHIVE.

例 :Examples:

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE ON PARTITIONS (2,4)) ;  

保存用圧縮を削除して、データを列ストア圧縮に復元するには、REBUILD オプションと DATA COMPRESSION = COLUMNSTORE を指定して ALTER TABLE (Transact-SQL) または ALTER INDEX (Transact-SQL) を使用します。To remove archival compression and restore the data to columnstore compression, use ALTER TABLE (Transact-SQL) or ALTER INDEX (Transact-SQL) with the REBUILD option and DATA COMPRESSION = COLUMNSTORE.

例 :Examples:

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  COLUMNSTORE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE ON PARTITIONS (2,4) ) ;  

次の例では、データ圧縮をあるパーティションの列ストアに設定し、列ストアの圧縮を別のパーティションに設定しています。This next example sets the data compression to columnstore on some partitions, and to columnstore archival on other partitions.

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (  
    DATA_COMPRESSION =  COLUMNSTORE ON PARTITIONS (4,5),  
    DATA COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (1,2,3)  
) ;  

パフォーマンスPerformance

保存用圧縮を使用して列ストア インデックスを圧縮すると、列ストア インデックスに保存用圧縮がない場合に比べて実行速度が遅くなります。Compressing columnstore indexes with archival compression, causes the index to perform slower than columnstore indexes that do not have the archival compression. 保存用圧縮は、データを圧縮および取得する時間と CPU リソースに余裕がある場合にのみ使用します。Use archival compression only when you can afford to use extra time and CPU resources to compress and retrieve the data.

記憶域を削減するデータ圧縮の利点は、頻繁にアクセスしないデータに便利です。The benefit of archival compression, is reduced storage, which is useful for data that is not accessed frequently. たとえば、各月のデータ用のパーティションがある場合、ほとんどアクティビティは最新の月のデータに対して実行されるため、古い月のデータをアーカイブして必要なストレージを削減できます。For example, if you have a partition for each month of data, and most of your activity is for the most recent months, you could archive older months to reduce the storage requirements.

メタデータMetadata

次のシステム ビューには、クラスター化インデックスのデータ圧縮に関する情報が含まれています。The following system views contain information about data compression for clustered indexes:

プロシージャ sp_estimate_data_compression_savings (Transact-SQL) は、列ストア インデックスに適用されません。The procedure sp_estimate_data_compression_savings (Transact-SQL) does not apply to columnstore indexes.

パーティション テーブルとパーティション インデックスへの圧縮の影響How Compression Affects Partitioned Tables and Indexes

パーティション テーブルとパーティション インデックスでデータ圧縮を使用する場合は、次の点に注意してください。When you use data compression with partitioned tables and indexes, be aware of the following considerations:

  • ALTER PARTITION ステートメントを使用してパーティションを分割すると、両方のパーティションに元のパーティションのデータ圧縮属性が継承されます。When partitions are split by using the ALTER PARTITION statement, both partitions inherit the data compression attribute of the original partition.
  • 2 つのパーティションをマージすると、結果として得られるパーティションにマージ先パーティションのデータ圧縮属性が継承されます。When two partitions are merged, the resultant partition inherits the data compression attribute of the destination partition.
  • パーティションを切り替えるには、パーティションのデータ圧縮プロパティがテーブルの圧縮プロパティと一致する必要があります。To switch a partition, the data compression property of the partition must match the compression property of the table.
  • パーティション テーブルまたはパーティション インデックスの圧縮の変更に使用できる構文には、次の 2 種類があります。There are two syntax variations that you can use to modify the compression of a partitioned table or index:

    • 次の構文では、参照されているパーティションのみが再構築されます。The following syntax rebuilds only the referenced partition:
      ALTER TABLE <table_name> REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = <option>)
    • 次の構文では、参照されていないパーティションの既存の圧縮設定を使用して、テーブル全体が再構築されます。The following syntax rebuilds the whole table by using the existing compression setting for any partitions that are not referenced:

      ALTER TABLE <table_name>   
      REBUILD PARTITION = ALL   
      WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),  
      ... )  
      

      パーティション インデックスの場合は、ALTER INDEX を使用して同じ原則に従います。Partitioned indexes follow the same principle using ALTER INDEX.

  • クラスター化インデックスを削除する場合、パーティション構成を変更しない限り、対応するヒープ パーティションでデータ圧縮設定が維持されます。When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. パーティション構成を変更すると、すべてのパーティションが圧縮されていない状態に再構築されます。If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state. クラスター化インデックスを削除し、パーティション構成を変更するには、次の手順を実行します。To drop a clustered index and change the partitioning scheme requires the following steps:

    1. クラスター化インデックスを削除します。Drop the clustered index.
    2. 圧縮オプションを指定する ALTER TABLE ...REBUILD ... オプションを使用して、テーブルを変更します。Modify the table by using the ALTER TABLE ... REBUILD ... option that specifies the compression option.

      OFFLINE でクラスター化インデックスを削除すると、クラスター化インデックスの上位レベルだけが削除されます。そのため、操作はとても高速です。To drop a clustered index OFFLINE is a very fast operation, because only the upper levels of clustered indexes are removed. ONLINE でクラスター化インデックスを削除すると、 SQL ServerSQL Server によって、ヒープが手順 1. で 1 回、手順 2. で 1 回の計 2 回再構築されます。When a clustered index is dropped ONLINE, SQL ServerSQL Server must rebuild the heap two times, once for step 1 and once for step 2.

レプリケーションへの圧縮の影響How Compression Affects Replication

適用対象: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) から 現在のバージョンまで)。Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).
レプリケーションでデータ圧縮を使用する場合は、次の点に注意してください。When you are using data compression with replication, be aware of the following considerations:

  • スナップショット エージェントで最初のスキーマ スクリプトが生成されるときに、新しいスキーマでは、テーブルとインデックスの両方に同じ圧縮設定が使用されます。When the Snapshot Agent generates the initial schema script, the new schema uses the same compression settings for both the table and its indexes. 圧縮をテーブルのみで有効にし、インデックスで無効にすることはできません。Compression cannot be enabled on just the table and not the index.
  • トランザクション レプリケーションの場合、アーティクル スキーマ オプションによって、スクリプトを作成する必要がある依存オブジェクトおよびプロパティが特定されます。For transactional replication the article schema option determines what dependent objects and properties have to be scripted. 詳細については、「 sp_addarticle」を参照してください。For more information, see sp_addarticle.
    ディストリビューション エージェントでは、スクリプトの適用時に下位のサブスクライバーのチェックが行われません。The Distribution Agent does not check for down-level Subscribers when it applies scripts. 圧縮のレプリケーションが選択されている場合、下位のサブスクライバーに対するテーブルの作成は失敗します。If the replication of compression is selected, creating the table on down-level Subscribers fails. 混合トポロジの場合は、圧縮のレプリケーションを有効にしないでください。In the case of a mixed topology, do not enable the replication of compression.
  • マージ レプリケーションの場合、パブリケーションの互換性レベルがスキーマ オプションをオーバーライドし、この互換性レベルによってスクリプトが作成されるスキーマ オブジェクトが特定されます。For merge replication, publication compatibility level overrides the schema options and determines the schema objects that are scripted.
    混合トポロジの場合、新しい圧縮オプションをサポートする必要がないときは、パブリケーションの互換性レベルを下位のサブスクライバー バージョンに設定してください。In the case of a mixed topology, if it is not required to support the new compression options, the publication compatibility level should be set to the down-level Subscriber version. サポートする必要があるときは、テーブルをサブスクライバーに作成してから圧縮してください。If it is required, compress tables on the Subscriber after they have been created.

次の表に、レプリケーション時に圧縮を制御するレプリケーション設定を示します。The following table shows replication settings that control compression during replication.

ユーザーの目的User intent テーブルまたはインデックスのパーティション構成のレプリケートReplicate partition scheme for a table or index 圧縮設定のレプリケートReplicate compression settings スクリプト作成の動作Scripting behavior
パーティション構成をレプリケートしてパーティションのサブスクライバーで圧縮を有効にする。To replicate the partition scheme and enable compression on the Subscriber on the partition. TrueTrue TrueTrue パーティション構成と圧縮設定の両方のスクリプトを作成します。Scripts both the partition scheme and the compression settings.
パーティション構成をレプリケートするがサブスクライバーでデータ圧縮は実行しない。To replicate the partition scheme but not compress the data on the Subscriber. TrueTrue FalseFalse パーティション構成のスクリプトは作成しますが、パーティションの圧縮設定のスクリプトは作成しません。Scripts out the partition scheme but not the compression settings for the partition.
パーティション構成をレプリケートせず、サブスクライバーでデータ圧縮も実行しない。To not replicate the partition scheme and not compress the data on the Subscriber. FalseFalse FalseFalse パーティションと圧縮設定のスクリプトを作成しません。Does not script partition or compression settings.
パブリッシャーですべてのパーティションが圧縮される場合はサブスクライバーでテーブルを圧縮するが、パーティション構成はレプリケートしない。To compress the table on the Subscriber if all the partitions are compressed on the Publisher, but not replicate the partition scheme. FalseFalse TrueTrue すべてのパーティションで圧縮が有効になっているかどうかを確認します。Checks if all the partitions are enabled for compression.

テーブル レベルで圧縮のスクリプトを作成します。Scripts out compression at the table level.

他の SQL Server コンポーネントへの圧縮の影響How Compression Affects Other SQL Server Components

適用対象: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) から 現在のバージョンまで)。Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).

圧縮はストレージ エンジンで行われるので、他のほとんどの SQL ServerSQL Server コンポーネントには、データは圧縮されていない状態で提供されます。Compression occurs in the storage engine and the data is presented to most of the other components of SQL ServerSQL Server in an uncompressed state. このため、他のコンポーネントに対する圧縮の影響は、次のように制限されます。This limits the effects of compression on the other components to the following:

  • 一括インポート操作と一括エクスポート操作Bulk import and export operations
    データをエクスポートする場合、データはネイティブ形式であっても圧縮されていない行形式で出力されます。When data is exported, even in native format, the data is output in the uncompressed row format. この結果、エクスポートされたデータ ファイルのサイズがソース データより大幅に大きくなる可能性があります。This can cause the size of exported data file to be significantly larger than the source data.
    データをインポートする場合、インポート先のテーブルで圧縮が有効になっているときは、データはストレージ エンジンによって圧縮された行形式に変換されます。When data is imported, if the target table has been enabled for compression, the data is converted by the storage engine into compressed row format. この結果、圧縮されていないテーブルにデータをインポートする場合と比較して、CPU 使用率が上昇する可能性があります。This can cause increased CPU usage compared to when data is imported into an uncompressed table.
    ページの圧縮を使用するヒープにデータを一括インポートする場合、一括インポート操作では、データの挿入時にページの圧縮を使用したデータ圧縮が試行されます。When data is bulk imported into a heap with page compression, the bulk import operation tries to compress the data with page compression when the data is inserted.
  • 圧縮はバックアップと復元には影響しません。Compression does not affect backup and restore.
  • 圧縮はログ配布には影響しません。Compression does not affect log shipping.
  • データ圧縮は、スパース列と互換性がありません。Data compression is incompatible with sparse columns. したがって、スパース列を含むテーブルを圧縮したり、スパース列を圧縮されたテーブルに追加したりすることはできません。Therefore, tables containing sparse columns cannot be compressed nor can sparse columns be added to a compressed table.
  • 圧縮を有効にすると、クエリ プランが変更される可能性があります。データの格納に使用されるページ数とページあたりの行数が異なるためです。Enabling compression can cause query plans to change because the data is stored using a different number of pages and number of rows per page.

参照See Also

行の圧縮の実装 Row Compression Implementation
ページの圧縮の実装 Page Compression Implementation
Unicode 圧縮の実装 Unicode Compression Implementation
CREATE PARTITION SCHEME (Transact-SQL) CREATE PARTITION SCHEME (Transact-SQL)
CREATE PARTITION FUNCTION (Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL)