sp_spaceused(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

sp_spaceused 시스템 저장 프로시저는 다음 중 하나를 표시합니다.

  • 현재 데이터베이스의 테이블, 인덱싱된 뷰 또는 Service Broker 큐에서 사용하는 행 수, 예약된 디스크 공간 및 디스크 공간

  • 전체 데이터베이스에서 예약 및 사용하는 디스크 공간

Transact-SQL 구문 표기 규칙

Syntax

sp_spaceused
    [ [ @objname = ] N'objname' ]
    [ , [ @updateusage = ] 'updateusage' ]
    [ , [ @mode = ] 'mode' ]
    [ , [ @oneresultset = ] oneresultset ]
    [ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]

참고

이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

인수

Azure Synapse Analytics 및 Analytics Platform System(PDW) sp_spaceused 의 경우 매개 변수의 서수 위치에 의존하지 않고 명명된 매개 변수(예 sp_spaceused (@objname= N'Table1');: )를 지정해야 합니다.

[ @objname = ] N'objname'

공간 사용 정보가 요청되는 테이블, 인덱싱된 뷰 또는 큐의 정규화된 이름 또는 정규화되지 않은 이름입니다. @objname 기본값NULL인 nvarchar(776)입니다. 따옴표는 정규화된 개체 이름이 지정된 경우에만 필요합니다. 정규화된 개체 이름(데이터베이스 이름 포함)이 제공된 경우 데이터베이스 이름은 현재 데이터베이스의 이름이어야 합니다.

@objname 지정하지 않으면 전체 데이터베이스에 대한 결과가 반환됩니다.

참고 항목

Azure Synapse Analytics 및 Analytics Platform System(PDW)은 데이터베이스 및 테이블 개체만 지원합니다.

[ @updateusage = ] 'updateusage'

공간 사용량 정보를 업데이트하기 위해 실행되어야 했음을 나타냅니다 DBCC UPDATEUSAGE . @updateusage 기본값false인 varchar(5)입니다. @objname 지정되지 않으면 문이 전체 데이터베이스에서 실행됩니다. 그렇지 않으면 문이 @objname 실행됩니다. 값은 true 또는 false일 수 있습니다.

[ @mode = ] 'mode'

결과의 범위를 나타냅니다. 확장된 테이블 또는 데이터베이스의 경우 @mode 매개 변수를 사용하면 개체의 원격 부분을 포함하거나 제외할 수 있습니다. 자세한 내용은 Stretch Database를 참조하십시오.

Important

Stretch Database는 SQL Server 2022(16.x) 및 Azure SQL 데이터베이스에서 사용되지 않습니다. 데이터베이스 엔진의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.

@mode varchar(11)이며 이러한 값 중 하나일 수 있습니다.

설명
ALL(기본값) 로컬 부분과 원격 부분을 포함하여 개체 또는 데이터베이스의 스토리지 통계를 반환합니다.
LOCAL_ONLY 개체 또는 데이터베이스의 로컬 부분에 대한 스토리지 통계만 반환합니다. 개체 또는 데이터베이스가 스트레치를 사용하도록 설정되지 않은 경우 @modeALL와 동일한 통계를 반환합니다.
REMOTE_ONLY 개체 또는 데이터베이스의 원격 부분에 대한 스토리지 통계만 반환합니다. 다음 조건 중 하나가 true이면 이 옵션을 사용하면 오류가 발생합니다.

테이블은 Stretch에 사용할 수 없습니다.

테이블은 Stretch에 대해 사용하도록 설정되어 있지만 데이터 마이그레이션을 사용하도록 설정한 적이 없습니다. 이 경우 원격 테이블에 스키마가 아직 없습니다.

사용자가 원격 테이블을 수동으로 삭제했습니다.

원격 데이터 아카이브의 프로비저닝은 성공의 상태 반환했지만 실제로는 실패했습니다.

[ @oneresultset = ] oneresultset

단일 결과 집합을 반환할지 여부를 나타냅니다. @oneresultset 비트이며 다음 값 중 하나일 수 있습니다.

설명
0(기본값) @objname null이거나 지정되지 않은 경우 두 개의 결과 집합이 반환됩니다.
1 @objnameNULL 지정되거나 지정되지 않은 경우 단일 결과 집합이 반환됩니다.

[ @include_total_xtp_storage = ] include_total_xtp_storage

적용 대상: SQL Server 2017(14.x) 이상 버전 및 SQL Database

@oneresultset 설정1되면 이 매개 변수는 단일 결과 집합에 스토리지에 대한 MEMORY_OPTIMIZED_DATA 열이 포함되어 있는지 여부를 결정합니다. @include_total_xtp_storage 비트이며 기본값은 .입니다0. 이 경우 1XTP 열이 결과 집합에 포함됩니다.

반환 코드 값

0 (성공) 또는 1 (실패).

결과 집합

@objname 생략되고 @oneresultset0다음 결과 집합이 반환되어 현재 데이터베이스 크기 정보를 제공합니다.

열 이름 데이터 형식 설명
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 에는 데이터 및 로그 파일이 모두 포함됩니다.
unallocated space varchar(18) 데이터베이스 개체에 예약되지 않은 데이터베이스의 공간입니다.
열 이름 데이터 형식 설명
reserved varchar(18) 데이터베이스의 개체에 의해 할당된 총 공간 크기입니다.
data varchar(18) 데이터에 사용되는 총 공간 양입니다.
index_size varchar(18) 인덱스가 사용하는 총 공간입니다.
unused varchar(18) 데이터베이스의 개체에 대해 예약되었지만 아직 사용되지 않은 총 공간 크기입니다.

@objname 생략되고 @oneresultset1현재 데이터베이스 크기 정보를 제공하기 위해 다음 단일 결과 집합이 반환됩니다.

열 이름 데이터 형식 설명
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 에는 데이터 및 로그 파일이 모두 포함됩니다.
unallocated space varchar(18) 데이터베이스 개체에 예약되지 않은 데이터베이스의 공간입니다.
reserved varchar(18) 데이터베이스의 개체에 의해 할당된 총 공간 크기입니다.
data varchar(18) 데이터에 사용되는 총 공간 양입니다.
index_size varchar(18) 인덱스가 사용하는 총 공간입니다.
unused varchar(18) 데이터베이스의 개체에 대해 예약되었지만 아직 사용되지 않은 총 공간 크기입니다.

@objname 지정하면 지정된 개체에 대해 다음 결과 집합이 반환됩니다.

열 이름 데이터 형식 설명
name nvarchar(128) 공간 사용 정보가 필요한 개체의 이름입니다.

개체의 스키마 이름이 반환되지 않습니다. 스키마 이름이 필요한 경우 sys.dm_db_partition_stats 또는 sys.dm_db_index_physical_stats 동적 관리 뷰를 사용하여 동일한 크기 정보를 가져옵니다.
rows char(20) 테이블에 존재하는 행 수입니다. 지정된 개체가 Service Broker 큐인 경우 이 열은 큐의 메시지 수를 나타냅니다.
reserved varchar(18) @objname 예약된 공간의 총 크기입니다.
data varchar(18) @objname 데이터에 사용되는 총 공간 양입니다.
index_size varchar(18) @objname 인덱스에 사용되는 총 공간 양입니다.
unused varchar(18) @objname 예약되었지만 아직 사용되지 않은 총 공간 크기입니다.

매개 변수가 지정되지 않은 경우 이 모드는 기본값입니다. 다음 결과 집합은 디스크 데이터베이스 크기 정보를 자세히 설명하는 반환됩니다.

열 이름 데이터 형식 설명
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 에는 데이터 및 로그 파일이 모두 포함됩니다. 데이터베이스에 파일 그룹이 있는 MEMORY_OPTIMIZED_DATA 경우 이 값에는 파일 그룹에 있는 모든 검사포인트 파일의 총 디스크 크기가 포함됩니다.
unallocated space varchar(18) 데이터베이스 개체에 예약되지 않은 데이터베이스의 공간입니다. 데이터베이스에 파일 그룹이 있는 MEMORY_OPTIMIZED_DATA 경우 이 값에는 파일 그룹에 상태가 PRECREATED 있는 검사포인트 파일의 총 디스크 크기가 포함됩니다.

데이터베이스의 테이블에서 사용하는 공간입니다. 디스크 사용량에 대한 테이블별 회계가 없으므로 이 결과 집합은 메모리 최적화 테이블을 반영하지 않습니다.

열 이름 데이터 형식 설명
reserved varchar(18) 데이터베이스의 개체에 의해 할당된 총 공간 크기입니다.
data varchar(18) 데이터에 사용되는 총 공간 양입니다.
index_size varchar(18) 인덱스가 사용하는 총 공간입니다.
unused varchar(18) 데이터베이스의 개체에 대해 예약되었지만 아직 사용되지 않은 총 공간 크기입니다.

다음 결과 집합은 데이터베이스에 하나 이상의 컨테이너가 있는 파일 그룹이 있는 MEMORY_OPTIMIZED_DATA 경우에만 반환됩니다.

열 이름 데이터 형식 설명
xtp_precreated varchar(18) 상태를 PRECREATED가진 검사point 파일의 총 크기(KB)입니다. 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. 예를 들어 미리 생성된 검사point 파일이 600,000KB인 경우 이 열에 포함됩니다600000 KB.
xtp_used varchar(18) 상태 UNDER CONSTRUCTIONACTIVEMERGE TARGETKB의 총 검사포인트 파일 크기입니다. 이 값은 메모리 최적화 테이블의 데이터에 적극적으로 사용되는 디스크 공간입니다.
xtp_pending_truncation varchar(18) 상태를 WAITING_FOR_LOG_TRUNCATION가진 검사point 파일의 총 크기(KB)입니다. 이 값은 로그 잘림이 발생하면 클린 대기 중인 검사point 파일에 사용되는 디스크 공간입니다.

@objname 생략하면 @oneresultset1@include_total_xtp_storage 1현재 데이터베이스 크기 정보를 제공하기 위해 다음 단일 결과 집합이 반환됩니다. @include_total_xtp_storage0 (기본값)이면 마지막 세 열이 생략됩니다.

열 이름 데이터 형식 설명
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 에는 데이터 및 로그 파일이 모두 포함됩니다. 데이터베이스에 파일 그룹이 있는 MEMORY_OPTIMIZED_DATA 경우 이 값에는 파일 그룹에 있는 모든 검사포인트 파일의 총 디스크 크기가 포함됩니다.
unallocated space varchar(18) 데이터베이스 개체에 예약되지 않은 데이터베이스의 공간입니다. 데이터베이스에 파일 그룹이 있는 MEMORY_OPTIMIZED_DATA 경우 이 값에는 파일 그룹에 상태가 PRECREATED 있는 검사포인트 파일의 총 디스크 크기가 포함됩니다.
reserved varchar(18) 데이터베이스의 개체에 의해 할당된 총 공간 크기입니다.
data varchar(18) 데이터에 사용되는 총 공간 양입니다.
index_size varchar(18) 인덱스가 사용하는 총 공간입니다.
unused varchar(18) 데이터베이스의 개체에 대해 예약되었지만 아직 사용되지 않은 총 공간 크기입니다.
xtp_precreated1 varchar(18) 상태를 PRECREATED가진 검사point 파일의 총 크기(KB)입니다. 이 값은 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다.
xtp_used1 varchar(18) 상태 UNDER CONSTRUCTIONACTIVEMERGE TARGETKB의 총 검사포인트 파일 크기입니다. 이 값은 메모리 최적화 테이블의 데이터에 적극적으로 사용되는 디스크 공간입니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다.
xtp_pending_truncation1 varchar(18) 상태를 WAITING_FOR_LOG_TRUNCATION가진 검사point 파일의 총 크기(KB)입니다. 이 값은 로그 잘림이 발생하면 클린 대기 중인 검사point 파일에 사용되는 디스크 공간입니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다.

1 @include_total_xtp_storage 설정된 1경우에만 포함됩니다.

설명

값은 database_size 일반적으로 로그 파일의 reservedunallocated space + 크기를 포함하기 때문에 합계보다 크지만 reservedunallocated_space 데이터 페이지만 고려합니다. Azure Synapse Analytics의 경우 이 설명이 사실이 아닐 수 있습니다.

XML 인덱스와 전체 텍스트 인덱스에 사용되는 페이지는 두 결과 집합에 모두 포함 index_size 됩니다. @objname 지정하면 개체에 대한 XML 인덱스 및 전체 텍스트 인덱스의 페이지도 합계 reservedindex_size 결과에 계산됩니다.

공간 인덱스인 데이터베이스 또는 개체에 대한 공간 사용량을 계산하는 경우 공간 크기 열(예: database_size, reservedindex_size)에는 공간 인덱스의 크기가 포함됩니다.

@updateusage 지정되면 SQL Server 데이터베이스 엔진 데이터베이스의 데이터 페이지를 검사하고 sys.allocation_units 각 테이블에서 사용하는 스토리지 공간과 관련하여 필요한 수정 및 sys.partitions 카탈로그 뷰를 수행합니다. 예를 들어 인덱스를 삭제한 후 테이블의 공간 정보가 최신 상태가 아닐 수 있는 경우가 있습니다. @updateusage 큰 테이블 또는 데이터베이스에서 실행하는 데 다소 시간이 걸릴 수 있습니다. 잘못된 값이 반환되는 것으로 의심되고 프로세스가 데이터베이스의 다른 사용자 또는 프로세스에 부정적인 영향을 미치지 않는 경우에만 @updateusage 사용합니다. 기본 설정인 DBCC UPDATEUSAGE 경우 별도로 실행할 수 있습니다.

참고 항목

큰 인덱스를 삭제하거나 다시 작성하거나 큰 테이블을 삭제하거나 자르면 데이터베이스 엔진 트랜잭션이 커밋될 때까지 실제 페이지 할당 취소 및 관련 잠금을 연기합니다. 지연된 삭제 작업은 할당된 공간을 즉시 해제하지 않습니다. 따라서 큰 개체를 삭제하거나 잘린 직후에 반환된 sp_spaceused 값은 사용 가능한 실제 디스크 공간을 반영하지 않을 수 있습니다.

사용 권한

실행 sp_spaceused 권한은 공용 역할에 부여됩니다. db_owner 고정 데이터베이스 역할의 멤버만 @updateusage 매개 변수를 지정할 수 있습니다.

예제

A. 테이블에 대한 디스크 공간 정보 표시

다음 예제에서는 테이블 및 해당 인덱스에 대한 Vendor 디스크 공간 정보를 보고합니다.

USE AdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO

B. 데이터베이스에 대한 업데이트된 공간 정보 표시

다음 예제에서는 현재 데이터베이스에 사용되는 공간을 요약하고 선택적 매개 변수 @updateusage 사용하여 현재 값이 반환되도록 합니다.

USE AdventureWorks2022;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

C. 스트레치 사용 테이블과 연결된 원격 테이블에 대한 공간 사용량 정보 표시

다음 예제에서는 @mode 인수를 사용하여 원격 대상을 지정하여 스트레치 사용 테이블과 연결된 원격 테이블에서 사용하는 공간을 요약합니다. 자세한 내용은 Stretch Database를 참조하세요.

USE StretchedAdventureWorks2022;
GO

EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';

D. 단일 결과 집합에서 데이터베이스에 대한 공간 사용량 정보 표시

다음 예제에서는 단일 결과 집합에서 현재 데이터베이스의 공간 사용량을 요약합니다.

USE AdventureWorks2022;
GO
EXEC sp_spaceused @oneresultset = 1;

E. 단일 결과 집합에 하나 이상의 MEMORY_OPTIMIZED 파일 그룹이 있는 데이터베이스에 대한 공간 사용량 정보 표시

다음 예제에서는 단일 결과 집합에 파일 그룹이 하나 MEMORY_OPTIMIZED 이상 있는 현재 데이터베이스의 공간 사용량을 요약합니다.

USE WideWorldImporters
GO

EXEC sp_spaceused @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '1',
    @include_total_xtp_storage = '1';
GO

F. 데이터베이스의 MEMORY_OPTIMIZED 테이블 개체에 대한 공간 사용량 정보 표시

다음 예제에서는 파일 그룹이 하나 MEMORY_OPTIMIZED 이상 있는 MEMORY_OPTIMIZED 현재 데이터베이스의 테이블 개체에 대한 공간 사용량을 요약합니다.

USE WideWorldImporters
GO

EXEC sp_spaceused @objname = N'VehicleTemparatures',
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '0',
    @include_total_xtp_storage = '1';
GO