Amazon RDS for SQL Server DB 인스턴스의 스토리지 사용량을 최적화하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server DB 인스턴스가 예상보다 많은 공간을 사용합니다. 디스크 스토리지를 최적화하려고 합니다.

간략한 설명

Amazon CloudWatch의 FreeStorageSpace 지표를 사용하면 DB 인스턴스의 가용 스토리지 공간을 모니터링할 수 있습니다. FreeStorageSpace 지표가 SQL Server 엔진이 가용 스토리지를 사용하는 방법을 설명하지는 않습니다. 이 지표를 자주 모니터링하고 스토리지 오토 스케일링을 활성화하여 스토리지가 부족하지 않도록 하십시오.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Amazon RDS for SQL Server 인스턴스가 스토리지 가득 참 상태임

Amazon RDS 인스턴스가 스토리지 가득 참 상태에서 중단되면 기본 작업을 수행할 수 없습니다. 자세한 내용은 Amazon RDS DB 인스턴스의 스토리지가 부족할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

일부 RDS for SQL Server DB 인스턴스는 스토리지를 수정할 수 있는 방법에 대한 제한 사항이 있습니다. DB 인스턴스를 수정할 수 없는 경우 Amazon RDS 콘솔의 할당된 스토리지 옵션이 비활성화됩니다. 수정 옵션을 사용할 수 없을 때 인스턴스의 스토리지 규모를 조정하려면 기본 백업 및 복원을 사용하여 데이터를 새 인스턴스로 마이그레이션하십시오. 새 인스턴스에 초당 입출력(IOPS)이 프로비저닝되었는지 또는 범용(SSD) 스토리지 유형인지 확인하십시오. 또는 데이터 마이그레이션 도구를 사용하여 새 인스턴스로 마이그레이션하십시오. 자세한 내용은 Amazon RDS DB 인스턴스 수정을 참조하십시오.

DB 인스턴스의 유효한 스토리지 옵션을 확인하려면 describe-valid-db-instance-modifications 명령을 실행하십시오.

describe-valid-db-instance-modifications

참고: 스토리지 규모 조정 및 스토리지 오토 스케일링은 마그네틱 스토리지를 사용하는 RDS for SQL Server 인스턴스에서 지원되지 않습니다.

스토리지 오토 스케일링이 활성화된 인스턴스의 경우 특정 시나리오에서만 스토리지를 확장할 수 있습니다. 자세한 내용은 Amazon RDS 스토리지 자동 확장을 통한 자동 용량 관리를 참조하십시오. 또한 최대 스토리지 임계값이 스토리지 증가분과 같거나 초과하지 않는 경우에만 스토리지를 확장할 수 있습니다. 자세한 내용은 제한 사항을 참조하십시오.

RDS for SQL Server 인스턴스의 스토리지 사용량

RDS for SQL Server DB 인스턴스의 물리적 디스크 공간 사용량에 대한 정보를 얻으려면 다음 예와 비슷한 쿼리를 실행하십시오.

SELECT D.name AS [database_name]    
    , F.name AS [file_name]
    , F.type_desc AS [file_type]
    , CONVERT(decimal(10,2), F.size * 0.0078125) AS [size_on_disk_mb]
    , CONVERT(decimal(10,2), F.max_size * 0.0078125) AS [max_size_mb]
FROM sys.master_files AS F
INNER JOIN sys.databases AS D
    ON F.database_id = D.database_id;

ROWS가 포함된 파일은 데이터로 구성되며 LOGS가 포함된 파일은 진행 중인 트랜잭션을 나타냅니다.

자세한 내용은 Microsoft 웹사이트에서 sys.master_files(Transact-SQL)를 참조하십시오.

참고: sys.master_files 시스템 보기는 tempdb의 스타트업 크기를 보여줍니다. tempdb의 현재 크기를 반영하지 않습니다.

tempdb의 현재 크기를 확인하려면 다음 쿼리를 실행하십시오.

select name AS [database_name], physical_name AS [file_name],
convert(decimal(10,2),size*0.0078125) AS [size_on_disk_mb]
from tempdb.sys.database_files;

스토리지를 최적화하기 전에 SQL Server 엔진이 스토리지를 사용하는 방식을 이해해야 합니다. SQL Server 엔진 스토리지는 크게 다음과 같은 범주로 정의됩니다.

데이터베이스 파일

개별 데이터베이스에서 사용하는 전체 스토리지를 현재 활성 데이터베이스의 행, 인덱스 및 여유 공간으로 나눌 수 있습니다. 전체 스토리지를 분석하려면 다음 쿼리를 실행하십시오.

EXEC sp_spaceused;

트랜잭션 로그 파일

트랜잭션 로그에서 사용되는 스토리지의 양을 확인하려면 다음 쿼리를 실행하십시오.

