Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP...

24
Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server

Transcript of Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP...

Page 1: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Les Webcasts

Groupe des Utilisateurs SQL Server

Juin 2013 – TempdbDavid Baffaleuf– CAPDATA

MVP SQL Server

Page 2: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

David Baffaleufhttp://blog.capdata.fr @dbaffaleuf

Leader SGBD reconnu en Francewww.capdata.fr Conseil Service Formation DBA à distance

Management d’infrastructures IT hétérogèneswww.osmozium.com Support Management Technical Management Data Management Production Management

Page 3: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Toutes les • questions• que vous• vous posez • sur tempdb• … Et aussi celles que vous ne vous posez pas !• Démos !

30 ‘ chrono

Page 4: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Qu’est-ce qu’elle a de plus que les autres ???

Stockage

explicite

Stockage

implicite

Worktables, jointures hash, tris,

version store …

#temp, ##temp, variables

table, TVF, TVP…

Logging

Recovery

Allocation

Caching

Non persistan

ce

Partagée

SPOF

Page 5: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Comment est-elle créée ?

Ouverture master

Recovery master

Ouverture model

Recovery model

Création tempdev.mdf (4-5M)

Import des extents de model

Extension taille tempdev.mdf

Création tempdb

Création templog.ldf

Création des autres fichiers

• Instant File Initialization• Pas de model, pas de tempdb• Si le fichier tempdev / templog n’existe pas ?

sqlservr –f (minimal start)

Création tempdev.mdf (4-5M)

…dans le répertoire par défaut

Création journal 516096 bytes

Page 6: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Stockage explicite : Tables, indexes physiques, LOBs… (attention non persistées !!) Tables temporaires (créées par utilisateur / par feature Dbmail, UCP,

DataCollector…) Variables tables, TVF, TVP.

• Mais aussi stockage implicite: Tris ORDER BY Checkdb facts Workfiles (Hash Join) Worktables (spools, features…) Tables internes trigger Online index operations Version store…

Qu’est-ce qu’elle stocke ?

Page 7: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Nommage: #temp__________________________________________14563 ##temp

• Allocation:– Extents mixtes d’abord (sauf si –T1118)– IAM toujours en extent mixte– Extents uniformes si taille > 8 pages

• Scope/durée de vie: session / procédure (#) instance (##).

Tables temporaires 1/2

Page 8: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

PLAN PSSELECT INTO

#temp …

• Mécanismes de cache particuliers: Cachestore: CACHESTORE_MEMOBJECTS Tables systèmes. Seulement dans procédures, fonctions, triggers. 2 pages par #temp < 8Mb (DATA + IAM) Pas de DDL après la création de la table #temp (sauf DROP TABLE) Pas de contraintes nommées (index uniques / clustered supportés mais

leaf pages seulement, et 2 pages pour NCI)

Tables temporaires 2/2[ Caching ]

#temp

DEMO

TF1106

Nouveau RB:

RING_B

UFFER_

SPACEM

GR_TRA

CE

Page 9: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Pas stockées en mémoire mais bien sur disque !!• SELECT INTO non autorisé• Scope = batch ou procédure (pas session)• Mise en cache / suppression différée = temp tables.• Pas d’index• Pas de statistiques• Pas de rollback (transactions implicites sur les VT)• TVF = variable table• TVP = variable table

Tables temporaires vs variables tables ?

Page 10: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Utilisées par certaines features (XML, Service Broker, CHECKDB,…) • Utilisées par certains opérateurs :

Index / Table (Eager) Spools. Exchange Spill. Merge Joins

• Curseurs, variables type (max). • Créées par le code de l’engine, donc pas de métadonnées dessus,

pas d’accès aux tables systèmes.• Object_id < 0• Mixed / Uniform extents• Seule l’allocation est loggée !!• Espace tracé dans les DMVs

(internal_object_reserved_page_count)

Worktables

sys.dm_db_

%%_space_u

sage

Page 11: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Utilisés uniquement par l’opérateur Hash Join (recursion).• Pas de correspondance dans le buffer pool (BUF).• Espace tracé dans les DMVs

(internal_object_reserved_page_count)…• …mais pas dans sys.dm_os_buffer_descriptors.• Toujours en extents uniformes.• Aucune journalisation.

Workfiles

Page 12: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Utilisé pour RCSI / Snapshot Isolation.• Online index rebuild, • Tables internes des triggers• MARS ?...• Aucune journalisation de l’allocation dans le version store.• Allocation tracée séparément de internal dans

sys.dm_db_file_space_usage (version_store_reserved_page_count).

• Non tracée dans %session% ou %task%• Trace séparée dans sys.dm_tran_version_store.• Désallocation asynchrone (Garbage Collection)

Version Store

Page 13: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Pas de database snapshot dans tempdb pour CHECKDB !!• CHECKDB peut utiliser tempdb pour stocker les facts:

