tempdb 데이터베이스tempdb Database

이 항목은 다음에 적용됩니다. 예SQL Server 예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

tempdb 시스템 데이터베이스는 SQL ServerSQL Server 인스턴스 또는 SQL Database에 연결된 모든 사용자가 사용할 수 있는 전역 리소스로서The tempdb system database is a global resource that is available to all users connected to the instance of SQL ServerSQL Server or connected to SQL Database. 다음 항목을 보관하는 데 사용됩니다.Tempdb is used to hold:

  • 전역 또는 로컬 임시 테이블과 인덱스, 임시 저장 프로시저, 테이블 변수, 테이블 반환 함수에서 반환된 테이블, 커서 등 명시적으로 생성된 임시 사용자 개체.Temporary user objects that are explicitly created, such as: global or local temporary tables and indexes, temporary stored procedures, table variables, Tables returned in table-valued functions, or cursors.
  • 데이터베이스 엔진에서 만든 내부 개체.Internal objects that are created by the database engine. 이러한 개체는 다음과 같습니다.These include:

    • 스풀, 커서, 정렬 및 임시 LOB(Large Object) 저장소에 대한 중간 결과를 저장할 작업 테이블Work tables to store intermediate results for spools, cursors, sorts, and temporary large object (LOB) storage.
    • 해시 조인 또는 해시 집계 작업에 대한 작업 파일Work files for hash join or hash aggregate operations.
    • 인덱스 생성 또는 다시 작성(SORT_IN_TEMPDB가 지정된 경우), 특정 GROUP BY, ORDER BY 또는 UNION 쿼리 같은 작업의 중간 정렬 결과Intermediate sort results for operations such as creating or rebuilding indexes (if SORT_IN_TEMPDB is specified), or certain GROUP BY, ORDER BY, or UNION queries.

    참고

    각 내부 개체는 IAM 페이지와 8페이지 익스텐트를 포함하여 최소 9페이지를 사용합니다.Each internal object uses a minimum of nine pages; an IAM page and an eight-page extent. 페이지 및 익스텐트에 대한 자세한 내용은 페이지 및 익스텐트를 참조하세요.For more information about pages and extents, see Pages and Extents.

    중요

    Azure SQL Database는 tempdb에 저장되고 데이터베이스 수준을 범위로 하는 전역 임시 테이블 및 전역 임시 저장 프로시저를 지원합니다.Azure SQL Database supports global temporary tables and global temporary stored procedures that are stored in tempdb and are scoped to the database level. 전역 임시 테이블 및 전역 임시 저장 프로시저는 동일한 Azure SQL 데이터베이스 내의 모든 사용자 세션에서 공유합니다.Global temporary tables and global temporary stored procedures are shared for all users’ sessions within the same Azure SQL database. 다른 Azure SQL 데이터베이스의 사용자 세션은 전역 임시 테이블에 액세스할 수 없습니다.User sessions from other Azure SQL databases cannot access global temporary tables. 자세한 내용은 데이터베이스 범위 전역 임시 테이블(Azure SQL Database)을 참조하세요.For more information, see Database scoped global temporary tables (Azure SQL Database).

  • 버전 저장소는 행 버전 관리를 사용하는 기능을 지원하는 데 필요한 데이터 행을 보관하는 데이터 페이지 모음입니다.Version stores, which are a collection of data pages that hold the data rows that are required to support the features that use row versioning. 버전 저장소에는 일반 버전 저장소와 온라인 인덱스 작성 버전 저장소가 있습니다.There are two version stores: a common version store and an online-index-build version store. 버전 저장소에는 다음 정보가 포함됩니다.The version stores contain:

    • 행 버전 관리 격리를 사용하여 커밋된 읽기 또는 스냅숏 격리 트랜잭션을 사용하는 데이터베이스의 데이터 수정 트랜잭션에서 생성된 행 버전Row versions that are generated by data modification transactions in a database that uses read-committed using row versioning isolation or snapshot isolation transactions.
    • 온라인 인덱스 작업, MARS(Multiple Active Result Sets) 및 AFTER 트리거 같은 기능에 대한 데이터 수정 트랜잭션에서 생성된 행 버전Row versions that are generated by data modification transactions for features, such as: online index operations, Multiple Active Result Sets (MARS), and AFTER triggers.

