Сжатие данныхData Compression

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server 2017SQL Server 2017 и База данных SQL AzureAzure SQL Database поддерживают сжатие строк и страниц для таблиц и индексов rowstore, а также поддерживают columnstore и архивное сжатие columnstore для таблиц и индексов columnstore.and База данных SQL AzureAzure SQL Database support row and page compression for rowstore tables and indexes, and supports columnstore and columnstore archival compression for columnstore tables and indexes.

Для таблиц и индексов rowstore используйте функцию сжатия данных, чтобы уменьшить размер базы данных.For rowstore tables and indexes, use the data compression feature to help reduce the size of the database. Помимо экономии места, сжатие данных позволяет повысить производительность при рабочих нагрузках с интенсивным вводом-выводом, поскольку данные хранятся в меньшем количестве страниц и в запросах требуется считывать меньше страниц с диска.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. Однако для сжатия и распаковки данных при обмене данными с приложениями требуются дополнительные ресурсы ЦП на сервере баз данных.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.

Для таблиц и индексов columnstore все таблицы и индексы columnstore всегда используют сжатие columnstore, и этот режим не настраивается пользователем.For columnstore tables and indexes, all columnstore tables and indexes always use columnstore compression and this is not user configurable. Используйте архивное сжатие columnstore, чтобы еще больше сократить размер данных в случаях, когда можно предоставить дополнительное время и ресурсы ЦП для хранения и извлечения данных.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. Можно настроить архивное сжатие columnstore для следующих объектов базы данных:You can configure columnstore archival compression on the following database objects:

  • Вся таблица columnstore или весь кластеризованный индекс columnstore.A whole columnstore table or a whole clustered columnstore index. Таблица columnstore хранится в виде кластеризованного индекса columnstore, поэтому оба подхода приносят одинаковые результаты.Since a columnstore table is stored as a clustered columnstore index, both approaches have the same results.
  • Весь некластеризованный индекс columnstore.A whole nonclustered columnstore index.
  • Для секционированных таблиц columnstore и индексов columnstore можно задать параметр архивного сжатия для каждой секции, и разным секциям не обязательно назначать одинаковый параметр архивного сжатия.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:

  • Подробности сжатия данных могут меняться без предварительного уведомления в пакетах обновлений или в последующих версиях.The details of data compression are subject to change without notice in service packs or subsequent releases.
  • Сжатие доступно в База данных SQL AzureAzure SQL DatabaseCompression is available in База данных SQL AzureAzure 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.
  • Для таблицы нельзя включить сжатие, если сумма максимального размера строки и служебных данных сжатия превышает максимальный размер строки в 8060 байт.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. При использовании сжатия обеспечивается выполнение следующих двух правил.Compression enforces the following two rules:
    • Обновление для типа с фиксированной длиной должно всегда завершаться успешно.An update to a fixed-length type must always succeed.
    • Отключение сжатия данных должно всегда выполняться успешно.Disabling data compression must always succeed. Даже если сжатая строка умещается на странице (что означает, что она имеет размер меньше 8060 байт), 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.
    • Перестройка таблицы с помощью инструкции ALTER TABLE ... REBUILD с параметром сжатия PAGE.A table is rebuilt by executing the ALTER TABLE ... REBUILD statement with the PAGE compression option.
  • Для новых страниц, размещенных в куче в процессе выполнения операций DML, сжатие страниц не будет использоваться до тех пор, пока куча не будет перестроена.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. Для секционированных данных объем пространства, необходимый для включения или отключения сжатия, можно сократить, выполняя включение или отключение сжатия последовательно для каждой секции.For partitioned data, you can reduce the space that is required by enabling or disabling compression for one partition at a time.
  • Чтобы определить состояние сжатия секций в секционированной таблице, выполните запрос столбца data_compression из представления каталога sys.partitions.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, причин для сохранения данного формата нет.However, because row compression is a superset of the vardecimal storage format, there is no reason to retain the vardecimal storage format. Для десятичных значений не происходит никакого дополнительного сжатия при сочетании формата хранения vardecimal и сжатия строк.Decimal values gain no additional compression when you combine the vardecimal storage format with row compression. Сжатие страниц можно применить к таблице, в которой присутствует формат хранения 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, однако сжатие на уровне строк достигает тех же целей, поэтому данный формат является устаревшим.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.