Tracer l’allocation des objets à contrôler durant le CHECKDB Suivre les liens précédent / suivant dans le chaînage Suivre les pointeurs forwarding / forwarded records Par type d’allocation: LOB, B-TREE, FILESTREAM, IAM, …

• Normalement stockés en mémoire, et dans des worktables si plus assez de place.

• 1 fact ~= 1 ligne de 5 colonnes dans une worktable. • DBCC CHECKDB (bigDB) WITH ESTIMATE_ONLY

CHECKDB et Tempdb ?

Page 14: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Ne pas laisser la taille par défaut.• Initialisation instantanée !!• DBCC CHECKDB WITH ESTIMATE_ONLY est un minimum.• Monitorer la taille, réévaluer la taille initiale au besoin.• Pas d’autogrow ! SIZE = MAXSIZE.• Pour réduire:

v > =2008 : ALTER DATABASE TEMPDB MODIFY FILE … + stop / start V < 2008: net start MSSQLSERVER /f

Comment dimensionner Tempdb ?

Perfmon Volume Maintenance Tasks

Page 15: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Contention sur PFS/GAM/SGAM Création / suppression massive de tables temporaires (proc / session) Création / suppression d’objets internes plus incontrôlable encore. Impliquent des modifications dans ces 3 pages PFS, GAM, SGAM. Impliquent des modifications dans les tables systèmes (sysschobjs,

sysallocunits, syscolpars, sysrscols…)

• Ces pages sont protégées par des latches Chaque accès en lecture / écriture nécessite d’obtenir un latch (SH/EX). On constate des attentes globales sur PAGELATCH_SH et PAGELATCH_EX Sur les ressources types : PFS (2:1:1), GAM (2:1:2) et SGAM (2:1:3), et parfois

des pages appartenant à des tables systèmes et les pages IAM.

• Les mécanismes de caching permettent de réduire cette contention Mais ne fonctionnent que pour les tables temporaires dans des procédures,

fonctions ou triggers.

Problèmes liés à l’allocationPFS GAMSGAM

Page 16: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Combien de fichiers de données 1/2

OK OK OK OK OKW W WW W

Page 17: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Bonne pratique = 1 fichier de même taille par CPU.• Observer la contention avant de multiplier les fichiers.• Attentes de type PAGELATCH_SH / PAGELATCH_EX sur :

2:1:1 PFS (=Page Free Space) 2:1:2 GAM (=Global Allocation Map) 2:1:3 SGAM (=Shared GAM)

• Ajouter des fichiers additionnels au besoin• Réévaluer la contention…• … jusqu’à disparition de la contention. • …et si le caching est insuffisant:• -T1118 pour tables < 8 pages et contention SGAM.

Combien de fichiers de données 2/2

Page 18: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Proportionnal Fill / Round Robin

EspaceLibre

EspaceLibre

EspaceLibre Espace

Libre

• Proportion réévaluée:• Au restart de l’instance (lorsque les fichiers sont créés)• Lors d’un ajout / retrait de fichier• Toutes les 8192 allocations d’extents (mixtes ou uniformes)

• Attention –T1117 s’applique à toutes les bases, pas seulement tempdb.

Page 19: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Combien de journaux de transactions ?

1

Page 20: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Les avantages: Isoler les fluctuations: moins d’impacts sur les autres bases. SSD

• Les inconvénients: Moins de disques disponibles en tout. Lissage plus difficile Précos SQLCAT 10Tb range.

Tempdb sur des disques dédiés ?

Page 21: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Images après pour INSERT / UPDATE non loggées pour les heaps (tables tempo).

• Journal de transactions utilisé uniquement pour les ROLLBACKS.• Pas de REDO.• Pas de write ahead logging => lazy commits• Auto Checkpoint exécuté seulement lorsque le journal est plein à

70%• Attention si CHECKPOINT manuel dans tempdb• Internal objects (sorts, worktables) => seule l’allocation est loggée.• Parfois même rien n’est loggé !! (workfiles, version store)

Logging & recovery ?

-- a=1update #t set a=2update base.dbo.t set a=2 #t t

Page 22: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

• Perfmon: Temp Tables Creation Rate Workfiles Created/sec Worktables Created/sec Pages Allocated/sec Free Space in tempdb (KB) Version Store Size (KB)

• SQL Trace / XEvents: Hash Warning / hash_warning Sort Warning / sort_warning Exchange Spill Event / exchange_spill

Mesurer la contention

DEMO

DMVs:tempdb.sys.dm_db_file_space_usagetempdb.sys.dm_db_session_space_usagetempdb.sys.dm_db_task_space_usagesys.dm_os_wait_statssys.dm_os_waiting_tasks

Page 23: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Des questions (pas dans la liste) ?

Page 24: Les Webcasts Groupe des Utilisateurs SQL Server Juin 2013 – Tempdb David Baffaleuf– CAPDATA MVP SQL Server.

Les Webcasts

Groupe des Utilisateurs SQL Server

GUSS.fr