Objectifs
Connaissance et compréhension des chemins d’accès
Analyser la Plan_Table
Maîtriser les performances du langage SQL
Configurer la mémoire et les paramètres système de DB2
Prérequis - Participants
Moyens pédagogiques & techniques
Programme
Chemins d’accès
Rôle de l’optimiseur
Chemins d’accès
Tablespace Scan
Index Scan
Multiple Access Index Path
Direct Row Access
Prefetch
Sequential Prefetch
List Sequential Prefetch
Dynamic Prefetch
Partition Scan
Jointure
Nested Loop
Jointure cartésienne
Merge Scan
Hybrid Join
Coût d’une jointure
Sous-requêtes : Simple, Corrélée
Traitement des vues
Les prédicats
Caractéristiques des prédicats
Traitement des prédicats
Tableau des prédicats
Evaluation des prédicats
Prédicats de jointure
Sur clause ON Jointure sur des colonnes de longueur différente
Prédicats composés
Exemple d’accès
Fonctions scalaires
Colonnes VARCHAR
Evaluation des fonctions colonnes
Prédicat avec IN liste de valeurs, avec IN sous-requête
Transformation des sous requêtes simples, corréllées
Transformation de NOT IN en NOT EXISTS
Evaluation étape 1 vs étape 2
Fermeture transitive des prédicats
Distribution des valeurs
Réoptimisation à l?exécution
EXPLAIN et PLAN_TABLE
Rôle de l’EXPLAIN
Syntaxe de l’EXPLAIN
Structure de la PLAN_TABLE
Colonnes de la PLAN_TABLE
Lecture sur PLAN_TABLE
Exemples d’EXPLAIN
Accès à une table
Fonctions colonnes
Prédicat LIKE
Jointure de 2 tables
Jointure de 4 tables
Sous-requête simple
Transformation de sous-requête simple
Transformation de NOT IN en NOT EXISTS
Transformation de sous-requête corrélée
Matérialisation des vues
Accès Index Only
Prédicat IN vs opérateur OR
UNION ALL
Gestion du tri final
Mécanisme
Exemple
Prédicats additionnels
La table DSN_FUNCTION_TABLE
PLAN_TABLES « cachées »
Présentation
PREDICATE_TABLE
Structure, Colonnes, Exemples
COST_TABLE
Structure, Colonnes, Exemples
REFERENCE_TABLE
Structure, Colonnes, Exemples
STRUCTURE_TABLE
Structure, Colonnes
ESTIMATES_TABLE
Structure, Colonnes
OUTER et STAR JOINS
OUTER JOIN
Définition
Remarques sur LEFT et RIGHT JOIN
Remarques sur FULL JOIN
Extension de la clause ON
Classification des prédicats
D’accès aux tables
Pendant jointure
Après étape de jointure
Après jointure finale
Mise en garde
Simplification des prédicats
Evaluation des prédicats
Suppression des tables intermédiaires
Fermeture transitive des prédicats
Fusion et matérialisation
évolution des prédicats
STAR JOIN
Modèle en étoile
Définition
Mise en œuvre
Considérations de performance
Méthode de résolution
Recommandations sur les index
Ordre des colonnes de l’index de faits
PARALLELISME
Introduction
Parallélisme I/O
Parallélisme CPU
Parallélisme SYSPLEX
Evolution
Vocabulaire
Partitionnement logique
Accès aux données
Exemples d’EXPLAIN
Jointure entre 2 tables
Accès IN liste
LES FACTEURS DE FILTRAGE
Définition
Prédicats Simples
Formules
Exemples
Prédicats composés
Formules
Opérateur AND
Opérateur OR
Cas particuliers
Exemples
Distribution non uniforme
ACCESS PATH HINT
Présentation
Mise en œuvre
Paramétrage système
BIND package/plan
Ordre SET
Fonctionnement
Mise à jour manuelle de la PLAN_TABLE
Recommandations
Messages d’information
Option QUERYNO
Impact sur le catalogue
Exemple
PREDICTIVE GOVERNOR
Rappels sur RLF
Introduction
Table DSN_STATEMNT_TABLE
Exemple
Table DSNRLSTXX
Fonctionnement
Contrôles préventif
Contrôles préventif et réactif
SQLCODES
Impact des options de BIND
DEFER(PREPARE)
REOPT(VARS
Caching Dynamique
DESIGN APPLICATIF
Programmation : généralités
Comparaisons sur jointure
Impact des chemins d’accès
COMMIT & ROLLBACK
Durée des COMMITs et ROLLBACKs
Curseurs évolués
Scrollable Cursor
Sensitive Cursor
Mise en œuvre
Programmation TP
SELECT OPTIMIZE FOR
FETCH FIRST n ROWS ONLY
Programmation BATCH
Généralités
Absence de points de COMMIT
Prise de points de COMMIT
Restauration des bases
COPY vs QUIESCE
Programme Restartable
Parallélisme des traitements, Parallélisme et Partitionnement
Réoptimistation à l’exécution
MECANISME INTERNES : CONCEPTS
Présentation Générale
Environnement technique de DB2
DB2I et SPUFI
Famille DB2 et produits non IBM
Les espaces adresses de DB2
System Services
Database Services
IRLM
Communication des sous-systèmes
Attachment TSO
Communication des sites
CONNEXIONS ET THREADS
Connexion et threads
Identifiants des connexions
Two-phase Commit : principes
Etat des threads
Résolution des threads
Threads Indoubt
Création d’un thread
Terminaison d’un thread
DEMARRAGE ET ARRET DE DB2
Installation de DB2
Démarrage de DB2
Syntaxe, paramètres et messages
Action sur Log au redémarrage
Log Initialization
Current Status Rebuild
Forward Log Recovery et Fast Log Apply
Backward Log Recovery
Consistent Restart
Présentation et mise en œuvre
Nouveaux états
Commande RECOVER POSTPONED
Objets Deferred
Redémarrage conditionnel
Syntaxe, Paramètres et exemple
Conséquences
Arrêt de DB2
Messages
PARAMETRAGE SYSTEME
Paramètres d’installation
Taille espace
Buffer Pools
Taille des pages
Hiperpool et Dataspace
Bufferpool par défaut
Vol de page
Traitement et gestion des pages
Ecriture des pages
Contrôle
Seuils
Castout
Tuning
RiD Pool
Sort Pool
EDM Pool
Taille
Chargement et réutilisation des packages
Recherche en Pklist
Caching du SQL dynamique
Prepare persistant
Paramètres de Logging
Log Actif
Ecriture de la Log
Checkpoint interne
Log Archive
Datasets
Autres Paramètres
La macro DSN6SPRM
Gestion des packages, applicative, système, autorisation et verrouillage
La macro DSN6SYSP
Dimensionnement, RLF et divers
La macro DSN6FAC
La macro DSN6LOGP
La macro DSN6ARVP
La macro DSN6GRP
La macro DSN6PRC
Chargement dynamique de la ZPARM
Commande SET SYSPARM
Principes
Paramètres modifiables
Exemples
Les traces DB2
Introduction
Répartition de la CPU
Descriptif général par classe
Paramétrage à l’installation
Commande START TRACE
Syntaxe et paramètres
Structure des données
Les différents types
Trace STATISTIC, ACCOUNTING, MONITOR, AUDIT et GLOBAL
ACCOUNTING
Portée et lancement des traces
Détails des classes 1, 2 et 3
IFCID
Indicateurs et seuils d’alerte
EDM pool
Bufferpools
RiD pool
Log Manager
Verrous
Open/Close des fichiers
SQL dynamique
Temps d’exécution
Etapes d’analyse
Recommandations diverses
Analyse de Traces
Verrouillage
Présentation
Transaction Locks
Taille des verrous
Lock escalation
Verrouillage sélectif des partitions
Mode de verrouillage
Deadlock
Durée de verrouillage
Sur Tablespace ou Table
Sur page ou Ligne
Exemples d’accès en RR, CS et UR
Cas particulier
Intégrité référentielle
Parcours Index Only
Type de curseur
Lock Avoidance
Utilisation
CLSN et PUNC
Niveau d’Isolation
Keep Update Locks
Paramètres système
RRULOCK, RELCURHL, XLKUPDLT, RETLWAIT, EVALUNC, NUMLKUS, NUMLKTS et IRLM
Tests sur verrouillage
Latch
Claim physique
Drain physique
Claim physique sur NPI
Claim logique
Drain Logique
Exemple d’accès concurrents
Sérialisation des accès
Verrouillage sur Plan
Parallélisme des traitements
Suivi du verrouillage
Autorisations
Vue globale sur la sécurité
Identifiant
User et Authid
Authid primaire, Authids secondaires et Current SQLID
Scénario d’attribution
Identifiant à la connexion
Phase de connexion
Phase de signature
Groupes RACF
Les ordres de contrôle
Les privilèges
Principes de gestion
Autorités administratives
Délégation
Privilèges sur Plan/packages
SQL statique
Option DYNAMICRULES
Récapitulatif des privilèges
Révocation
RACF/DB2
Présentation
Mise en œuvre
Liens DB2/RACF
Ressources DB2 / Classes RACF
Portée des classes RACF
Multi et Mono Système
Classes et Profiles
Octroi d’autorisations
Autorités administratives
Paramétrage
Portée et Nom des Classes
Format des noms de Classes
Migration
Remarques