tempdb 성능 최적화

tempdb 데이터베이스의 크기와 물리적인 배치는 시스템 성능에 영향을 줄 수 있습니다. 예를 들어 tempdb에 대해 정의된 크기가 너무 작으면 사용자가 SQL Server 인스턴스를 다시 시작할 때마다 시스템의 처리 로드 중 일부가 작업을 지원하는 데 필요한 크기로 tempdb를 자동 증가시키기 위해 소모될 수 있습니다. tempdb 데이터와 로그 파일의 크기를 늘려 이 오버헤드를 방지할 수 있습니다. tempdb에 필요한 디스크 공간을 결정하는 방법은 tempdb의 용량 계획을 참조하십시오.

tempdb 크기 및 배치 권장 구성

tempdb 성능을 최적화하려면 프로덕션 환경에서 tempdb를 다음과 같이 구성하는 것이 좋습니다.

  • tempdb의 복구 모델을 SIMPLE로 설정합니다. 이 모델은 로그 공간을 자동으로 회수하여 공간 요구 사항을 적게 유지합니다.

    자세한 내용은 ALTER DATABASE(Transact-SQL) 또는 방법: 데이터베이스의 복구 모델 보기 또는 변경(SQL Server Management Studio)을 참조하십시오.

  • 필요에 따라 자동 증가되도록 tempdb 파일을 설정합니다. 이렇게 하면 디스크가 꽉 찰 때까지 파일이 증가할 수 있습니다.

    [!참고]

    프로덕션 환경에서 자동 증가 작업 중 응용 프로그램 제한 시간이 초과되는 것을 허용하지 않는 경우 예상 작업에 충분한 공간을 미리 할당합니다.

  • 파일 증가분을 적정 크기로 설정하여 tempdb 데이터베이스 파일 증가 단위가 너무 작지 않게 합니다. tempdb에 기록되는 데이터 양에 비해 파일 증가 단위가 너무 작으면 tempdb가 지속적으로 확장되어 성능에 영향을 줍니다. tempdb 파일의 FILEGROWTH 증분 설정에 대한 다음 일반 지침을 따르는 것이 좋습니다.

    tempdb 파일 크기

    FILEGROWTH 증분

    0MB - 100MB

    10MB

    100MB - 200MB

    20MB

    200MB 이상

    10%*

    * tempdb 파일이 있는 I/O 하위 시스템의 속도에 따라 이 비율을 조정해야 할 수도 있습니다. 래치 제한 시간이 초과되는 것을 방지하려면 자동 증가 작업을 약 2분으로 제한하는 것이 좋습니다. 예를 들어 I/O 하위 시스템이 초당 50MB의 속도로 파일을 초기화할 수 있는 경우 tempdb 파일 크기에 관계없이 FILEGROWTH 증분을 최대값인 6GB로 설정해야 합니다. 가능하면 자동 증가 작업의 성능을 향상시키기 위해 즉시 데이터베이스 파일 초기화를 사용합니다.

  • 환경의 일반적인 작업량을 수용할 수 있는 값으로 파일 크기를 설정하여 모든 tempdb 파일에 충분한 공간을 미리 할당합니다. 이렇게 하면 tempdb가 너무 자주 확장되어 성능에 영향을 주는 것을 방지할 수 있습니다. tempdb 데이터베이스가 자동 증가되도록 설정해야 하지만 이 기능은 예기치 않은 예외 발생 시 디스크 공간을 늘리기 위해 사용해야 합니다.

  • 필요한 수만큼 파일을 만들어 디스크 대역폭을 최대화합니다. 여러 개의 파일을 사용하면 tempdb 저장소에 대한 경합이 줄고 확장성이 훨씬 증가합니다. 그러나 파일을 너무 많이 만들어도 성능이 감소하고 관리 오버헤드가 늘어날 수 있습니다. 일반적인 지침으로, 서버에 있는 CPU당 각각 하나의 데이터 파일을 만들고(affinity mask 설정 고려) 필요에 따라 파일 수를 늘리거나 줄여서 조정합니다. 이중 코어 CPU는 두 개의 CPU로 간주됩니다.

  • 각 데이터 파일을 동일한 크기로 만듭니다. 이렇게 하면 비례 채우기 성능이 최적화됩니다.

  • tempdb 데이터베이스를 고속 I/O 하위 시스템에 배치합니다. 직접 연결되어 있는 디스크가 많으면 디스크 스트라이프를 사용합니다.

  • 사용자 데이터베이스에 사용되는 디스크와는 다른 디스크에 tempdb 데이터베이스를 배치합니다.

tempdb 크기 및 증가 매개 변수 수정

다음 방법 중 하나를 사용하여 tempdb 데이터 또는 로그 파일의 크기 및 파일 증가 매개 변수를 수정할 수 있습니다.

파일 크기 및 파일 증가 매개 변수의 값은 tempdb가 생성될 때마다 사용됩니다. 예를 들어 tempdb 데이터 파일의 크기를 20MB로 늘리고 파일 증가분을 15%로 늘리면 새 값이 즉시 적용됩니다. 후속 트랜잭션 작업으로 tempdb의 크기가 증가한 경우 SQL Server 인스턴스를 다시 시작할 때마다 데이터 파일 크기가 20MB로 돌아갑니다.

tempdb 크기 및 증가 매개 변수 보기

다음 방법 중 하나를 사용하여 tempdb 데이터 또는 로그 파일의 크기 및 파일 증가 매개 변수를 볼 수 있습니다.

  • SQL Server Management Studio

  • 다음 쿼리를 실행합니다.

    SELECT 
        name AS FileName, 
        size*1.0/128 AS FileSizeinMB,
        CASE max_size 
            WHEN 0 THEN 'Autogrowth is off.'
            WHEN -1 THEN 'Autogrowth is on.'
            ELSE 'Log file will grow to a maximum size of 2 TB.'
        END,
        growth AS 'GrowthValue',
        'GrowthIncrement' = 
            CASE
                WHEN growth = 0 THEN 'Size is fixed and will not grow.'
                WHEN growth > 0 AND is_percent_growth = 0 
                    THEN 'Growth value is in 8-KB pages.'
                ELSE 'Growth value is a percentage.'
            END
    FROM tempdb.sys.database_files;
    GO
    

디스크 I/O 경로 오류 검색

CHECKSUM으로 설정된 경우 PAGE_VERIFY 옵션은 디스크 I/O 경로 오류로 인해 손상된 데이터베이스 페이지를 검색하고 이러한 오류(예: SQL 오류 로그의 MSSQLSERVER_823, MSSQLSERVER_824 또는 MSSQLSERVER_825)를 보고합니다. 디스크 I/O 경로 오류는 일반적으로 페이지를 디스크에 쓸 때 전원 오류나 디스크 하드웨어 오류로 인해 발생하며 데이터베이스 손상 문제를 일으킬 수 있습니다. I/O 오류에 대한 자세한 내용은 Microsoft SQL Server I/O 기본 사항, 2장(Microsoft SQL Server I/O Basics, Chapter 2)을 참조하십시오.

이전 버전의 SQL Server에서는 tempdb 데이터베이스의 PAGE_VERIFY 데이터베이스 옵션이 NONE으로 설정되며 수정할 수 없습니다. SQL Server 2008에서 SQL Server 새 설치의 경우 tempdb 데이터베이스의 기본값은 CHECKSUM입니다. SQL Server 설치를 업그레이드하면 기본값이 NONE으로 유지됩니다. tempdb 데이터베이스의 PAGE_VERIFY 옵션은 CHECKSUM으로 설정하는 것이 좋습니다.