테이블 또는 인덱스에 압축 사용Enable Compression on a Table or Index

이 항목에서는 SQL Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio 또는 Transact-SQLTransact-SQL을 사용하여 테이블이나 인덱스에 압축을 사용하는 방법에 대해 설명합니다.This topic describes how to enable compression on a table or index in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

항목 내용In This Topic

시작하기 전 주의 사항Before You Begin

제한 사항Limitations and Restrictions

  • 시스템 테이블에는 압축을 사용할 수 없습니다.System tables cannot be enabled for compression.

  • 테이블이 힙인 경우 ONLINE 모드의 다시 작성 작업은 단일 스레드 작업이 됩니다.If the table is a heap, the rebuild operation for ONLINE mode will be single threaded. 다중 스레드 힙 다시 작성 작업에는 OFFLINE 모드를 사용하세요.Use OFFLINE mode for a multi-threaded heap rebuild operation. 데이터 압축에 대한 자세한 내용은 데이터 압축을 참조하세요.For a more information about data compression, see Data Compression.

  • 테이블에 정렬되지 않은 인덱스가 있으면 단일 파티션의 압축 설정을 변경할 수 없습니다.You cannot change the compression setting of a single partition if the table has nonaligned indexes.

보안Security

사용 권한Permissions

테이블이나 인덱스에 대한 ALTER 권한이 필요합니다.Requires ALTER permission on the table or index.

SQL Server Management Studio 사용Using SQL Server Management Studio

