sp_spaceused(Transact-SQL)

적용 대상:yesSQL Server(지원되는 모든 버전) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System(PDW)

현재 데이터베이스의 테이블, 인덱싱된 뷰 또는 Service Broker 큐에서 사용하는 행 수, 예약된 디스크 공간 및 디스크 공간을 표시하거나 전체 데이터베이스에서 예약하고 사용하는 디스크 공간을 표시합니다.

Topic link iconTransact-SQL 구문 규칙

Syntax

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

참고

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

인수

Azure Synapse 분석 및 분석 플랫폼 시스템(PDW) sp_spaceused 의 경우 매개 변수의 서수 위치에 의존하지 않고 명명된 매개 변수 sp_spaceused (@objname= N'Table1'); 를 지정해야 합니다.

[ @objname = ] 'objname'

공간 사용 정보가 요청된 테이블, 인덱싱된 뷰 또는 큐의 정규화되거나 정규화되지 않은 이름입니다. 정규화된 개체 이름이 지정된 경우에만 따옴표가 필요합니다. 데이터베이스 이름을 포함하는 정규화된 개체 이름인 경우 데이터베이스 이름이 반드시 현재 데이터베이스의 이름이어야 합니다.
objname을 지정하지 않으면 전체 데이터베이스에 대한 결과가 반환됩니다.
objnamenvarchar(776)이며 기본값은 NULL입니다.

참고

Azure Synapse 분석 및 분석 플랫폼 시스템(PDW)은 데이터베이스 및 테이블 개체만 지원합니다.

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

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

모드 인수에는 다음 값이 있을 수 있습니다.

Description
ALL 로컬 부분과 원격 부분을 모두 포함하는 개체 또는 데이터베이스의 스토리지 통계를 반환합니다.
LOCAL_ONLY 개체 또는 데이터베이스의 로컬 부분만 스토리지 통계를 반환합니다. 개체 또는 데이터베이스가 Stretch-enabled가 아닌 경우 = ALL과 @mode 동일한 통계를 반환합니다.
REMOTE_ONLY 개체 또는 데이터베이스의 원격 부분에 대한 스토리지 통계만 반환합니다. 이 옵션은 다음 조건 중 하나가 true이면 오류를 발생합니다.

Stretch에 대해 테이블이 사용되지 않습니다.

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

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

원격 데이터 보관 파일을 프로비전하면 성공 상태가 반환되었지만 실제로는 실패했습니다.

모드varchar(11)이며 기본값은 N'ALL'입니다.

[ @oneresultset = ] oneresultset 단일 결과 집합을 반환할지 여부를 나타냅니다. oneresultset 인수에는 다음 값이 있을 수 있습니다.

Description
0 @objname null이거나 지정되지 않은 경우 두 개의 결과 집합이 반환됩니다. 두 결과 집합이 기본 동작입니다.
1 @objname = null이거나 지정되지 않은 경우 단일 결과 집합이 반환됩니다.

oneresultset비트이며 기본값은 0입니다.

[ @include_total_xtp_storage] 'include_total_xtp_storage'적용 대상: SQL Server 2017(14.x), SQL Database.

이 경우 @oneresultset=1매개 변수 @include_total_xtp_storage 는 단일 결과 집합에 MEMORY_OPTIMIZED_DATA 스토리지에 대한 열이 포함되어 있는지 여부를 결정합니다. 기본값은 0입니다. 즉, 기본적으로(매개 변수를 생략한 경우) XTP 열이 결과 집합에 포함되지 않습니다.

반환 코드 값

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

결과 집합

objname을 생략하고 oneresultset 값이 0이면 다음 결과 집합이 반환되어 현재 데이터베이스 크기 정보를 제공합니다.

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

objname을 생략하고 oneresultset 값이 1이면 다음 단일 결과 집합이 반환되어 현재 데이터베이스 크기 정보를 제공합니다.

열 이름 데이터 형식 설명
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 데이터와 로그 파일을 모두 포함합니다.
할당되지 않은 공간 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 파일 그룹이 있는 경우 파일 그룹에 있는 모든 검사점 파일의 총 디스크 크기가 포함됩니다.
할당되지 않은 공간 varchar(18) 데이터베이스 개체용으로 예약되지 않은 데이터베이스 공간입니다. 데이터베이스에 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 경우 파일 그룹에 PRECREATED 상태인 검사점 파일의 총 디스크 크기가 포함됩니다.

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

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

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

