Your SlideShare is downloading. ×
0
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Tempdb Not your average Database
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tempdb Not your average Database

2,064

Published on

SlideDeck given to SALSSA LUG 5/16/12

SlideDeck given to SALSSA LUG 5/16/12

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,064
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Brand Transformation Presentation
  • Brand Transformation Presentation
  • Brand Transformation Presentation
  • Transcript

    • 1. It is more than just a little system database. •Joe Hellsten •Senior DBA @ rackspace
    • 2. It is installed by default but what is it? TEMPDB is the Junk Drawer of SQL Server “quoted by many” • Temporary Objects • User Objects – triggers, queries, temporary tables, variables, etc • Internal Objects – sorts, triggers, work tables, XML variables or other LOB data type variables • Version stores – Snapshot Isolation (SI), Read Committed Snapshot Isolation (RCSI), After triggers, Online index rebuilds • RCSI is cheaper than SI why? • SQL 2012 AlwaysOn Readable Secondary makes use of tempdb for statistics and enables SI, which leverages tempdb for row versioning. • Other objects that use TEMPDB  Service Broker, event notification, database mail, index creations, user- defined functions SELECT UserObjectPages =SUM(user_object_reserved_page_count), UserObjectsMB =SUM(user_object_reserved_page_count)/128.0, InternalObjectPages =SUM(internal_object_reserved_page_count), InternalObjectsMB =SUM(internal_object_reserved_page_count)/128.0, VersionStorePages =SUM(version_store_reserved_page_count), VersionStoreMB =SUM(version_store_reserved_page_count)/128.0, FreePages =SUM(unallocated_extent_page_count), FreeSpaceMB =SUM(unallocated_extent_page_count)/128.0 FROM sys.dm_db_file_space_usage;
    • 3. What makes this guy unique? It is recreated each time SQL Server is started It is modeled after the Model database If it has grown, it is reset to its default when recreated Can not have user defined file groups created Auto Shrink can not be used on TEMPDB (even though it is an option) A database snapshot can not be created on TEMPDB SQL 2012 can be on local disk for clusters THERE IS ONLY ONE TEMPDB FOR THE ENTIRE INSTANCE!
    • 4. A good starting point for configuring TEMPDBTEMPDB should reside on a different disk than systemand user dbsDepending on disk IO you might need to split the dataand log file onto different disks as wellSize TEMPDB accordinglyMake sure instant file initialization is enabled (OSSecurity Policy- enable volume maintenance)Set auto grow to a fixed value, don’t use percentageTEMPDB should be on a fast I/O subsystemMultiple equal size data files depending on contention
    • 5. Did I say CONTENTION?What is contention? Wikipedia = “competition by users of a system for the facility at the same time”•Latch contention on allocation pages • Extent allocations are tracked and managed in the data files by allocation pages. • PFS – Page Free Space. One PFS page per .5 GB of data file. Tracks how much free space each page has. Page 1 in the data file. Repeats every 8088 pages. • GAM – Global Allocation Map. One GAM page per 4 GB of data file. Tracks extents. Page 2 in the data file. Repeats every 511,232 pages. • SGAM – Shared Global Allocation Map. One SGAM page per 4 GB of data file. Tracks extents being used as shared extents. Page 3 in the data file. Repeats every 511,232 pages
    • 6. How to find contention in TEMPDB•sys.dm_os_waiting_tasks •Any tasks waiting on PageLatch or PageIOLatch SELECT session_id AS sessionid, wait_duration_ms AS wait_time_in_milliseconds, resource_description AS type_of_allocation_contention FROM sys.dm_os_waiting_tasks WHERE wait_type LIKE ‘Page%latch_%’ AND (resource_description LIKE ‘2:%’) This query will give you the session, wait duration and resource description. Resource Description is <database ID>:<file ID>:<page number>. Formula for page type is  GAM: Page ID = 2 or Page ID % 511232 SGAM: Page ID = 3 or (Page ID – 1) % 511232 PFS: Page ID = 1 or Page ID % 8088
    • 7. Raise ErrorIf exists (SELECT session_id, wait_type, wait_duration_ms, blocking_session_id, resource_description, ResourceType = Case WHEN PageID = 1 OR PageID %8088 = 0 THEN Is PFS Page WHEN PageID = 2 OR PageID % 511232 = 0 THEN Is GAM Page WHEN PageID = 3 OR (PageID - 1) % 511232 = 0 THEN Is SGAM Page ENDFROM(SELECT session_id, wait_type, wait_duration_ms, blocking_session_id, resource_description, CAST(RIGHT(resource_description, LEN(resource_description) - CHARINDEX(:, resource_description, 3)) AS INT) AS PageIDFROM sys.dm_os_waiting_tasksWHERE wait_type LIKE PAGE%LATCH_%AND resource_description LIKE 2:%) AS tab)DECLARE @StringVariable NVARCHAR(50)Set @StringVariable = (Select ResourceType = Case WHEN PageID = 1 OR PageID %8088 = 0 THEN Contention On PFS Page WHEN PageID = 2 OR PageID % 511232 = 0 THEN Contention On GAM Page WHEN PageID = 3 OR (PageID - 1) % 511232 = 0 THEN Contention On SGAM Page -- ELSE Is Not PFS, GAM, or SGAM page ENDFROM(SELECT top 1 CAST(RIGHT(resource_description, LEN(resource_description) - CHARINDEX(:, resource_description, 3)) AS INT) AS PageIDFROM sys.dm_os_waiting_tasksWHERE wait_type LIKE PAGE%LATCH_%AND resource_description LIKE 2:%) as tab)RAISERROR (@StringVariable, -- Message text. 10, -- Severity, 1 -- State ) with loggo 100
    • 8. You have contention, now what?Contention causes transactions to queue causing extended wait times.•Add more data files • How many? 1 per core, 1 per 2 cores, 1 per 4 cores • Microsoft still states 1 data file per core • In real life it depends on concurrent processes On an 8 core system how many concurrent processes can there be?•Don’t over do it - to many files can have negative impact•Create equal size files. MSSQL uses proportional fill model meaning alarger file will be used more than the others.•Multiple data files help reduce contention since each file has its own GAM,SGAM and PFS information.
    • 9. • Troubleshoot TEMPDB I/O like you would any other database• Put TEMPDB on your fastest possible drives• Put TEMPDB on the fastest RAID you can support• Avoid memory overflows that spill to tempdb.• Avoid long running queries in the version store• Pre-size Files to Avoid Auto-growthOptions for more IOPs• Put data files and log file on different sets of disks• Split the individual data files to different sets of disksNeed more IOPs Visit FUSIONIO.COM. GO with SSD’s, with over 100,000 IOPs
    • 10. Were you paying attention?How often should you back up TEMPDB?How many data files per core?How often should you shrink TEMPDB?Where should you place your TEMPDB data and log files?What does PFS, GAM and SGAM mean?
    • 11. Tim Radney, Senior DBA for a top 40 US BankPresident of “Columbus GA SQL Users Group”Robert Davis, Idera ACE, MCM, MVP

    ×