테이블이나 인덱스에 압축을 사용하려면To enable compression on a table or index

  1. 개체 탐색기에서 압축할 테이블이 포함된 데이터베이스를 확장한 다음 테이블 폴더를 확장합니다.In Object Explorer, expand the database that contains the table that you want to compress and then expand the Tables folder.

  2. 인덱스를 압축하려면 압축할 인덱스가 포함된 테이블을 확장한 다음 인덱스 폴더를 확장합니다.To compress an index, expand the table that contains the index that you want to compress and then expand the Indexes folder.

  3. 압축할 테이블이나 인덱스를 마우스 오른쪽 단추로 클릭하고 저장소 를 가리킨 다음 압축 관리...를 선택합니다.Right-click the table or index to compress, point to Storage and select Manage Compression….

  4. 데이터 압축 마법사의 데이터 압축 마법사 시작 페이지에서 다음을 클릭합니다.In the Data Compression Wizard, on the Welcome to the Data Compression Wizard page, click Next.

  5. 압축 유형 선택 페이지에서 압축할 테이블이나 인덱스의 각 파티션에 적용할 압축 유형을 선택합니다.On the Select Compression Type page, select the compression type to apply to each partition in the table or index you want to compress. 완료되면 다음을 클릭합니다.When finished, click Next.

    다음은 압축 유형 선택 페이지에서 선택할 수 있는 옵션입니다.The following options are available on the Select Compression Type page:

    모든 파티션에 동일한 압축 유형 사용 확인란Use the same compression type for all partitions check box
    모든 파티션에 동일한 압축 설정을 구성하려면 선택합니다.Select to configure the same compression setting for all partitions. 이렇게 하면 선택 상자가 활성화되고 표의 압축 유형 열이 비활성화됩니다This enables the selection box and disables the Compression Type column in the grid. 이 옵션을 선택하면 인접 목록의 옵션은 없음, 페이지입니다.When selected, the options in the adjacent list are None, Row, and Page.

    파티션 번호Partition Number
    테이블이나 인덱스에 있는 각 파티션을 나열합니다.Lists each partition in the table or index. 이 열은 읽기 전용입니다.This column is read-only.

    압축 유형Compression Type
    각 파티션의 압축 옵션을 선택합니다.Select the compression option for each partition. 모든 파티션에 동일한 압축 유형 사용 을 선택한 경우에는 사용할 수 없습니다.Is not available when Use the same compression type for all partitions is selected. 목록의 옵션은 없음, 페이지입니다.List options are None, Row, and Page.

    경계Boundary
    파티션 경계를 표시합니다.Displays the partition boundary. 이 열은 읽기 전용입니다.This column is read-only.

    행 개수Row Count
    이 파티션의 행 수를 표시합니다.Displays the number of rows in this partition. 이 열은 읽기 전용입니다.This column is read-only.

    현재 공간Current Space
    이 파티션이 차지하는 현재 공간(MB)을 표시합니다.Displays the current space this partition occupies in megabytes (MB). 이 열은 읽기 전용입니다.This column is read-only.

    요청한 압축 공간Requested Compressed Space
    계산을 클릭하면 압축 유형 열에서 지정한 설정을 사용하여 압축 후 각 파티션의 예상 크기가 이 열에 표시됩니다.After you click Calculate, this column displays the estimated size of each partition after compression by using the setting specified in the Compression Type column. 이 열은 읽기 전용입니다.This column is read-only.

    계산Calculate
    압축 유형 열에서 지정한 설정을 사용하여 압축 후 각 파티션의 크기를 예측하려면 클릭합니다.Click to estimate the size of each partition after compression by using the setting specified in the Compression Type column.

  6. 출력 옵션 선택 페이지에서 압축을 완료하는 방법을 지정합니다.In the Select an Output Option page, specify how you want to complete your compression. 마법사의 이전 페이지를 기반으로 SQL 스크립트를 만들려면 스크립트 만들기 를 선택합니다.Select Create Script to create a SQL script based the previous pages in the wizard. 마법사의 남은 페이지를 모두 완료한 후 새 분할된 테이블을 만들려면 즉시 실행 을 선택합니다.Select Run immediately to create the new partitioned table after completing all remaining pages in the wizard. 향후 미리 결정된 시간에 새 분할된 테이블을 만들려면 일정 을 선택합니다.Select Schedule to create the new partitioned table at a predetermined time in the future.

    스크립트 만들기를 선택하는 경우 스크립트 옵션에서 다음과 같은 옵션을 사용할 수 있습니다.If you select Create script, the following options are available under Script options:

    파일로 스크립팅Script to file
    스크립트를 .sql 파일로 생성합니다.Generates the script as a .sql file. 파일 이름 상자에 파일 이름 및 위치를 입력하거나 찾아보기 를 클릭하여 스크립트 파일 위치 대화 상자를 엽니다.Enter a file name and location in the File name box or click Browse to open the Script File Location dialog box. 다른 이름으로 저장에서 유니코드 텍스트 또는 ANSI 텍스트를 선택합니다.From Save As, select Unicode text or ANSI text.

    클립보드로 스크립팅Script to Clipboard
    스크립트를 클립보드에 저장합니다.Saves the script to the Clipboard.

    새 쿼리 창으로 스크립팅Script to New Query Window
    새 쿼리 편집기 창에 스크립트를 생성합니다.Generates the script to a new Query Editor window. 이 옵션이 기본 옵션입니다.This is the default selection.

    일정을 선택하는 경우 일정 변경을 클릭합니다.If you select Schedule, click Change schedule.

    1. 새 작업 일정 대화 상자의 이름 상자에 작업 일정 이름을 입력합니다.In the New Job Schedule dialog box, in the Name box, enter the job schedule’s name.

    2. 일정 유형 목록에서 다음과 같은 일정 유형을 선택합니다.On the Schedule type list, select the type of schedule:

      • SQL Server 에이전트가 시작될 때 자동으로 시작Start automatically when SQL Server Agent starts

      • CPU가 유휴 상태로 될 때마다 시작Start whenever the CPUs become idle

      • 되풀이.Recurring. 새 분할된 테이블을 정기적으로 새로운 정보로 업데이트하는 경우 이 옵션을 선택합니다.Select this option if your new partitioned table updates with new information on a regular basis.

      • 한 번.One time. 이 옵션이 기본 옵션입니다.This is the default selection.

    3. 일정을 사용하거나 사용하지 않으려면 사용 확인란을 선택하거나 선택을 취소합니다.Select or clear the Enabled check box to enable or disable the schedule.

    4. 되풀이를 선택하는 경우 다음을 수행합니다.If you select Recurring:

      1. 빈도아래의 되풀이 목록에서 다음과 같이 발생 빈도를 지정합니다.Under Frequency, on the Occurs list, specify the frequency of occurrence:

        • 일별을 선택하는 경우 상자에 작업 일정을 반복하는 일 수를 입력합니다.If you select Daily, in the Recurs every box, enter how often the job schedule repeats in days.

        • 주별을 선택하는 경우 상자에 작업 일정을 반복하는 주 수를 입력합니다.If you select Weekly, in the Recurs every box, enter how often the job schedule repeats in weeks. 작업 일정을 실행할 요일을 선택합니다.Select the day or days of the week on which the job schedule is run.

        • 월별을 선택한 경우 매(Day) 또는 매(The)를 선택합니다.If you select Monthly, select either Day or The.

          • 매(Day)를 선택한 경우 작업 일정을 실행할 날짜와 작업 일정을 반복할 월 수를 모두 입력합니다.If you select Day, enter both the date of the month you want the job schedule to run and how often the job schedule repeats in months. 예를 들어 작업 일정을 격월로 15일에 실행하려면 를 선택하고 첫 번째 상자에 "15"를, 두 번째 상자에 "2"를 입력합니다.For example, if you want the job schedule to run on the 15th day of the month every other month, select Day and enter “15” in the first box and “2” in the second box. 두 번째 상자에 허용되는 가장 큰 숫자는 "99"입니다.Please note that the largest number allowed in the second box is “99”.

          • 매(The)를 선택한 경우 작업 일정을 실행할 요일 및 작업 일정을 반복할 월 수를 입력합니다.If you select The, select the specific day of the week within the month that you want the job schedule to run and how often the job schedule repeats in months. 예를 들어 작업 일정을 격월로 마지막 평일에 실행하려면 를 선택하고 첫 번째 목록에서 마지막 을, 두 번째 목록에서 평일 을 선택한 다음 마지막 상자에 "2"를 입력합니다.For example, if you want the job schedule to run on the last weekday of the month every other month, select Day, select last from the first list and weekday from the second list, and then enter “2” in the last box. 처음 두 목록에서 첫 번째, 두 번째, 세 번째또는 네 번째및 특정 평일(예: 일요일 또는 수요일)을 선택할 수도 있습니다.You can also select first, second, third, or fourth, as well as specific weekdays (for example: Sunday or Wednesday) from the first two lists. 마지막 상자에 허용되는 가장 큰 숫자는 "99"입니다.Please note that the largest number allowed in the last box is “99”.

      2. 일별 빈도에서 작업 일정이 실행되는 날에 작업 일정을 반복하는 빈도를 지정합니다.Under Daily frequency, specify how often the job schedule repeats on the day the job schedule runs:

        • 한 번 수행을 선택하는 경우 한 번 수행 상자에 작업 일정을 실행할 특정 시간을 입력합니다.If you select Occurs once at, enter the specific time of day when the job schedule should run in the Occurs once at box. 시간, 분, 초와 오전 또는 오후를 입력합니다.Enter the hour, minute, and second of the day, as well as AM or PM.

        • 되풀이 수행을 선택하는 경우 빈도에 선택한 날 동안 작업 일정을 실행할 빈도를 지정합니다.If you select Occurs every, specify how often the job schedule runs during the day chosen under Frequency. 예를 들어 작업 일정을 실행하는 날에 2시간마다 작업 일정을 반복하려면 되풀이 수행을 선택하고 첫 번째 상자에 "2"를 입력한 다음 목록에서 시간 을 선택합니다.For example, if you want the job schedule to repeat every 2 hours during the day that the job schedule is run, select Occurs every, enter “2” in the first box, and then select hour(s) from the list. 이 목록에서 도 선택할 수 있습니다.From this list you can also select minute(s) and second(s). 첫 번째 상자에 허용되는 가장 큰 숫자는 "100"입니다.Please note that the largest number allowed in the first box is “100”.

          시작 상자에 작업 일정 실행을 시작할 시간을 입력합니다.In the Starting at box, enter the time that the job schedule should start running. 종료 상자에 작업 일정 반복을 중지할 시간을 입력합니다.In the Ending at box, enter the time that the job schedule should stop repeating. 시간, 분, 초와 오전 또는 오후를 입력합니다.Enter the hour, minute, and second of the day, as well as AM or PM.

      3. 기간아래의 시작 날짜에 작업 일정 실행을 시작할 날짜를 입력합니다.Under Duration, in Start date, enter the date that you want the job schedule to start running. 종료 날짜 또는 종료 날짜 없음 을 선택하여 작업 일정 실행을 중지할 시기를 나타냅니다.Select End date or No end date to indicate when the job schedule should stop running. 종료 날짜를 선택하는 경우 작업 일정 실행을 중지할 날짜를 입력합니다.If you select End date, enter the date that you want to job schedule to stop running.

    5. 한 번을 선택하는 경우 한 번 발생아래 날짜 상자에 작업 일정을 실행할 날짜를 입력합니다.If you select One Time, under One-time occurrence, in the Date box, enter the date that the job schedule will be run. 시간 상자에 작업 일정을 실행할 시간을 입력합니다.In the Time box, enter the time that the job schedule will be run. 시간, 분, 초와 오전 또는 오후를 입력합니다.Enter the hour, minute, and second of the day, as well as AM or PM.

    6. 요약아래 설명에서 모든 작업 일정 설정이 올바른지 확인합니다.Under Summary, in Description, verify that all job schedule settings are correct.

    7. 확인을 클릭합니다.Click OK.

      이 페이지를 마쳤으면 다음을 클릭합니다.After completing this page, click Next.

  7. 요약 검토 페이지의 선택 항목 검토아래에서 사용 가능한 옵션을 모두 확장하여 모든 압축 설정이 올바른지 확인합니다.On the Review Summary page, under Review your selections, expand all available options to verify that all compression settings are correct. 모두 맞으면 마침을 클릭합니다.If everything is as expected, click Finish.

  8. 압축 마법사 진행률 페이지에서 파티션 작성 마법사의 동작에 대한 상태 정보를 모니터링할 수 있습니다.On the Compression Wizard Progress page, monitor status information about the actions of the Create Partition Wizard. 마법사에서 선택한 옵션에 따라 진행률 페이지에 하나 이상의 동작이 포함될 수 있습니다.Depending on the options that you selected in the wizard, the progress page might contain one or more actions. 맨 위에 있는 상자에는 전반적인 마법사 상태와 수신된 상태, 오류 및 경고 메시지의 수가 표시됩니다.The top box displays the overall status of the wizard and the number of status, error, and warning messages that the wizard has received.

    다음은 압축 마법사 진행률 페이지에서 선택할 수 있는 옵션입니다.The following options are available on the Compression Wizard Progress page:

    세부 정보Details
    동작, 상태 및 마법사가 수행한 동작의 결과로 반환된 모든 메시지를 제공합니다.Provides the action, status, and any messages that are returned from action taken by the wizard.

    작업Action
    각 동작의 이름과 유형을 지정합니다.Specifies the type and name of each action.

    상태Status
    마법사 동작 결과 전체적으로 성공 값을 반환했는지 또는 실패값을 반환했는지 여부를 나타냅니다.Indicates whether the wizard action as a whole returned the value of Success or Failure.

    메시지Message
    프로세스에서 반환된 모든 오류 또는 경고 메시지를 제공합니다.Provides any error or warning messages that are returned from the process.

    보고서Report
    파티션 작성 마법사의 결과가 포함된 보고서를 만듭니다.Creates a report that contains the results of the Create Partition Wizard. 보고서 보기, 보고서를 파일로 저장, 클립보드에 보고서 복사보고서를 전자 메일로 보내기중에서 선택할 수 있습니다.The options are View Report, Save Report to File, Copy Report to Clipboard, and Send Report as Email.

    보고서 보기View Report
    파티션 작성 마법사의 진행률에 대한 텍스트 보고서가 포함된 보고서 보기 대화 상자를 엽니다.Opens the View Report dialog box, which contains a text report of the progress of the Create Partition Wizard.

    보고서를 파일로 저장Save Report to File
    보고서를 다른 이름으로 저장 대화 상자를 엽니다.Opens the Save Report As dialog box.

    클립보드에 보고서 복사Copy Report to Clipboard
    마법사의 진행률 보고서 결과를 클립보드로 복사합니다.Copies the results of the wizard’s progress report to the Clipboard.

    보고서를 전자 메일로 보내기Send Report as Email
    마법사의 진행률 보고서 결과를 전자 메일 메시지로 복사합니다.Copies the results of the wizard’s progress report into an email message.

    완료되면 닫기를 클릭합니다.When complete, click Close.

