We already know that the tempdb database is a system database that contains temporary tables created by the server and by the user and always recreated each time SQL Server is restarted. Another points is that tempdb database consists of two parts: the data file(s) in the primary file group, and the tempdb log file(s).
Tempdb information
The tempdb database is a temporary workspace and SQL Server uses tempdb to perform many tasks which are given below:
Tempdb information
The tempdb database is a temporary workspace and SQL Server uses tempdb to perform many tasks which are given below:
- Storage of explicitly created temporary tables
 - Worktables that hold intermediate results that are created during query processing and sorting
 - Materialized static cursors
 - Storage of version records when snapshot isolation levels or read-committed snapshot isolation levels are used
 
In the SQL, we need to pull
the data into temporary tables from the database to do more actions to meet the
business requirements. These activities are the part of our day to day jobs which
are the main root cause for the growing temporary database. Tempdb can grow very large on some systems if a lot of ‘dirty’ queries are run that sluff a lot of data into tempdb. We should be
habitual to drop these temp tables after accomplish the tasks.
If our temporary database
is full then we should need to look and carefully examine our functions, views,
stored procedures and other data components. Test run each of them with
analyzer to know how much does it take to query the data needed. If it returns
on a longer time than expected, revise the codes to simplify.
How to Find out the correct size of tempdb?
To find the correct size
of tempdb files after a shrink operation, execute the following statement in
SQL Server Management Studio:
USE TEMPDB 
GO 
SELECT NAME,
  PHYSICAL_NAME, TYPE_DESC,  
---- convert into KB 
ACTUALSIZEKB=(SIZE*8)  
FROM  
SYS.DATABASE_FILES 
  | 
 
Many programmers don’t
consider the load of the database server when executing queries which is not a
right approach. If you think that your tempDB is growing and taking a lots of the
space of your disk then you should move your database to another location
because-
- TempDB grows big and the existing drive does not have enough space.
 - Moving TempDB to another file group which is on different physical drive helps to improve database disk read, as they can be read simultaneously.
 
Shrink tempdb
We can use to shrink the tempdb database in Microsoft SQL Server where tempdb resets to its configured size after each restart of the instance of SQL Server. A limitation of below
method is that it operates only on the default tempdb logical files tempdev and
templog. If more files are added to tempdb, you can shrink them after you
restart SQL Server as a service. All tempdb files are re-created during start-up.
ALTER DATABASE
  tempdb MODIFY FILE 
   (NAME = 'tempdev', SIZE = target_size_in_MB)
   
   --Desired target
  size for the data file 
   ALTER DATABASE tempdb MODIFY
  FILE 
   (NAME = 'templog', SIZE = target_size_in_MB) 
   --Desired target
  size for the log file 
       /* 
       Note: The file size, max size cannot be
  greater than 2147483647 in units of a page size.  
       The file growth cannot be greater than
  2147483647 in units of both page size and percentage. 
       */ 
 | 
 
Move TempDB from one drive to another drive
Before move the TempDB to another location, we should make sure that TempDB is set to autogrow and do not set a maximum size for TempDB. We need to check the file size of the tempdb becasue SQL Server locks tempdb while it is expanding and If the current drive is too full to allow autogrow events, then arrange a bigger drive, or add files to TempDB on another device. 
USE master 
GO 
---- change the
  location of tempdev file 
ALTER DATABASE
  TempDB MODIFY FILE 
(NAME =
  tempdev, FILENAME
  = 'd:datatempdb.mdf') 
GO 
---- change the
  location of templog file 
ALTER DATABASE
  TempDB MODIFY FILE 
(NAME =
  templog, FILENAME
  = 'd:datatemplog.ldf') 
GO 
 | 
 
The above commands are capable to change the physical location of the tempdb but no changes are made to TempDB till SQL Server restarts. So, we need to stop and restart SQL Server and after that it will create TempDB files in new locations.

No comments:
Post a Comment