트랜잭션을 롤백할 수 있도록 tempdb 내의 작업은 최소한으로 로깅됩니다.Operations within tempdb are minimally logged so that transactions can be rolled back. 시스템이 항상 깨끗한 데이터베이스 복사본으로 시작되도록를 시작할 때마다 tempdb SQL ServerSQL Server 가 다시 생성됩니다.tempdb is re-created every time SQL ServerSQL Server is started so that the system always starts with a clean copy of the database. 연결이 끊길 때 임시 테이블 및 저장 프로시저는 자동으로 제거되고 시스템이 종료될 때 활성 상태인 연결이 없습니다.Temporary tables and stored procedures are dropped automatically on disconnect, and no connections are active when the system is shut down. 따라서 tempdb 에 있는 어떠한 내용도 SQL ServerSQL Server 의 한 세션에서 다른 세션으로 저장되지 않습니다.Therefore, there is never anything in tempdb to be saved from one session of SQL ServerSQL Server to another. tempdb에서는 백업 및 복원 작업이 허용되지 않습니다.Backup and restore operations are not allowed on tempdb.

SQL Server에서 tempdb의 물리적 속성Physical Properties of tempdb in SQL Server

다음 표에는 Model 데이터베이스에 대한 기본값을 기반으로 하는 SQL Server의 tempdb 데이터 및 로그 파일의 초기 구성 값이 나열되어 있습니다.The following table lists the initial configuration values of the tempdb data and log files in SQL Server, which are based on the defaults for the Model database. 이러한 파일의 크기는 SQL ServerSQL Server버전에 따라 조금씩 다를 수 있습니다.The sizes of these files may vary slightly for different editions of SQL ServerSQL Server.

파일File 논리적 이름Logical name 물리적 이름Physical name 처음 크기Initial size 파일 증가File growth
주 데이터Primary data tempdevtempdev tempdb.mdftempdb.mdf 8MB8 megabytes 디스크가 꽉 찰 때까지 64MB씩 자동 증가Autogrow by 64 MB until the disk is full
보조 데이터 파일*Secondary data files* temp#temp# tempdb_mssql_#.ndftempdb_mssql_#.ndf 8MB8 megabytes 디스크가 꽉 찰 때까지 64MB씩 자동 증가Autogrow by 64 MB until the disk is full
LogLog templogtemplog templog.ldftemplog.ldf 8MB8 megabytes 최대 2TB까지 64MB씩 자동 증가Autogrow by 64 megabytes to a maximum of 2 terabytes

* 파일의 수는 컴퓨터의 논리 프로세서 수에 따라 달라집니다.* The number of files depends on the number of (logical) processors on the machine. 일반적으로 논리 프로세서의 수가 8 이하인 경우 논리 프로세서와 같은 수의 데이터 파일을 사용합니다.As a general rule, if the number of logical processors is less than or equal to eight, use the same number of data files as logical processors. 논리 프로세서의 수가 8보다 클 경우 8개의 데이터 파일을 사용합니다. 그런 다음에도 경합이 계속될 경우 경합이 허용 가능한 수준으로 감소할 때까지 데이터 파일의 수를 4의 배수로 늘리거나 작업/코드를 변경합니다.If the number of logical processors is greater than eight, use eight data files and then if contention continues, increase the number of data files by multiples of 4 until the contention is reduced to acceptable levels or make changes to the workload/code.

참고

데이터 파일 수의 기본값은 KB 2154845의 일반 지침을 기준으로 합니다.The default value for the number of data files is based on the general guidelines in KB 2154845.

SQL Server에서 tempdb 데이터 및 로그 파일 이동Moving the tempdb data and log files in SQL Server

tempdb 데이터 및 로그 파일을 이동하려면 시스템 데이터베이스 이동을 참조하세요.To move the tempdb data and log files, see Move System Databases.

SQL Server에서 tempdb에 대한 데이터베이스 옵션Database Options for tempdb in SQL Server