DBCC SQLPERF(LOGSPACE)

트랜잭션 로그에서 여유 공간을 확인할 수 있습니다. 과도한 여유 공간을 할당 해제하려면 DBCC SHRINKFILE 명령을 실행합니다. 자세한 내용은 Microsoft 웹사이트에서 DBCC SHRINKFILE(Transact-SQL)을 참조하십시오.

트랜잭션 로그에 대한 과도한 여유 공간 할당을 줄이려면 ALTER DATABASE(transact-SQL) file 및 filegroup 옵션을 사용합니다. 해당 옵션은 데이터베이스의 자동 증가 설정을 구성합니다. 자세한 내용은 Microsoft 웹사이트에서 ALTER DATABASE(Transact-SQL) File 및 Filegroup 옵션을 참조하십시오.

임시 데이터베이스(tempdb)

SQL Server tempdb는 자동으로 증가합니다. tempdb가 가용 스토리지를 많이 사용하는 경우 tempdb 데이터베이스를 축소할 수 있습니다.

참고: tempdb 데이터베이스를 축소하는 경우 해당 명령을 실행한 후 SQL Server Management Studio(SSMS)의 메시지 탭에서 오류 메시지를 확인하십시오.

"DBCC SHRINKFILE: Page could not be moved because it is a work table page" 오류 메시지가 표시되는 경우, Microsoft 웹사이트에서 DBCC FREESYSTEMCACHE(Transact-SQL)DBCC FREEPROCCACHE(Transact-SQL)를 참조하십시오. 또한 DB 인스턴스를 재부팅하면 tempdb를 지울 수 있습니다.

스토리지 가득 참 상태의 DB 인스턴스는 재부팅에 실패할 수 있습니다. 이런 경우 DB 인스턴스에 할당된 스토리지를 늘린 다음, 다시 재부팅해 보십시오. 자세한 내용은 Amazon RDS DB 인스턴스의 스토리지가 부족할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

데이터베이스 인덱스

대량의 가용 스토리지를 인덱스 전용으로 사용하는 경우 인덱스 조정을 통해 일부 공간을 절약할 수 있습니다. 인덱스 사용에 대한 정보를 얻으려면 sys.dm_db_index_usage_stats 동적 관리 보기를 실행하십시오. 이렇게 하면 조정 우선 순위를 평가하는 데 도움이 될 수 있습니다. 자세한 내용은 Microsoft 웹사이트에서 sys.dm_db_index_usage_stats(Transact-SQL)를 참조하십시오.

추적 파일

C2 감사 추적 파일 및 덤프 파일을 비롯한 추적 파일은 많은 양의 디스크 공간을 차지할 수 있습니다. Amazon RDS는 7일이 지난 추적 파일 및 덤프 파일을 자동으로 삭제하지만 사용자가 추적 파일의 보존 설정을 조정할 수도 있습니다. 자세한 내용은 추적 및 덤프 파일의 보존 기간 설정을 참조하십시오.

Amazon S3 통합에 사용되는 공간

RDS DB 인스턴스를 Amazon S3와 통합한 경우 공간을 차지하는 파일이 D: 드라이브에 업로드되었을 수 있습니다. S3 통합에서 사용되는 공간을 확인하려면 DB 인스턴스의 파일을 나열하는 명령을 실행하십시오. 자세한 내용은 RDS DB 인스턴스의 파일 나열을 참조하십시오.

CDC

CDC가 켜져 있는 데이터베이스의 경우 소스 테이블 또는 데이터베이스에 대한 변경 빈도에 따라 로그 파일 크기가 증가합니다. 이로 인해 결국 스토리지가 고갈될 수 있습니다. 로그 디스크가 가득 차면 CDC는 추가적인 트랜잭션을 처리할 수 없습니다.

감사

인스턴스에 대한 감사가 올바르게 구성되지 않은 경우 로그가 기하급수적으로 증가하여 스토리지에 영향을 미칠 수 있습니다. 자세한 내용은 SQL Server 감사를 참조하십시오.

C2 감사 모드에서는 대량의 이벤트 정보를 로그 파일에 저장합니다. 따라서 로그 파일이 빠르게 증가하여 인스턴스가 스토리지 가득 참 상태로 될 수 있습니다. 자세한 내용은 Microsoft 웹사이트에서 C2 감사 모드(서버 구성 옵션)를 참조하십시오.

또한 쿼리 저장소와 같은 기능을 켜면 리소스 사용률에 영향을 줄 수 있습니다.

관련 정보

Amazon RDS for Microsoft SQL Server

Amazon RDS 인스턴스의 지표 모니터링

Amazon RDS DB 인스턴스에 저장 공간이 부족할 경우

Microsoft SQL Server 데이터베이스를 AWS 클라우드로 마이그레이션