David Baffaleuf– CAPDATA

Slides:



Advertisements
Présentations similaires
Optimisation SQL Server
Advertisements

Module Systèmes d’exploitation
CLIENT/SERVEUR SQL SERVER 7
Administration des bases de données
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 2 : Bases de données partie 2 : Fichiers, Journalisation.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 3 : Le serveur Patrick Guimonet Architecte Infrastructure Division.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 6 : Protection des données Bertrand Audras Microsoft Technology Center.
Relations avec les entity beans Michel Buffa UNSA
Plan de formation Chapitre 1 : Présentation de SAP
par le DBA de production...
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Session Haute-disponibilité
Oracle ARCHITECTURE INTERNE
Retour sur l'allocation d'espace Exemple sur une table facture (sans les tables associées) N° fact, N° Client, N° Cde, date Cde, date fact, date réglement,
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.

Mitsuru FURUTA Relations techniques développeurs Microsoft France
Gestion des annulations
Gérer les tablespaces et les fichiers de données
Serveurs Partagés Oracle
Les Webcasts Groupe des Utilisateurs SQL Server Avril 2014 – Statistiques Incrémentales Fred Pichaut – Microsoft Senior.
sauvegarde de base de données
Juin 2013 – Query memory grants
Création de bases de données
Les transactions.
OPTIMISATION DE BASE DE DONNEES ORACLE
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Réalisé par : DAAIF Jabran CHERKAOUI Khaoula ABBAR Amina BOUSTANI Sara
Fichiers de données Fichiers de contrôles Fichiers de journalisations Fichiers de paramètres d’initialisation.
Nouvelles technologies de système de fichiers dans Microsoft Windows 2000 Salim Shaker Ingénieur de support technique Support technique serveur Microsoft.
Module 8 : Surveillance des performances de SQL Server
3 Octobre 2013 Les Communautés MS. Management d’infrastructures IT hétérogènes  Support Management  Technical Management  Data Management.
PLAN ● L'instance ● Optimisations – Gestion de l'espace – La gestion des quotas – Les requêtes gourmandes – Les goulots d'étranglement ● Administration.
Les Composants de l’architecture Oracle
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Combien envisagent d’utiliser SSMA pour migrer : OracleSybaseAccess.
Yonel Grusson 1 SQL SERVER 2000 CLIENT/SERVEUR. Yonel Grusson 2 PLAN Présentation Installation Résultat de l'installation L'administration –Par le SQL.
Surveiller et résoudre le conflit de verrouillage
2 Le futur de VB et l’asynchronisme [LAN101] 08/02 14h30 Patrice Lamarche GPI
Concepts et administration
Composants de l'architecture Oracle
Gérer une instance Oracle
Les utilisateurs potentiels : Les administrateurs de bases de données, Les développeurs, Le support et les opérations, Les architectes, Les analystes.
Gérer l'instance Oracle
Gérer le fichier de contrôle
ETNA – 1ème année Guillaume Belmas –
Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien
Cours oracle n°1 Le SGBD ORACLE
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Gestion des Rollback Segments
Structure de stockage et relations
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
Gérer les utilisateurs
22 SQL Server 2008 R2 Administration & Monitoring 09/02/2010 Vincent BelletPascal Belaud ConsultantArchitecte avant-vente Microsoft FranceMicrosoft France.
PLAN ● L'instance – Création – Démarrer, Arréter et surveiller – Connexion / Utilisateurs ● Optimisations et interconnexions ● Administration et sauvegardes.
Ce que l’on doit connaître des procédures de Backup/Restore Les nouveautés dans SQL Server 2005 Les procédures de BACKUP Les procédures de RESTORE Le.
Les vues Une vue: c’est une relation virtuelle. Définie par:
COMPARAISON DES SYSTEMES DE GESTION DE FICHIERS LINUX / WINDOWS NT
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Système de gestion fichiers
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Les bases de données Séance 8 Jointures.
Module 3 : Gestion des fichiers de base de données
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
#JSS2013 Les journées SQL Server 2013 Un événement organisé par GUSS.
SQLSaturday Paris 2015 SSAS et le moteur relationnel Faire son choix.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Chapitre 10 Maintenance d'Active Directory
SQLSaturday Paris 2015 SSDT-DB pour les sceptiques! Cédric L. Charlier.
Transcription de la présentation:

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

David Baffaleuf Management d’infrastructures IT hétérogènes http://blog.capdata.fr @dbaffaleuf Management d’infrastructures IT hétérogènes www.osmozium.com Support Management Technical Management Data Management Production Management Leader SGBD reconnu en France www.capdata.fr Conseil Service Formation DBA à distance

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