다음 표에는 tempdb 데이터베이스에 있는 각 데이터베이스 옵션의 기본값과 해당 옵션의 수정 가능 여부가 나열되어 있습니다.The following table lists the default value for each database option in the tempdb database and whether the option can be modified. 이러한 옵션의 현재 설정을 보려면 sys.databases 카탈로그 뷰를 사용하세요.To view the current settings for these options, use the sys.databases catalog view.

데이터베이스 옵션Database option 기본값Default value 수정 가능Can be modified
ALLOW_SNAPSHOT_ISOLATIONALLOW_SNAPSHOT_ISOLATION OFFOFF Yes
ANSI_NULL_DEFAULTANSI_NULL_DEFAULT OFFOFF Yes
ANSI_NULLSANSI_NULLS OFFOFF Yes
ANSI_PADDINGANSI_PADDING OFFOFF Yes
ANSI_WARNINGSANSI_WARNINGS OFFOFF Yes
ARITHABORTARITHABORT OFFOFF Yes
AUTO_CLOSEAUTO_CLOSE OFFOFF 아니요No
AUTO_CREATE_STATISTICSAUTO_CREATE_STATISTICS ONON Yes
AUTO_SHRINKAUTO_SHRINK OFFOFF 아니요No
AUTO_UPDATE_STATISTICSAUTO_UPDATE_STATISTICS ONON Yes
AUTO_UPDATE_STATISTICS_ASYNCAUTO_UPDATE_STATISTICS_ASYNC OFFOFF Yes
CHANGE_TRACKINGCHANGE_TRACKING OFFOFF 아니요No
CONCAT_NULL_YIELDS_NULLCONCAT_NULL_YIELDS_NULL OFFOFF Yes
CURSOR_CLOSE_ON_COMMITCURSOR_CLOSE_ON_COMMIT OFFOFF Yes
CURSOR_DEFAULTCURSOR_DEFAULT GLOBALGLOBAL Yes
데이터베이스 가용성 옵션Database Availability Options ONLINEONLINE

MULTI_USERMULTI_USER

READ_WRITEREAD_WRITE
아니요No

아니요No

아니요No
DATE_CORRELATION_OPTIMIZATIONDATE_CORRELATION_OPTIMIZATION OFFOFF Yes
DB_CHAININGDB_CHAINING ONON 아니요No
ENCRYPTIONENCRYPTION OFFOFF 아니요No
MIXED_PAGE_ALLOCATIONMIXED_PAGE_ALLOCATION OFFOFF 아니요No
NUMERIC_ROUNDABORTNUMERIC_ROUNDABORT OFFOFF Yes
PAGE_VERIFYPAGE_VERIFY SQL ServerSQL Server새 설치의 경우 CHECKSUM입니다.CHECKSUM for new installations of SQL ServerSQL Server.

SQL ServerSQL Server업그레이드의 경우 NONE입니다.NONE for upgrades of SQL ServerSQL Server.
Yes
PARAMETERIZATIONPARAMETERIZATION SIMPLESIMPLE Yes
QUOTED_IDENTIFIERQUOTED_IDENTIFIER OFFOFF Yes
READ_COMMITTED_SNAPSHOTREAD_COMMITTED_SNAPSHOT OFFOFF 아니요No
RECOVERYRECOVERY SIMPLESIMPLE 아니요No
RECURSIVE_TRIGGERSRECURSIVE_TRIGGERS OFFOFF Yes
Service Broker 옵션Service Broker Options ENABLE_BROKERENABLE_BROKER Yes
TRUSTWORTHYTRUSTWORTHY OFFOFF 아니요No

이러한 데이터베이스 옵션에 대한 자세한 내용은 ALTER DATABASE SET 옵션(Transact-SQL)을 참조하세요.For a description of these database options, see ALTER DATABASE SET Options (Transact-SQL).

SQL Database의 Tempdb 데이터베이스Tempdb database in SQL Database

DTU 기반 서비스 계층에 대한 tempdb 크기tempdb sizes for DTU-based service tiers