열 이름 데이터 형식 Description
xtp_precreated varchar(18) PRECREATED 상태인 검사점 파일의 총 크기(KB)입니다. 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. [예를 들어 미리 생성된 검사점 파일이 600,000KB인 경우 이 열에는 '600000KB'가 포함됩니다.
xtp_used varchar(18) UNDER CONSTRUCTION, ACTIVE 및 MERGE TARGET 상태의 총 검사점 파일 크기(KB)입니다. 메모리 최적화 테이블의 데이터에 적극적으로 사용되는 디스크 공간입니다.
xtp_pending_truncation varchar(18) 상태 WAITING_FOR_LOG_TRUNCATION 있는 검사점 파일의 총 크기(KB)입니다. 로그 잘림이 발생하면 정리를 기다리는 검사점 파일에 사용되는 디스크 공간입니다.

objname을 생략하면 oneresultset의 값은 1이고 include_total_xtp_storage 1이면 다음 단일 결과 집합이 반환되어 현재 데이터베이스 크기 정보를 제공합니다. 0(기본값)이면 include_total_xtp_storage 마지막 세 개의 열이 생략됩니다.

열 이름 데이터 형식 Description
database_name nvarchar(128) 현재 데이터베이스의 이름입니다.
database_size varchar(18) 현재 데이터베이스의 크기(메가바이트)입니다. database_size 데이터와 로그 파일을 모두 포함합니다. 데이터베이스에 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 경우 파일 그룹에 있는 모든 검사점 파일의 총 디스크 크기가 포함됩니다.
할당되지 않은 공간 varchar(18) 데이터베이스 개체용으로 예약되지 않은 데이터베이스 공간입니다. 데이터베이스에 MEMORY_OPTIMIZED_DATA 파일 그룹이 있는 경우 파일 그룹에 PRECREATED 상태인 검사점 파일의 총 디스크 크기가 포함됩니다.
reserved varchar(18) 데이터베이스의 개체에 의해 할당된 총 공간입니다.
data varchar(18) 데이터가 사용하는 총 공간입니다.
index_size varchar(18) 인덱스가 사용하는 총 공간입니다.
unused varchar(18) 데이터베이스의 개체에 예약되었지만 아직 사용되지 않은 총 공간입니다.
xtp_precreated varchar(18) PRECREATED 상태인 검사점 파일의 총 크기(KB)입니다. 이는 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. 데이터베이스에 하나 이상의 컨테이너가 있는 memory_optimized_data 파일 그룹이 없는 경우 NULL을 반환합니다. *이 열은 다음 경우에만 @include_total_xtp_storage=1*포함됩니다.
xtp_used varchar(18) UNDER CONSTRUCTION, ACTIVE 및 MERGE TARGET 상태의 총 검사점 파일 크기(KB)입니다. 메모리 최적화 테이블의 데이터에 적극적으로 사용되는 디스크 공간입니다. 데이터베이스에 하나 이상의 컨테이너가 있는 memory_optimized_data 파일 그룹이 없는 경우 NULL을 반환합니다. *이 열은 다음 경우에만 @include_total_xtp_storage=1*포함됩니다.
xtp_pending_truncation varchar(18) 상태 WAITING_FOR_LOG_TRUNCATION 있는 검사점 파일의 총 크기(KB)입니다. 로그 잘림이 발생하면 정리를 기다리는 검사점 파일에 사용되는 디스크 공간입니다. 데이터베이스에 하나 이상의 컨테이너가 있는 memory_optimized_data 파일 그룹이 없는 경우 NULL을 반환합니다. 이 열은 다음 경우에만 @include_total_xtp_storage=1포함됩니다.

설명

database_size 일반적으로 예약된 + 공간의 합보다 큰 이유는 로그 파일의 크기를 포함하지만 예약unallocated_space 데이터 페이지만 고려하기 때문입니다. Azure Synapse Analytics의 경우 이 설명이 사실이 아닐 수 있습니다.

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

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

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

참고

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

사용 권한

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

예제

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

다음 예에서는 Vendor 테이블 및 해당 인덱스의 디스크 공간 정보를 알려 줍니다.

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

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

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

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

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

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

USE StretchedAdventureWorks2016  
GO  
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY'  

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

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

USE AdventureWorks2016  
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

참고 항목

CREATE INDEX(Transact-SQL)
CREATE TABLE(Transact-SQL)
DBCC UPDATEUSAGE(Transact-SQL)
SQL Server Service Broker
sys.allocation_units(Transact-SQL)
sys.indexes(Transact-SQL)
sys.index_columns(Transact SQL)
sys.objects(Transact-SQL)
sys.partitions(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)