테이블 또는 인덱스에 압축 사용
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 기존 테이블이나 인덱스에 대한 데이터 압축을 사용하도록 설정하는 방법을 설명합니다. 테이블 또는 인덱스를 만들 때 데이터 압축을 사용하도록 설정하려면 압축된 인덱스 만들기 및 행 압축 예제를 사용하는 테이블 만들기를 참조하세요.
제한 사항
시스템 테이블에는 압축을 사용할 수 없습니다.
테이블이 힙인 경우
ONLINE
모드의 다시 작성 작업은 단일 스레드 작업이 됩니다. 다중 스레드 힙 다시 작성 작업에는OFFLINE
모드를 사용하세요. 다시 빌드 작업은OFFLINE
옵션을 지정하지 않는 한ONLINE
이 수행됩니다.ONLINE
다시 빌드를 수행하는 방법에 대한 자세한 내용은 온라인으로 인덱스 작업 수행을 참조하세요.테이블에 정렬되지 않은 인덱스가 있으면 단일 파티션의 압축 설정을 변경할 수 없습니다.
여러 데이터 형식은 데이터 압축의 영향을 받지 않습니다. 자세한 내용은 행 압축이 스토리지에 미치는 영향을 참조하세요.
사용 권한
테이블 또는 인덱스에 대한 ALTER
권한이 필요합니다.
SQL Server Management Studio 사용
개체 탐색기에서 압축할 테이블이 들어 있는 데이터베이스를 확장한 다음 테이블 폴더를 확장합니다.
인덱스를 압축하려면 압축할 인덱스가 포함된 테이블을 확장한 다음 인덱스 폴더를 확장합니다.
압축할 테이블이나 인덱스를 마우스 오른쪽 버튼으로 클릭하고 스토리지를 가리킨 다음 압축 관리...를 선택합니다.
데이터 압축 마법사의 데이터 압축 마법사 시작 페이지에서 다음을 선택합니다.
압축 유형 선택 페이지에서 압축할 테이블 또는 인덱스의 각 파티션에 적용할 압축 유형을 선택합니다. 완료되면 다음을 선택합니다.
다음은 압축 유형 선택 페이지에서 선택할 수 있는 옵션입니다.
모든 파티션에 대해 동일한 압축 유형 사용 확인란
모든 파티션에 동일한 압축 설정을 구성하려면 선택합니다. 이렇게 하면 선택 상자가 활성화되고 표에서 압축 형식 열이 비활성화됩니다. 이 옵션을 선택하면 인접 목록의 옵션은 없음, 행및 페이지입니다.
파티션 번호
테이블 또는 인덱스에 있는 각 파티션을 나열합니다. 이 열은 읽기 전용입니다.
압축 유형
각 파티션의 압축 옵션을 선택합니다. 모든 파티션에 동일한 압축 유형 사용 을 선택한 경우에는 사용할 수 없습니다. 목록 옵션은 없음, 행 및 페이지입니다.
경계
파티션 경계를 표시합니다. 이 열은 읽기 전용입니다.
행 개수
이 파티션의 행 수를 표시합니다. 이 열은 읽기 전용입니다.
현재 공간
이 파티션이 차지하는 현재 공간을 MB(메가바이트트) 단위로 표시합니다. 이 열은 읽기 전용입니다.
요청된 압축 공간
계산을 선택한 후 이 열은 압축 유형 열에 지정된 설정을 사용하여 압축 후 각 파티션의 예상 크기를 표시합니다. 이 열은 읽기 전용입니다.
계산
압축 형식 열에 지정된 설정을 사용하여 압축 후 각 파티션의 크기를 예측하려면 선택합니다.
출력 옵션 선택 페이지에서 압축을 완료하는 방법을 지정합니다. 스크립트 만들기를 선택하여 마법사의 이전 페이지를 기반으로 SQL 스크립트를 만듭니다. 마법사의 나머지 페이지를 모두 완료한 후 즉시 실행을 선택하여 분할된 새 테이블을 만듭니다. 향후 미리 결정된 시간에 새 분할된 테이블을 만들려면 일정 을 선택합니다.
스크립트 만들기를 선택하면 스크립트 옵션에서 다음 옵션을 사용할 수 있습니다.
파일로 스크립팅
스크립트를
.sql
파일로 생성합니다. 파일 이름 상자에 파일 이름과 위치를 입력하거나 찾아보기를 선택하여 스크립트 파일 위치 대화 상자를 엽니다. 다른 이름으로 저장에서 유니코드 텍스트 또는 ANSI 텍스트를 선택합니다.클립보드로 스크립팅
스크립트를 클립보드에 저장합니다.
새 쿼리 창에 스크립팅
새 쿼리 편집기 창에 스크립트를 생성합니다. 기본적으로 이 옵션이 선택되어 있습니다.
일정을 선택한 경우 일정 변경을 선택합니다.
새 작업 일정 대화 상자의 이름 상자에 작업 일정 이름을 입력합니다.
일정 유형 목록에서 다음과 같은 일정 유형을 선택합니다.
SQL Server 에이전트가 시작될 때 자동으로 시작
CPU가 유휴 상태로 될 때마다 시작
되풀이. 새 분할된 테이블을 새로운 정보로 정기적으로 업데이트하는 경우 이 옵션을 선택합니다.
한 번. 이 선택 항목은 기본 선택 사항입니다.
활성화 확인란을 선택하거나 선택 취소하여 일정을 활성화 또는 비활성화합니다.
되풀이를 선택하는 경우:
FREQUENCY의 Occurs 목록에서 발생 빈도를 지정합니다.
Recurs every 상자에서 Daily를 선택한 경우 작업 일정이 일 단위로 반복되는 빈도를 입력합니다.
Recurs every 상자에서 Weekly를 선택한 경우 작업 일정이 주 단위로 반복되는 빈도를 입력합니다. 작업 일정을 실행할 요일을 선택합니다.
월별을 선택한 경우 매(Day) 또는 매(The)를 선택합니다.
Day를 선택한 경우 작업 일정을 실행할 날짜와 작업 일정을 반복할 월 수를 입력합니다. 예를 들어 작업 일정을 격월로 15일에 실행하려면 Day를 선택하고 첫 번째 상자에 "15"를, 두 번째 상자에 "2"를 입력합니다. 두 번째 상자에 허용되는 가장 큰 숫자는 "99"입니다.
매(The)를 선택한 경우 작업 일정을 실행할 요일 및 작업 일정을 반복할 월 수를 입력합니다. 예를 들어 작업 일정을 격월로 마지막 WEEKDAY에 실행하려면 Day를 선택하고, 첫 번째 목록에서 마지막을 선택한 다음 두 번째 목록에서 WEEKDAY를 선택하고, 마지막 상자에 "2"를 입력합니다. 또한 처음 두 목록에서 첫 번째, 두 번째, 세 번째 또는 네 번째를 선택하고 특정 WEEKDAY(예: 일요일 또는 수요일)를 지정할 수도 있습니다. 마지막 상자에 허용되는 가장 큰 숫자는 "99"입니다.
Daily FREQUENCY에서 작업 일정이 실행되는 날에 작업 일정이 반복되는 빈도를 지정합니다.
한 번 수행을 선택하는 경우 한 번 수행 상자에 작업 일정을 실행할 특정 시간을 입력합니다. 오전 또는 오후뿐만 아니라 하루 중 시간, 분, 초도 입력합니다.
Occurs every를 선택하는 경우 FREQUENCY에서 선택한 날에 작업 일정이 실행되는 빈도를 지정합니다. 예를 들어 작업 일정이 실행되는 날 2시간마다 작업 일정을 반복하려면 Occurs every를 선택하고 첫 번째 상자에 "2"를 입력한 다음 목록에서 시간을 선택합니다. 이 목록에서 분 과 초도 선택할 수 있습니다. 첫 번째 상자에 허용되는 가장 큰 숫자는 "100"입니다.
Starting at 상자에서 작업 일정 실행을 시작할 시간을 입력합니다. Ending at 상자에서 작업 일정이 반복을 중지할 시간을 입력합니다. 오전 또는 오후뿐만 아니라 하루 중 시간, 분, 초도 입력합니다.
DURATION의 시작 날짜에서 작업 일정 실행을 시작할 날짜를 입력합니다. 종료 날짜 또는 종료 날짜 없음 을 선택하여 작업 일정 실행을 중지할 시기를 나타냅니다. 종료 날짜를 선택하는 경우 작업 일정을 실행 중지할 날짜를 입력합니다.
1회를 선택한 경우 1회 발생 항목의 DATE 상자에 작업 일정이 실행될 날짜를 입력합니다. TIME 상자에 작업 일정이 실행될 시간을 입력합니다. 오전 또는 오후뿐만 아니라 하루 중 시간, 분, 초도 입력합니다.
요약의 설명에서 모든 작업 일정 설정이 올바른지 확인합니다.
확인을 선택합니다.
이 페이지를 마쳤으면 다음을 클릭합니다.
요약 검토 페이지의 선택 항목 검토아래에서 사용 가능한 옵션을 모두 확장하여 모든 압축 설정이 올바른지 확인합니다. 모든 항목이 예상대로 표시되면 마침을 선택합니다.
압축 마법사 진행률 페이지에서 파티션 만들기 마법사의 작업에 대한 상태 정보를 모니터링합니다. 마법사에서 선택한 옵션에 따라 진행률 페이지에 하나 이상의 작업이 포함될 수 있습니다. 맨 위 상자에는 마법사의 전체 상태와 마법사가 받은 상태, 오류 및 경고 메시지 수가 표시됩니다.
다음 옵션은 압축 마법사 진행률 페이지에서 사용할 수 있습니다.
세부 정보
마법사에서 수행한 작업에서 반환되는 작업, 상태 및 모든 메시지를 제공합니다.
동작
각 동작의 이름과 유형을 지정합니다.
상태
마법사 작업 전체가 성공 또는 실패 값을 반환했는지 여부를 나타냅니다.
Message
프로세스에서 반환된 모든 오류 또는 경고 메시지를 제공합니다.
Report
파티션 만들기 마법사의 결과가 포함된 보고서를 만듭니다. 보고서 보기, 파일에 보고서 저장, 클립보드에 보고서 복사, 전자 메일로 보고서 보내기 옵션이 있습니다.
보고서 보기
파티션 작성 마법사의 진행률에 대한 텍스트 보고서가 포함된 보고서 보기 대화 상자를 엽니다.
파일에 보고서 저장
보고서 저장 대화 상자가 열립니다.
클립보드에 보고서 복사
마법사의 진행률 보고서 결과를 클립보드에 복사합니다.
보고서를 전자 메일로 보내기
마법사의 진행률 보고서 결과를 전자 메일 메시지로 복사합니다.
완료되면 닫기을 선택합니다.
Transact-SQL 사용
선택한 데이터베이스에서 sp_estimate_data_compression_savings (Transact-SQL)를 실행한 다음 테이블 또는 인덱스에서 압축을 사용하도록 설정합니다. 다음 섹션 참조
이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022
또는 AdventureWorksDW2022
샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
테이블에 압축 사용
개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.
표준 도구 모음에서 새 쿼리를 선택합니다.
데이터베이스의 컨텍스트에 있는지 확인합니다.
다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 예제는
sp_estimate_data_compression_savings
압축 설정을 사용하는 경우 저장된 절차ROW
를 실행하여 개체의 추정 크기를 반환합니다. 그런 다음, 지정된 테이블의 모든 파티션에서ROW
압축을 사용하도록 설정하는 예제입니다.EXEC sp_estimate_data_compression_savings 'Production', 'TransactionHistory', NULL, NULL, 'ROW'; ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = ROW); GO
인덱스에 압축을 사용
개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.
표준 도구 모음에서 새 쿼리를 선택합니다.
데이터베이스의 컨텍스트에 있는지 확인합니다.
다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 이 예제에서는 먼저
sys.indexes
카탈로그 뷰를 쿼리하여 이름과index_id
테이블의 각 인덱스에 대한 이름과Production.TransactionHistory
를반환합니다. 그런 다음 저장 프로시저sp_estimate_data_compression_savings
를 실행하여PAGE
압축 설정을 사용할 경우의 지정한 인덱스 ID에 대한 예상 크기를 반환합니다. 마지막으로, 이 예제에서는IX_TransactionHistory_ProductID
압축을 지정하는 인덱스 ID 2(PAGE
)를 다시 작성합니다.SELECT name, index_id FROM sys.indexes WHERE OBJECT_NAME (object_id) = N'TransactionHistory'; EXEC sp_estimate_data_compression_savings @schema_name = 'Production', @object_name = 'TransactionHistory', @index_id = 2, @partition_number = NULL, @data_compression = 'PAGE'; ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE); GO
자세한 내용은 ALTER TABLE 및 ALTER INDEX를 참조하세요.