SLOSLO 최대 Tempdb 데이터 파일 크기(MB)Max Tempdb Data File Size (MBs) tempdb 데이터 파일 수# of tempdb data files 최대 tempdb 데이터 크기(MB)Max tempdb data size (MB)
BasicBasic 14,22514,225 11 14,22514,225
S0S0 14,22514,225 11 14,22514,225
S1S1 14,22514,225 11 14,22514,225
S2S2 14,22514,225 11 14,22514,225
S3S3 32,76832,768 11 32,76832,768
S4S4 32,76832,768 22 65,53665,536
S6S6 32,76832,768 33 98,30498,304
S7S7 32,76832,768 66 196,608196,608
S9S9 32,76832,768 1212 393,216393,216
S12S12 32,76832,768 1212 393,216393,216
P1P1 32,76832,768 1212 393,216393,216
P2P2 32,76832,768 1212 393,216393,216
P4P4 32,76832,768 1212 393,216393,216
P6P6 32,76832,768 1212 393,216393,216
P11P11 32,76832,768 1212 393,216393,216
P15P15 32,76832,768 1212 393,216393,216
프리미엄 탄력적 풀(모든 DTU 구성)Premium Elastic Pools (all DTU configurations) 14,22514,225 1212 170,700170,700
표준 탄력적 풀(모든 DTU 구성)Standard Elastic Pools (all DTU configurations) 14,22514,225 1212 170,700170,700
기본 탄력적 풀(모든 DTU 구성)Basic Elastic Pools (all DTU configurations) 14,22514,225 1212 170,700170,700

vCore 기반 서비스 계층에 대한 tempdb 크기tempdb sizes for vCore-based service tiers

vCore 기반 리소스 제한 참조See vCore-based resource limits

RestrictionsRestrictions

다음 작업은 tempdb 데이터베이스에서 수행할 수 없습니다.The following operations cannot be performed on the tempdb database:

  • 파일 그룹 추가Adding filegroups.
  • 데이터베이스 백업 또는 복원Backing up or restoring the database.
  • 데이터 정렬 변경.Changing collation. 기본 데이터 정렬은 서버 데이터 정렬입니다.The default collation is the server collation.
  • 데이터베이스 소유자 변경.Changing the database owner. tempdbsa가 소유합니다.tempdb is owned by sa.
  • 데이터베이스 스냅숏 만들기Creating a database snapshot.
  • 데이터베이스 삭제Dropping the database.
  • 데이터베이스에서 guest 사용자 삭제Dropping the guest user from the database.
  • 변경 데이터 캡처 설정Enabling change data capture.
  • 데이터베이스 미러링 참여Participating in database mirroring.
  • 주 파일 그룹, 주 데이터 파일 또는 로그 파일 제거Removing the primary filegroup, primary data file, or log file.
  • 데이터베이스 또는 주 파일 그룹 이름 바꾸기Renaming the database or primary filegroup.
  • DBCC CHECKALLOC 실행Running DBCC CHECKALLOC.
  • DBCC CHECKCATALOG 실행Running DBCC CHECKCATALOG.
  • 데이터베이스를 OFFLINE으로 설정Setting the database to OFFLINE.
  • 데이터베이스나 주 파일 그룹을 READ_ONLY로 설정Setting the database or primary filegroup to READ_ONLY.

사용 권한Permissions

모든 사용자가 tempdb에 임시 개체를 만들 수 있습니다.Any user can create temporary objects in tempdb. 사용자가 추가 사용 권한을 받는 경우를 제외하고 자신의 고유 개체에만 액세스할 수 있습니다.Users can only access their own objects, unless they receive additional permissions. tempdb 연결 권한을 취소하여 사용자가 tempdb를 사용하지 못하도록 할 수 있지만 일부 일상적인 작업에서 tempdb를 사용해야 하므로 권장하지 않습니다.It is possible to revoke the connect permission to tempdb to prevent a user from using tempdb, but is not recommended as some routine operations require the use of tempdb.

SQL Server에서 tempdb 성능 최적화Optimizing tempdb performance in SQL Server