Transact-SQL 사용Using Transact-SQL

테이블에 압축을 사용하려면To enable compression on a table

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute. 다음 예에서는 먼저 sp_estimate_data_compression_savings 저장 프로시저를 실행하여 ROW 압축 설정을 사용할 경우의 예상 개체 크기를 반환합니다.The example first executes the stored procedure sp_estimate_data_compression_savings to return the estimated size of the object if it were to use the ROW compression setting. 그런 다음 지정한 테이블의 모든 파티션에 대해 ROW 압축을 사용하도록 설정합니다.The example then enables ROW compression on all partitions in the specified table.

    USE AdventureWorks2012;  
    GO  
    EXEC sp_estimate_data_compression_savings 'Production', 'TransactionHistory', NULL, NULL, 'ROW' ;  
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL  
    WITH (DATA_COMPRESSION = ROW);   
    GO  
    

인덱스에 압축을 사용하려면To enable compression on an index

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute. 다음 예에서는 먼저 sys.indexes 카탈로그 뷰를 쿼리하여 index_id 테이블에 있는 각 인덱스의 이름 및 Production.TransactionHistory 를 반환합니다.The example first queries the sys.indexes catalog view to return the name and index_id for each index on the Production.TransactionHistory table. 그런 다음 sp_estimate_data_compression_savings 저장 프로시저를 실행하여 PAGE 압축 설정을 사용할 경우의 지정한 인덱스 ID에 대한 예상 크기를 반환합니다.It then executes the the stored procedure sp_estimate_data_compression_savings to return the estimated size of the specified index ID if it were to use the PAGE compression setting. 마지막으로 PAGE 압축을 지정하여 인덱스 ID 2(IX_TransactionHistory_ProductID)를 다시 작성합니다.Finally, the example rebuilds index ID 2 (IX_TransactionHistory_ProductID), specifying PAGE compression.

    USE AdventureWorks2012;   
    GO  
    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(Transact-SQL)ALTER INDEX(Transact-SQL)를 참조하세요.For more information, see ALTER TABLE (Transact-SQL) and ALTER INDEX (Transact-SQL).

관련 항목:See Also

데이터 압축 Data Compression
sp_estimate_data_compression_savings(Transact-SQL)sp_estimate_data_compression_savings (Transact-SQL)