Qu’est-ce qu’elle a de plus que les autres ??? Worktables, jointures hash, tris, version store … #temp, ##temp, variables table, TVF, TVP… Stockage implicite Non persistance Logging Allocation Stockage explicite Partagée Recovery Caching SPOF TVF et TVP sont considérées comme des variables tables du point de vue de l’allocation. Version store n’est pas compté dans les compteurs ‘internal’ de sys.dm_db_%%_usage

Comment est-elle créée ? sqlservr –f (minimal start) Ouverture master Création tempdev.mdf (4-5M) Création tempdev.mdf (4-5M) Recovery master Import des extents de model Création journal 516096 bytes Ouverture model Extension taille tempdev.mdf …dans le répertoire par défaut Recovery model Création templog.ldf Création tempdb Création des autres fichiers Instant File Initialization Pas de model, pas de tempdb Si le fichier tempdev / templog n’existe pas ? DEMO : montrer le temps de démarrage de SQL Server avec et sans le fichier tempdb.mdf Import des extents de model = Clearing tempdb database Création des autres fichiers = Starting tempdb 516096 bytes = taille de headers de 2 VLFs Attention le thread qui affiche recovery complete pour chaque base en cours de recovery est obligé d’attendre que la tempdb soit complètement créée car un verrou X database est posé et le thread a besoin d’utiliser tempdb. L’initialisation sera plus courte si tempdbdev.mdf existe et qu’il a une taille >= à la taille attendu pour la création. Surtout problème pour le journal car IFI ne s’applique pas. Par contre si le journal existe, on ne zéro-initialise pas tout, simplement qq enregistrements pour les premiers VLFs

Qu’est-ce qu’elle stocke ? 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…

Tables temporaires 1/2 Nommage: Allocation: Scope/durée de vie: 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 (##). Deferred drop: pas si la table < 8Mb => 2 pages sont conservées + histogramme Le nommage change lorsque la table temporaire est mise en cache Drop table #temp = truncate table #temp

Tables temporaires 2/2 [ Caching ] TF1106 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) RING_BUFFER_SPACEMGR_TRACE Nouveau RB: #temp PLAN PS SELECT INTO #temp … DEMO Drop table #temp = truncate table #temp Encore une bonne raison pour faire des procs stocks !!! DEMO: montrer la différence de vitesse entre temp cached et temp non cached. DEMO1

Tables temporaires vs variables tables ? 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

Worktables 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) sys.dm_db_%%_space_usage

Workfiles 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.

Version Store 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)

CHECKDB et Tempdb ? 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

Comment dimensionner Tempdb ? 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 Perfmon Volume Maintenance Tasks

Problèmes liés à l’allocation PFS GAM SGAM 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. GAM / SGAM interval : tous les 4Gb, pas seulement 2:1:2 ou 2:1:3 PFS interval = 64Mb pas seulement 2:1:1

Combien de fichiers de données 1/2 W W OK OK

Combien de fichiers de données 2/2 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. Proportionnal Fill / Round robin On va tourner sur les fichiers ayant au moins le même espace libre. L’application du TF1118 peut servir lorsque les tables temporaires seront systématiquement sous les 8 pages. Initialement, ces pages proviendront d’extents mixtes, et souvent différents. Activer le TF1118 permet de n’allouer que des extents dédiés uniformes. Une fois activé, il agit sur toutes les bases pas seulement tempdb. Attention toutefois les pages IAM seront toujours allouées depuis des extents mixtes. Attention TF1118 n’affecte que les tables tempo et les worktables (internal)

Proportionnal Fill / Round Robin Espace Libre Espace Libre Espace Libre 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. Proportionnal Fill / Round robin On va tourner sur les fichiers ayant au moins le même espace libre.

Combien de journaux de transactions ? 1

Tempdb sur des disques dédiés ? 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.

Logging & recovery ? 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) -- a=1 update #t set a=2 update base.dbo.t set a=2 #t t

Mesurer la contention Perfmon: SQL Trace / XEvents: DMVs: DEMO 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 DMVs: tempdb.sys.dm_db_file_space_usage tempdb.sys.dm_db_session_space_usage tempdb.sys.dm_db_task_space_usage sys.dm_os_wait_stats sys.dm_os_waiting_tasks DEMO -T1106 aide à vérifier la rotation dans les fichiers (roundrobin / proportionnal fill)

Des questions (pas dans la liste) ?

Les Webcasts Groupe des Utilisateurs SQL Server GUSS.fr