tempdb 데이터베이스의 크기와 물리적인 배치는 시스템 성능에 영향을 줄 수 있습니다.The size and physical placement of the tempdb database can affect the performance of a system. 예를 들어 tempdb에 대해 정의된 크기가 너무 작으면 사용자가 SQL ServerSQL Server 인스턴스를 다시 시작할 때마다 시스템의 처리 로드 중 일부가 작업을 지원하는 데 필요한 크기로 tempdb를 자동 증가시키기 위해 소모될 수 있습니다.For example, if the size that is defined for tempdb is too small, part of the system-processing load may be taken up with autogrowing tempdb to the size required to support the workload every time you restart the instance of SQL ServerSQL Server.

가능하면 데이터 파일 증가 작업의 성능을 향상시키기 위해 데이터베이스 인스턴트 파일 초기화를 사용합니다.If possible, use database instant file initialization to improve the performance of data file grow operations.

환경의 일반적인 작업량을 수용할 수 있는 값으로 파일 크기를 설정하여 모든 tempdb 파일에 충분한 공간을 미리 할당합니다.Preallocate space for all tempdb files by setting the file size to a value large enough to accommodate the typical workload in the environment. 미리 할당하면 tempdb가 너무 자주 확장되어 성능에 영향을 주는 것을 방지할 수 있습니다.Preallocation prevents tempdb from expanding too frequently, which affects performance. tempdb 데이터베이스가 자동 증가되도록 설정해야 하지만 이 기능은 예기치 않은 예외 발생 시 디스크 공간을 늘리기 위해 사용해야 합니다.The tempdb database should be set to autogrow, but this should be used to increase disk space for unplanned exceptions.

SQL ServerSQL Server에서는 여유 공간이 더 많은 파일에서 할당을 선호하는 비례 채우기 알고리즘을 사용하기 때문에 데이터 파일은 각 파일 그룹 내에서 동일한 크기여야 합니다.Data files should be of equal size within each filegroup, as SQL ServerSQL Server uses a proportional-fill algorithm that favors allocations in files with more free space. tempdb를 동일한 크기의 여러 데이터 파일로 나누면 tempdb를 사용하는 작업에서 높은 수준의 병렬 효율성을 얻을 수 있습니다.Dividing tempdb into multiple data files of equal size provides a high degree of parallel efficiency in operations that use tempdb.

파일 증가분을 적정 크기로 설정하여 tempdb 데이터베이스 파일 증가 단위가 너무 작지 않게 합니다.Set the file growth increment to a reasonable size to avoid the tempdb database files from growing by too small a value. tempdb에 기록되는 데이터 양에 비해 파일 증가 단위가 너무 작으면 tempdb가 지속적으로 확장되어야 하므로 성능에 영향을 줄 수 있습니다.If the file growth is too small, compared to the amount of data that is being written to tempdb, tempdb may have to constantly expand and affect performance.

현재 tempdb 크기 및 성장 매개 변수를 확인하려면 다음 쿼리를 사용합니다.To check current tempdb size and growth parameters, use the following query:

SELECT name AS FileName, 
   size*1.0/128 AS FileSizeinMB,
   CASE max_size 
       WHEN 0 THEN 'Autogrowth is off.'
       WHEN -1 THEN 'Autogrowth is on.'
       ELSE 'Log file grows to a maximum size of 2 TB.'
   END,
   growth AS 'GrowthValue',
   'GrowthIncrement' = 
       CASE
           WHEN growth = 0 THEN 'Size is fixed.'
           WHEN growth > 0 AND is_percent_growth = 0 
               THEN 'Growth value is in 8-KB pages.'
           ELSE 'Growth value is a percentage.'
       END
FROM tempdb.sys.database_files;
GO

tempdb 데이터베이스를 고속 I/O 하위 시스템에 배치합니다.Put the tempdb database on a fast I/O subsystem. 직접 연결되어 있는 디스크가 많으면 디스크 스트라이프를 사용합니다.Use disk striping if there are many directly attached disks. tempdb 데이터 파일의 개별 또는 그룹은 I/O 병목 현상이 발생하지 않는 한, 다른 디스크나 스핀들에 있을 필요는 없습니다.Individual or groups of tempdb data files do not necessarily need to be on different disks or spindles unless you are also encountering I/O bottlenecks.

사용자 데이터베이스에 사용되는 디스크와는 다른 디스크에 tempdb 데이터베이스를 배치합니다.Put the tempdb database on disks that differ from those that are used by user databases.

