sp_estimate_data_compression_savings(Transact-SQL)sp_estimate_data_compression_savings (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

요청된 개체의 현재 크기를 반환하고 요청된 압축 상태에 대한 개체 크기를 예상합니다.Returns the current size of the requested object and estimates the object size for the requested compression state. 전체 테이블 또는 테이블 일부에 대해 압축을 계산할 수 있습니다.Compression can be evaluated for whole tables or parts of tables. 여기에는 힙, 클러스터형 인덱스, 비클러스터형 인덱스, 인덱싱된 뷰 및 테이블/인덱스 파티션이 포함됩니다.This includes heaps, clustered indexes, nonclustered indexes, indexed views, and table and index partitions. 개체는 행 압축 또는 페이지 압축을 사용하여 압축할 수 있습니다.The objects can be compressed by using row compression or page compression. 테이블, 인덱스 또는 파티션이 이미 압축된 경우 이 절차에 따라 테이블, 인덱스 또는 파티션이 다시 압축되는 경우의 크기를 예상할 수 있습니다.If the table, index, or partition is already compressed, you can use this procedure to estimate the size of the table, index, or partition if it is recompressed.

참고

압축 및 sp_estimate_data_compression_savings 의 일부 버전 에서만에서 사용할 수 없는 MicrosoftMicrosoft SQL ServerSQL Server합니다.Compression and sp_estimate_data_compression_savings are not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. SQL ServerSQL Server버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

이 저장 프로시저는 요청된 압축 설정을 사용할 경우의 개체 크기를 예상하기 위해 원본 개체를 샘플링하고 이 데이터를 tempdb에 생성된 해당 테이블 및 인덱스에 로드합니다.To estimate the size of the object if it were to use the requested compression setting, this stored procedure samples the source object and loads this data into an equivalent table and index created in tempdb. 그런 다음 tempdb에 생성된 테이블 또는 인덱스가 요청된 설정으로 압축되고 예상된 압축 전후 크기 변경 사항이 계산됩니다.The table or index create in tempdb is then compressed to the requested setting and the estimated compression savings is computed.

테이블, 인덱스 또는 파티션에 사용의 압축 상태를 변경 하는 ALTER TABLE 또는 ALTER INDEX 문.To change the compression state of a table, index, or partition, use the ALTER TABLE or ALTER INDEX statements. 압축에 대 한 일반 정보를 참조 하십시오. 데이터 압축합니다.For general information about compression, see Data Compression.

참고

기존 데이터가 조각화된 경우 인덱스를 다시 작성하면 압축을 사용하지 않아도 크기를 줄일 수 있습니다.If the existing data is fragmented, you might be able to reduce its size without using compression by rebuilding the index. 인덱스를 다시 작성하는 동안 인덱스에는 채우기 비율이 적용됩니다.For indexes, the fill factor will be applied during an index rebuild. 이렇게 하면 인덱스 크기가 커질 수 있습니다.This could increase the size of the index.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


sp_estimate_data_compression_savings   
     [ @schema_name = ] 'schema_name'    
   , [ @object_name = ] 'object_name'   
   , [@index_id = ] index_id   
   , [@partition_number = ] partition_number   
   , [@data_compression = ] 'data_compression'   
[;]  

인수Arguments

[ @schema_name=] 'schema_name'[ @schema_name= ] 'schema_name'
테이블 또는 인덱싱된 뷰를 포함하는 데이터베이스 스키마의 이름입니다.Is the name of the database schema that contains the table or indexed view. schema_namesysname합니다.schema_name is sysname. 경우 schema_name 가 NULL 이면 현재 사용자의 기본 스키마가 사용 됩니다.If schema_name is NULL, the default schema of the current user is used.

[ @object_name=] 'object_name'[ @object_name= ] 'object_name'
인덱스가 있는 테이블 또는 인덱싱된 뷰의 이름입니다.Is the name of the table or indexed view that the index is on. object_namesysname입니다.object_name is sysname.

[ @index_id=] 'index_id'[ @index_id= ] 'index_id'
인덱스의 ID입니다.Is the ID of the index. index_idint, 다음 값 중 하나가 될 수 있습니다: 인덱스, NULL 또는 0의 ID 번호 object_id 힙.index_id is int, and can be one of the following values: the ID number of an index, NULL, or 0 if object_id is a heap. 기본 테이블 또는 뷰에 대한 모든 인덱스 정보를 반환하려면 NULL을 지정합니다.To return information for all indexes for a base table or view, specify NULL. NULL을 지정 하는 경우 NULL을 지정 해야 partition_number합니다.If you specify NULL, you must also specify NULL for partition_number.

[ @partition_number=] 'partition_number'[ @partition_number= ] 'partition_number'
개체의 파티션 번호입니다.Is the partition number in the object. partition_numberint, 다음 값 중 하나가 될 수 있습니다: 인덱스 또는 힙, NULL 또는 1 분할 되지 않은 인덱스 또는 힙의 파티션 번호입니다.partition_number is int, and can be one of the following values: the partition number of an index or heap, NULL or 1 for a nonpartitioned index or heap.

파티션을 지정 하려면 지정할 수도 있습니다는 $partition 함수입니다.To specify the partition, you can also specify the $partition function. 소유하는 개체의 모든 파티션에 대한 정보를 반환하려면 NULL을 지정합니다.To return information for all partitions of the owning object, specify NULL.

[ @data_compression=] 'data_compression'[ @data_compression= ] 'data_compression'
계산할 압축 유형입니다.Is the type of compression to be evaluated. data_compression 다음 값 중 하나일 수 있습니다: NONE, 행 또는 페이지입니다.data_compression can be one of the following values: NONE, ROW, or PAGE.

반환 코드 값Return Code Values

0(성공) 또는 1(실패)0 (success) or 1 (failure)

결과 집합Result Sets

테이블, 인덱스 또는 파티션의 현재 크기 및 예상 크기를 제공하는 다음 결과 집합이 반환됩니다.The following result set is returned to provide current and estimated size for the table, index, or partition.

열 이름Column name 데이터 형식Data type DescriptionDescription
object_nameobject_name sysnamesysname 테이블 또는 인덱싱된 뷰의 이름입니다.Name of the table or the indexed view.
schema_nameschema_name sysnamesysname 테이블 또는 인덱싱된 뷰의 스키마입니다.Schema of the table or indexed view.
index_idindex_id intint 인덱스의 인덱스 ID입니다.Index ID of an index:

0 = 힙0 = Heap

1 = 클러스터형 인덱스1 = Clustered index

> 1 = 비클러스터형 인덱스> 1 = Nonclustered index
partition_numberpartition_number intint 파티션 번호입니다.Partition number. 분할되지 않은 테이블 또는 인덱스의 경우 1을 반환합니다.Returns 1 for a nonpartitioned table or index.
size_with_current_compression_setting (KB)size_with_current_compression_setting (KB) bigintbigint 요청된 테이블, 인덱스 또는 파티션의 현재 크기입니다.Size of the requested table, index, or partition as it currently exists.
size_with_requested_compression_setting (KB)size_with_requested_compression_setting (KB) bigintbigint 요청된 압축 설정을 사용하는 테이블, 인덱스 또는 파티션의 예상 크기이며, 해당되는 경우 조각화가 없는 것으로 가정하고 기존 채우기 비율이 사용됩니다.Estimated size of the table, index, or partition that uses the requested compression setting; and, if applicable, the existing fill factor, and assuming there is no fragmentation.
sample_size_with_current_compression_setting (KB)sample_size_with_current_compression_setting (KB) bigintbigint 현재 압축 설정을 사용하는 샘플의 크기입니다.Size of the sample with the current compression setting. 여기에는 조각화가 포함됩니다.This includes any fragmentation.
sample_size_with_requested_compression_setting (KB)sample_size_with_requested_compression_setting (KB) bigintbigint 요청된 압축 설정을 사용하여 만든 샘플의 크기이며, 해당되는 경우 조각화가 없는 것으로 가정하고 기존 채우기 비율을 사용합니다.Size of the sample that is created by using the requested compression setting; and, if applicable, the existing fill factor and no fragmentation.

주의Remarks

sp_estimate_data_compression_savings를 사용하면 테이블 또는 파티션에 행 또는 페이지 압축을 사용하도록 설정할 경우의 압축 전후 크기 변경 사항을 예상할 수 있습니다.Use sp_estimate_data_compression_savings to estimate the savings that can occur when you enable a table or partition for row or page compression. 예를 들어 평균 행 크기가 40% 줄어드는 경우 개체 크기를 40% 줄일 수 있습니다.For instance if the average size of the row can be reduced by 40 percent, you can potentially reduce the size of the object by 40 percent. 공간 크기는 채우기 비율과 행 크기에 따라 달라지므로 공간이 절약되지 않을 수도 있습니다.You might not receive a space savings because this depends on the fill factor and the size of the row. 예를 들어 8000바이트 길이의 행이 있고 행 크기를 40% 줄인 경우에도 여전히 데이터 페이지 하나에 행 하나만 넣을 수 있습니다.For example, if you have a row that is 8000 bytes long and you reduce its size by 40 percent, you can still fit only one row on a data page. 이 경우에는 공간이 절약되지 않습니다.There is no savings.

sp_estimate_data_compression_savings 실행 결과에서 테이블이 확장됨을 나타내는 경우 테이블의 많은 행이 데이터 형식의 전체 자릿수를 거의 모두 사용하며 압축된 형식에 필요한 작은 오버헤드 추가분이 압축으로 얻을 수 있는 공간 절약보다 큰 것입니다.If the results of running sp_estimate_data_compression_savings indicate that the table will grow, this means that many rows in the table use almost the whole precision of the data types, and the addition of the small overhead needed for the compressed format is more than the savings from compression. 드물지만 이러한 경우에는 압축을 사용하지 마십시오.In this rare case, do not enable compression.

테이블에 압축을 사용하도록 설정한 경우 sp_estimate_data_compression_savings를 사용하면 테이블을 압축하지 않을 경우의 평균 행 크기를 예상할 수 있습니다.If a table is enabled for compression, use sp_estimate_data_compression_savings to estimate the average size of the row if the table is uncompressed.

이러한 작업 시 테이블에 대한 IS 잠금을 획득할 수 있습니다.An (IS) lock is acquired on the table during this operation. IS 잠금을 획득할 수 없는 경우 프로시저가 차단됩니다.If an (IS) lock cannot be obtained, the procedure will be blocked. 테이블은 커밋된 읽기 격리 수준에서 검색됩니다.The table is scanned under the read committed isolation level.

요청된 압축 설정이 현재 압축 설정과 동일한 경우 저장 프로시저는 기존 채우기 비율을 사용하여 데이터 조각화가 없을 경우의 예상 크기를 반환합니다.If the requested compression setting is same as the current compression setting, the stored procedure will return the estimated size with no data fragmentation and using the existing fill factor.

인덱스 또는 파티션 ID가 없으면 결과가 반환되지 않습니다.If the index or partition ID does not exist, no results are returned.

PermissionsPermissions

테이블에 대한 SELECT 권한이 필요합니다.Requires SELECT permission on the table.

제한 사항Limitations and Restrictions

이 프로시저는 columnstore 테이블에 적용되지 않으므로 데이터 압축 매개 변수 COLUMNSTORE 및 COLUMNSTORE_ARCHIVE를 허용하지 않습니다.This procedure does not apply to columnstore tables, and therefore does not accept the data compression parameters COLUMNSTORE and COLUMNSTORE_ARCHIVE.

Examples

다음 예에서는 Production.WorkOrderRouting 압축을 사용하여 압축할 경우 ROW 테이블 크기를 계산합니다.The following example estimates the size of the Production.WorkOrderRouting table if it is compressed by using ROW compression.

USE AdventureWorks2012;  
GO  
EXEC sp_estimate_data_compression_savings 'Production', 'WorkOrderRouting', NULL, NULL, 'ROW' ;  
GO  

관련 항목:See Also

CREATE TABLE(Transact-SQL) CREATE TABLE (Transact-SQL)
CREATE INDEX(Transact-SQL) CREATE INDEX (Transact-SQL)
sys.partitions(Transact-SQL) sys.partitions (Transact-SQL)
데이터베이스 엔진 저장 프로시저 (Transact SQL) Database Engine Stored Procedures (Transact-SQL)
유니코드 압축 구현Unicode Compression Implementation