SQL Server 데이터베이스 크기 이해하기

데이터베이스 관리의 세계에서 자주 묻는 질문은 다음과 같습니다: SQL Server에서 모든 데이터베이스의 총 크기를 어떻게 확인할 수 있나요? 이것은 공간과 자원을 효과적으로 관리해야 하는 데이터베이스 관리자에게 중요한 작업입니다. 데이터베이스 성장 모니터링, 용량 계획 또는 저장 용량 추적을 원하든, SQL Server 데이터베이스의 크기를 아는 것은 필수적입니다.

SQL Server는 데이터베이스의 총 크기와 사용량을 설명하는 간단한 방법을 제공합니다. 아래에서는 SQL Server 데이터베이스가 차지하는 공간에 대한 전체 통찰력을 얻기 위해 사용할 수 있는 저장 프로시저를 단계별로 안내하겠습니다. 이는 SQL Server 2008까지 버전에 적용 가능합니다.

솔루션: 저장 프로시저

데이터베이스 크기를 찾기 위해 총 사용 공간, 사용 가능한 공간을 요약하고 각 데이터베이스의 데이터 및 로그 파일에 대한 필수 정보를 제공하는 저장 프로시저를 생성할 것입니다. 단계별로 분해해 보겠습니다.

단계 1: 저장 프로시저 설정

데이터베이스 크기를 요약하는 sp_SDS라는 저장 프로시저를 생성하는 방법은 다음과 같습니다:

USE master;
GO

IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
  DROP PROCEDURE dbo.sp_SDS;
GO

CREATE PROCEDURE dbo.sp_SDS 
  @TargetDatabase sysname = NULL,     --  NULL: 모든 데이터베이스
  @Level varchar(10) = 'Database',    -- 옵션: "Database", "File"
  @UpdateUsage bit = 0,               -- 기본값: 업데이트 안 함
  @Unit char(2) = 'MB'                -- 단위: 메가바이트, 킬로바이트, 기가바이트
AS

단계 2: 초기 설정

저장 프로시저 내에서 초기 검사 수행 및 데이터베이스 정보를 보관하기 위한 임시 테이블을 생성합니다:

  • 대상 데이터베이스 확인: 특정 데이터베이스가 요청될 경우 존재하는지 확인합니다.
  • 임시 테이블 생성: 총 크기, 사용 공간 및 여유 공간을 포함한 데이터베이스 통계를 저장할 테이블을 만듭니다.

단계 3: 데이터베이스 정보 수집

그 후 SQL Server의 데이터베이스에 대한 세부정보를 수집합니다. 우리가 기록할 주요 요소는 다음과 같습니다:

  • 데이터베이스 이름
  • 형태 (데이터 또는 로그)
  • 논리 이름
  • 총 크기
  • 사용된 크기 및 여유 공간

이 데이터를 가져오는 방법은 다음과 같습니다:

SELECT 
  @String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
  + 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);

단계 4: 크기 계산하기

필요한 데이터를 수집한 후, 사용된 공간 및 여유 공간 비율을 계산합니다:

  • 각 파일의 익스텐트를 기반으로 사용된 공간을 업데이트합니다.
  • 데이터 및 로그 파일에 대한 사용된 공간과 여유 공간의 비율을 계산합니다.

단계 5: 결과 표시

마지막으로, 계산된 정보를 사용자에게 선택하여 표시합니다:

SELECT DatabaseName AS 'Database',
  type AS 'Type',
  T AS 'Total',
  U AS 'Used',
  [U(%)] AS 'Used (%)',
  F AS 'Free',
  [F(%)] AS 'Free (%)',
  PhysicalName
FROM dbo.##Tbl_CombinedInfo 
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%') 
ORDER BY DatabaseName ASC, type ASC;

실행 예시

이 저장 프로시저를 실행하려면 다음과 같이 호출합니다:

EXEC dbo.sp_SDS;

특정 데이터베이스를 대상으로 하거나 출력 단위를 조정하려면 아래와 같이 실행합니다:

EXEC dbo.sp_SDS 'your_database_name', 'Database', 1, 'GB';

결론

SQL Server 데이터베이스의 크기를 아는 것은 효과적인 용량 계획에 도움이 될 뿐만 아니라 전체 데이터베이스 관리 전략을 강화합니다. 제공된 저장 프로시저를 구현함으로써 SQL Server 데이터베이스에 대한 통찰력을 효율적으로 수집하고 최적의 성능과 자원 할당을 보장할 수 있습니다.

여러분의 경험이나 특정 요구에 맞게 스크립트를 조정한 내용이 있으시면 언제든지 공유해주세요!