SQL Server tempdb의 성능 향상Performance improvements in tempdb for SQL Server

SQL Server 2016(13.x)SQL Server 2016 (13.x)부터, tempdb 성능은 다음과 같은 방법으로 더욱 최적화되었습니다.Starting with SQL Server 2016(13.x)SQL Server 2016 (13.x), tempdb performance is further optimized in the following ways:

  • 임시 테이블과 테이블 변수가 캐시됩니다.Temporary tables and table variables are cached. 캐싱을 사용하면 임시 개체를 삭제하고 만드는 작업이 매우 신속하게 실행되며 페이지 할당 경합이 줄어듭니다.Caching allows operations that drop and create the temporary objects to execute very quickly and reduces page allocation contention.
  • 사용되는 UP(업데이트) 래치 수가 감소하도록 할당 페이지 래치 프로토콜이 개선되었습니다.Allocation page latching protocol is improved to reduce the number of UP (update) latches that are used.
  • tempdb 로그 파일의 디스크 I/O 대역폭 사용량을 줄일 수 있도록 tempdb의 로깅 오버헤드가 감소했습니다.Logging overhead for tempdb is reduced to reduce disk I/O bandwidth consumption on the tempdb log file.
  • 설치 시에는 새 인스턴스를 설치하는 동안 tempdb 데이터 파일이 여러 개 추가됩니다.Setup adds multiple tempdb data files during a new instance installation. 데이터베이스 엔진 구성 섹션의 새 UI 입력 컨트롤과 명령줄 매개 변수 /SQLTEMPDBFILECOUNT를 사용하여 이 태스크를 수행할 수 있습니다.This task can be accomplished with the new UI input control on the Database Engine Configuration section and a command-line parameter /SQLTEMPDBFILECOUNT. 설치 시에는 기본적으로 논리 프로세서 수나 8 중에서 더 적은 숫자에 해당하는 만큼의 tempdb 데이터 파일이 추가됩니다.By default, setup adds as many tempdb data files as the logical processor count or eight, whichever is lower.
  • tempdb 데이터 파일이 여러 개이면 모든 파일은 증가 설정에 따라 동시에 같은 크기만큼 증가합니다.When there are multiple tempdb data files, all files autogrow at same time and by the same amount depending on growth settings. 추적 플래그 1117은 더 이상 필요하지 않습니다.Trace flag 1117 is no longer required.
  • tempdb 의 모든 할당에는 단일 익스텐트가 사용됩니다.All allocations in tempdb use uniform extents. 추적 플래그 1118은 더 이상 필요하지 않습니다.Trace flag 1118 is no longer required.
  • 주 파일 그룹의 경우 AUTOGROW_ALL_FILES 속성이 설정되며 속성을 수정할 수 없습니다.For the primary filegroup, the AUTOGROW_ALL_FILES property is turned on and the property cannot be modified.

SQL Server의 tempdb 용량 계획Capacity Planning for tempdb in SQL Server

SQL Server 프로덕션 환경에서 tempdb의 적절한 크기는 많은 요인에 따라 결정됩니다.Determining the appropriate size for tempdb in a SQL Server production environment depends on many factors. 이 문서의 앞부분에서 설명한 것처럼 기존 작업, 사용된 SQL ServerSQL Server 기능 등이 이러한 요인에 포함됩니다.As described previously in this article, these factors include the existing workload and the SQL ServerSQL Server features that are used. SQL Server 테스트 환경에서 다음 태스크를 수행하여 기존 작업을 분석하는 것이 좋습니다.We recommend that you analyze the existing workload by performing the following tasks in a SQL Server test environment:

  • tempdb에 대해 자동 증가를 설정합니다.Set autogrow on for tempdb.
  • 개별 쿼리 또는 작업 추적 파일을 실행하고 tempdb 공간 사용을 모니터링합니다.Execute individual queries or workload trace files and monitor tempdb space use.
  • 인덱스 다시 작성 및 tempdb 공간 모니터링 같은 인덱스 유지 관리 작업을 실행합니다.Execute index maintenance operations, such as rebuilding indexes and monitor tempdb space.
  • 이전 단계의 공간 사용 값을 사용하여 전체 작업 사용량을 예측하고 예상 동시 작업에 대해 이 값을 조정한 다음 tempdb의 크기를 알맞게 설정합니다.Use the space-use values from the previous steps to predict your total workload usage; adjust this value for projected concurrent activity, and then set the size of tempdb accordingly.

