sp_spaceused (Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
sp_spaceused
시스템 저장 프로시저는 다음 중 하나를 표시합니다.
현재 데이터베이스의 테이블, 인덱싱된 뷰 또는 Service Broker 큐에서 사용하는 행 수, 예약된 디스크 공간 및 디스크 공간
전체 데이터베이스에서 예약 및 사용하는 디스크 공간
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 |
개체 또는 데이터베이스의 로컬 부분에 대한 스토리지 통계만 반환합니다. 개체 또는 데이터베이스가 스트레치를 사용하도록 설정되지 않은 경우 @mode ALL 때와 동일한 통계를 반환합니다. |
REMOTE_ONLY |
개체 또는 데이터베이스의 원격 부분에 대한 스토리지 통계만 반환합니다. 다음 조건 중 하나가 true이면 이 옵션을 사용하면 오류가 발생합니다. 테이블은 Stretch에 사용할 수 없습니다. 테이블은 Stretch에 대해 사용하도록 설정되어 있지만 데이터 마이그레이션을 사용하도록 설정한 적이 없습니다. 이 경우 원격 테이블에 스키마가 아직 없습니다. 사용자가 원격 테이블을 수동으로 삭제했습니다. 원격 데이터 보관 파일을 프로비전하면 성공 상태가 반환되었지만 실제로는 실패했습니다. |
[ @oneresultset = ] oneresultset
단일 결과 집합을 반환할지 여부를 나타냅니다. @oneresultset 비트이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
0 (기본값) |
@objname null이거나 지정되지 않은 경우 두 개의 결과 집합이 반환됩니다. |
1 |
@objname NULL 지정되거나 지정되지 않은 경우 단일 결과 집합이 반환됩니다. |
[ @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
. 이 경우 1
XTP 열이 결과 집합에 포함됩니다.
반환 코드 값
0
(성공) 또는 1
(실패).
결과 집합
@objname 생략되고 @oneresultset 값이0
면 다음 결과 집합이 반환되어 현재 데이터베이스 크기 정보를 제공합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
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 생략되고 @oneresultset 값이1
면 현재 데이터베이스 크기 정보를 제공하기 위해 다음 단일 결과 집합이 반환됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
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 사용하는 검사점 파일의 총 크기(KB)입니다. 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. 예를 들어 미리 생성된 검사점 파일이 600,000KB인 경우 이 열에 포함됩니다 600000 KB . |
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
현재 데이터베이스 크기 정보를 제공하기 위해 다음 단일 결과 집합이 반환됩니다. @include_total_xtp_storage 0
(기본값)이면 마지막 세 열이 생략됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
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_precreated 1 |
varchar(18) | 상태를 PRECREATED 사용하는 검사점 파일의 총 크기(KB)입니다. 이 값은 데이터베이스 전체에서 할당되지 않은 공간으로 계산됩니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다. |
xtp_used 1 |
varchar(18) | 상태 UNDER CONSTRUCTION ACTIVE 및 MERGE TARGET KB를 사용하는 검사점 파일의 총 크기입니다. 이 값은 메모리 최적화 테이블의 데이터에 적극적으로 사용되는 디스크 공간입니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다. |
xtp_pending_truncation 1 |
varchar(18) | 상태를 WAITING_FOR_LOG_TRUNCATION 사용하는 검사점 파일의 총 크기(KB)입니다. 이 값은 로그 잘림이 발생하면 정리를 기다리는 검사점 파일에 사용되는 디스크 공간입니다. NULL 데이터베이스에 컨테이너가 하나 이상 있는 MEMORY_OPTIMIZED_DATA 파일 그룹이 없는 경우 반환합니다. |
1 @include_total_xtp_storage 설정된 1
경우에만 포함됩니다.
설명
값은 database_size
일반적으로 로그 파일의 reserved
unallocated space
+ 크기를 포함하기 때문에 합계보다 크지만 reserved
unallocated_space
데이터 페이지만 고려합니다. Azure Synapse Analytics의 경우 이 설명이 사실이 아닐 수 있습니다.
XML 인덱스와 전체 텍스트 인덱스에 사용되는 페이지는 두 결과 집합에 모두 포함 index_size
됩니다. @objname 지정하면 개체에 대한 XML 인덱스 및 전체 텍스트 인덱스의 페이지도 합계 reserved
및 index_size
결과에 계산됩니다.
공간 인덱스인 데이터베이스 또는 개체에 대한 공간 사용량을 계산하는 경우 공간 크기 열(예: database_size
, reserved
및 index_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