Использование Columnstore и архивного сжатия ColumnstoreUsing Columnstore and Columnstore Archive Compression

Область применения: SQL ServerSQL Server (начиная с SQL Server 2014 (12.x)SQL Server 2014 (12.x) до текущей версии), База данных SQL AzureAzure SQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version), База данных SQL AzureAzure SQL Database.

ОсновыBasics

Таблицы и индексы Columnstore всегда сохраняются со сжатием columnstore.Columnstore tables and indexes are always stored with columnstore compression. Можно еще более уменьшить размер данных columnstore, настроив дополнительное сжатие, именуемое архивным сжатием.You can further reduce the size of columnstore data by configuring an additional compression called archival compression. Чтобы выполнить архивное сжатие, SQL ServerSQL Server применяет к данным алгоритм сжатия 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 для сжатия данных columnstore с помощью архивного сжатия.Use COLUMNSTORE_ARCHIVE data compression to compress columnstore data with archival compression.
  • Используйте сжатие данных COLUMNSTORE для распаковки архивного сжатия.Use COLUMNSTORE data compression to decompress archival compression. Эти результирующие данные по-прежнему будут сжаты с использованием сжатия columnstore.The resulting data continue to be compressed with columnstore compression.

Чтобы добавить архивное сжатие, используйте инструкцию ALTER TABLE (Transact-SQL) или ALTER INDEX (Transact-SQL) с параметром REBUILD и DATA COMPRESSION = COLUMNSTORE_ARCHIVE.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)) ;  

Чтобы удалить архивное сжатие и восстановление данных для сжатия columnstилиe, используйте ALTER TABLE (Transact-SQL) или ALTER INDEX (Transact-SQL) с параметром REBUILD и DATA COMPRESSION = COLUMNSTORE.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) ) ;  

В следующем примере устанавливается сжатие данных columnstore в некоторых секциях и архивное сжатие columnstore в других секциях.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

Сжатие индексов columnstore с использованием архивного сжатия приводит к увеличению времени обработки индекса по сравнению с индексами columnstore, к которым архивное сжатие не применяется.Compressing columnstore indexes with archival compression, causes the index to perform slower than columnstore indexes that do not have the archival compression. Используйте архивное сжатие только при наличии дополнительного времени и ресурсов ЦП для сжатия и получения данных.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:

  • sys.indexes (Transact-SQL) — столбцы type и type_desc включают параметры CLUSTERED COLUMNSTORE и NONCLUSTERED COLUMNSTORE.sys.indexes (Transact-SQL) - The type and type_desc columns include CLUSTERED COLUMNSTORE and NONCLUSTERED COLUMNSTORE.
  • sys.partitions (Transact-SQL) — столбцы data_compression и data_compression_desc включают параметры COLUMNSTORE и COLUMNSTORE_ARCHIVE.sys.partitions (Transact-SQL) - The data_compression and data_compression_desc columns include COLUMNSTORE and COLUMNSTORE_ARCHIVE.

Процедура sp_estimate_data_compression_savings (Transact-SQL) не применяется к индексам columnstore.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.
  • При слиянии двух секций результирующая секция унаследует атрибут сжатия данных секции назначения.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.
  • Существуют две вариации синтаксиса, которые можно использовать для изменения сжатия секционированной таблицы или индекса.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. Изменить таблицу с помощью параметра REBUILD ... инструкции ALTER TABLE ..., в котором указывается режим сжатия.Modify the table by using the ALTER TABLE ... REBUILD ... option that specifies the compression option.

      Удаление кластеризованного индекса в режиме вне сети происходит очень быстро, поскольку удаляются только верхние уровни кластеризованных индексов.To drop a clustered index OFFLINE is a very fast operation, because only the upper levels of clustered indexes are removed. При удалении кластеризованного индекса в режиме в сети SQL ServerSQL Server должен перестроить кучу два раза — один для первого шага, один для второго.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 ServerSQL 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 ServerHow Compression Affects Other SQL Server Components

Область применения: SQL ServerSQL ServerSQL 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. По сравнению с импортом данных в распакованную таблицу такой импорт может потребовать больше ресурсов ЦП.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 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)