tempdb 사용 모니터링 방법How to Monitor tempdb use

tempdb에 디스크 공간이 부족하면 SQL ServerSQL Server 프로덕션 환경에 심각한 장애가 발생할 수 있으며 실행 중인 응용 프로그램이 작업을 완료하지 못할 수 있습니다.Running out of disk space in tempdb can cause significant disruptions in the SQL ServerSQL Server production environment and can prevent applications that are running from completing operations. sys.dm_db_file_space_usage 동적 관리 뷰를 사용하여 tempdb 파일에서 사용되는 디스크 공간을 모니터링할 수 있습니다.You can use the sys.dm_db_file_space_usage dynamic management view to monitor the disk space that is used in the tempdb files:

-- Determining the Amount of Free Space in tempdb
SELECT SUM(unallocated_extent_page_count) AS [free pages], 
 (SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount Space Used by the Version Store
SELECT SUM(version_store_reserved_page_count) AS [version store pages used],
 (SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by Internal Objects
SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],
 (SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]
FROM sys.dm_db_file_space_usage;
-- Determining the Amount of Space Used by User Objects
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],
 (SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

또한 sys.dm_db_session_space_usagesys.dm_db_task_space_usage 동적 관리 뷰를 사용하면 세션이나 태스크 수준에서 tempdb의 페이지 할당 또는 할당 취소 작업을 모니터링할 수 있습니다.Additionally, to monitor the page allocation or deallocation activity in tempdb at the session or task level, you can use the sys.dm_db_session_space_usage and sys.dm_db_task_space_usage dynamic management views. 이러한 뷰를 사용하면 tempdb 디스크 공간을 많이 사용하는 큰 쿼리, 임시 테이블 또는 테이블 변수를 식별할 수 있습니다.These views can be used to identify large queries, temporary tables, or table variables that are using lots of tempdb disk space. 또한 tempdb에서 사용 가능한 여유 공간과 tempdb를 사용 중인 리소스를 모니터링하는 데 사용할 수 있는 여러 가지 카운터가 있습니다.There are also several counters that can be used to monitor the free space that is available in tempdb and also the resources that are using tempdb. 자세한 내용은 다음 섹션을 참조하세요.For more information, see the next section.

-- Obtaining the space consumed by internal objects in all currently running tasks in each session
SELECT session_id, 
 SUM(internal_objects_alloc_page_count) AS task_internal_objects_alloc_page_count,
 SUM(internal_objects_dealloc_page_count) AS task_internal_objects_dealloc_page_count 
FROM sys.dm_db_task_space_usage 
GROUP BY session_id;
-- Obtaining the space consumed by internal objects in the current session for both running and completed tasks
SELECT R2.session_id,
 R1.internal_objects_alloc_page_count 
 + SUM(R2.internal_objects_alloc_page_count) AS session_internal_objects_alloc_page_count,
 R1.internal_objects_dealloc_page_count 
 + SUM(R2.internal_objects_dealloc_page_count) AS session_internal_objects_dealloc_page_count
FROM sys.dm_db_session_space_usage AS R1 
INNER JOIN sys.dm_db_task_space_usage AS R2 ON R1.session_id = R2.session_id
GROUP BY R2.session_id, R1.internal_objects_alloc_page_count, 
 R1.internal_objects_dealloc_page_count;;

인덱스에 대한 SORT_IN_TEMPDB 옵션SORT_IN_TEMPDB Option For Indexes
시스템 데이터베이스System Databases
sys.databases(Transact-SQL)sys.databases (Transact-SQL)
sys.master_files(Transact-SQL)sys.master_files (Transact-SQL)
데이터베이스 파일 이동Move Database Files

참고 항목See Also

SQL Server 2005에서의 tempdb 사용Working with tempdb in SQL Server 2005
tempdb의 디스크 공간 부족 문제 해결Troubleshooting Insufficient Disk Space in tempdb