Bases de données. Cours 6 : Prise en main de Postgresql

Documents pareils
ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Optimisation SQL. Quelques règles de bases

algèbre requêtes relationnelles équivalentes méthodes de calculs équivalentes limites par les ressources : mémoire, disques, cpu...

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

Administration de Bases de Données : Optimisation

Langage SQL : créer et interroger une base

Optimisations des SGBDR. Étude de cas : MySQL

Encryptions, compression et partitionnement des données

Django et PostgreSQL sous la charge

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Auto-évaluation Oracle: cours de base

Le Langage De Description De Données(LDD)

Compétences Business Objects

Optimisation de MySQL

Structure fonctionnelle d un SGBD

Administration des bases de données relationnelles Part I

Sybase Adaptive Server Enterprise 15

Plan d Exécution Graphique pour des Requêtes SQL Simples

Les bases de l optimisation SQL avec DB2 for i

TP Bases de données réparties

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Bases de données documentaires et distribuées Cours NFE04

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Bases de Données relationnelles et leurs systèmes de Gestion

Session S12 Les bases de l optimisation SQL avec DB2 for i

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Master Exploration Informatique des données DataWareHouse

Nouveautés de PostgreSQL 9.2

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

PHP 5. La base de données MySql. A. Belaïd 1

Cours Bases de données 2ème année IUT

Présentation du module Base de données spatio-temporelles

Introduction aux SGBDR

Ora2Pg Performances. (C) 2013 Gilles Darold

Comprendre et optimiser la base de données WordPress WP TECH 2014

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Les bases de données

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

TP3 : Creation de tables 1 seance

Gestion des transactions et accès concurrents dans les bases de données relationnelles

CREATION WEB DYNAMIQUE

Les BASES de DONNEES dans WampServer

I4 : Bases de Données

Parallel Execution. IS-Net 29 DATA WEBHOUSE. Informatique de gestion et systèmes d information

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Tests de performance du matériel

4D v11 SQL Release 5 (11.5) ADDENDUM

Programmation parallèle et distribuée

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

TP11 - Administration/Tuning

Partie 7 : Gestion de la mémoire

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Codage d information. Codage d information : -Définition-

Création et Gestion des tables

Évaluation et optimisation de requêtes

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Le langage SQL Rappels

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Introduction au Système de Gestion de Base de Données et aux Base de Données

Jean-François Boulicaut & Mohand-Saïd Hacid

SQL Historique

Réplication logique avec PostgreSQL 9.4

Compte-rendu de projet de Système de gestion de base de données

1 Modélisation d une base de données pour une société de bourse

Programmation parallèle et distribuée

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

SYSTÈME DE GESTION DE FICHIERS

Audit et optimisation MySQL 5

OpenPaaS Le réseau social d'entreprise

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Intégrité des données

Cours 4. Gestion de la performance. DBA - Maîtrise ASR - Université Evry

Olivier Mondet

A QUOI SERVENT LES BASES DE DONNÉES?

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Sécuristation du Cloud

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Bases de données Outils de gestion

FileMaker 13. Guide de référence SQL

Bases de données élémentaires Maude Manouvrier

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données Cours 1 : Généralités sur les bases de données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Notes de cours : bases de données distribuées et repliquées

données en connaissance et en actions?

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Du 10 Fév. au 14 Mars 2014

Big data et sciences du Vivant L'exemple du séquençage haut débit

Transcription:

Bases de données Polytech Paris-Sud Apprentis 4 ème année Cours 6 : Prise en main de Postgresql kn@lri.fr http://www.lri.fr/~kn

Plan 1 Rappels 2 Stockage 3 Indexation 4 Optimisation des opérateurs 5 Optimisation de requêtes 6 Prise en main de Postgresql 6.1 Base d'exemple 6.2 EXPLAIN 6.3 Exemples d'opérateurs 6.4 Démo 2/14

On considère la base d'exemple suivante CREATE TABLE PEOPLE (pid INTEGER PRIMARY key, firstname VARCHAR(30), lastname VARCHAR(30)); CREATE TABLE MOVIE (mid INTEGER PRIMARY KEY, title VARCHAR(90) NOT NULL, year INTEGER NOT NULL, runtime INTEGER NOT NULL, rank INTEGER NOT NULL); CREATE TABLE ROLE (mid INTEGER REFERENCES MOVIE, pid INTEGER REFERENCES PEOPLE, name VARCHAR(70), PRIMARY KEY(mid, pid, name)); CREATE TABLE DIRECTOR (mid INTEGER REFERENCES MOVIE, pid INTEGER REFERENCES PEOPLE, PRIMARY KEY (mid, pid)); 3/14

Plan 1 Rappels 2 Stockage 3 Indexation 4 Optimisation des opérateurs 5 Optimisation de requêtes 6 Prise en main de Postgresql 6.1 Base d'exemple 6.2 EXPLAIN 6.3 Exemples d'opérateurs 6.4 Démo 4/14

EXPLAIN ANALYSE On peut demander à Postgresql d'afficher le plan qu'il calcule pour une requête avec les esitmations de coût : EXPLAIN requête; Dans ce cas, la requête n'est pas évaluée. On peut aussi évaluer la requête : EXPLAIN ANALYSE requête; Dans ce cas, la requête est évaluée et les coût réels sont affichés. S'ils divergent des coûts estimés, l'optimiseur s'est trompé, par exemple parce que ses statistiques ne sont pas à jour 5/14

EXPLAIN ANALYSE (suite) On considère: EXPLAIN ANALYSE SELECT * FROM ROLE,PEOPLE WHERE ROLE.pid = PEOPLE.pid; On obtient : Hash Join (cost=312.07..822.95 rows=14535 width=37) (actual time=14.799..44.691 rows=14535 loops=1) Hash Cond: (role.pid = people.pid) -> Seq Scan on role (cost=0.00..238.35 rows=14535 width=20) (actual time=0.019..7.570 rows=14535 loops=1) -> Hash (cost=175.92..175.92 rows=10892 width=17) (actual time=14.711..14.711 rows=10892 loops=1) -> Seq Scan on people (cost=0.00..175.92 rows=10892 width=17) (actual time=0.015..5.944 rows=10892 loops=1) 6/14

EXPLAIN ANALYSE (suite) Seq Scan on people (cost=0.00..175.92 rows=10892 width=17) (actual time=0.015..5.944 rows=10892 loops=1) Le nom de l'opérateur nœud de l'arbre dans le plan de requête Estimation du coût (voir suite) Coût réel n'apparaît que si on a fait EXPLAIN ANALYSE (voir suite) 7/14

Estimation des coût (cost=0.00..175.92 rows=10892 width=17) Estimation du coût. Unité : temps que met une lecture de bloc de 8ko (pour être indépendant du hardware). Le premier nombre est le temps estimé pour avoir le premier résultat. Le deuxième le temps estimé pour avoir l'ensemble. Estimation du nombre de lignes dans le résultat Taille des lignes en octets 8/14

Coût réel (actual time=0.015..5.944 rows=10892 loops=1) Coût réel. Unité : ms. Devrait être proportionnel à l'estimation si l'optimiseur ne s'est pas trompé. Le premier nombre est le temps pour avoir le premier résultat. Le deuxième le temps pour avoir l'ensemble. Nombre de lignes dans le résultat looks=x l'opérateur a été appelé x fois 9/14

Lecture du plan de requête Hash Join (cost= ) (actual time= ) Hash Cond: (role.pid = people.pid) -> Seq Scan on role (cost= ) (actual time= ) -> Hash (cost= ) (actual time= ) -> Seq Scan on people (cost= ) (actual time= ) role.pid = people.pid Hash Join join Scan Role # Table de hash en mémoire People Scan Note: les projections n'apparaissent pas, on peut les voir avec EXPLAIN ANALYSE VERBOSE. 10/14

Plan 1 Rappels 2 Stockage 3 Indexation 4 Optimisation des opérateurs 5 Optimisation de requêtes 6 Prise en main de Postgresql 6.1 Base d'exemple 6.2 EXPLAIN 6.3 Exemples d'opérateurs 6.4 Démo 11/14

Nœuds fréquements rencontrés lors d'un EXPLAIN ANALYSE Les opérateurs sont déclinés selon les différents algorithmes (jointure, tris, ) Seq Scan: Scan séquentiel Nested loop: Jointure itérative page à page Merge sort join: Jointure par tri fusion Hash join: jointure par hashage (généralisation de la jointure sur index) Sort: Tri (le nœud indique l'algo de tri et la fonction de comparaison) Index scan: scan d'un index (précise l'index et la condition) Hash: génération d'une table de hash à la volée Bitmap Index scan/bitmap heap scan: génération et utilisation d'un index bitmap à la volée (voire suite) Materialize: écriture de résultats intermédiaires sur le disque 12/14

Retour sur les opératuers «Bitmap» (Cours 5) si l'index est non-groupant, l'utilisation de l'index peut provoquer une séquence de chargement/déchargement de pages ruinant les performances Solution en deux phases Scanner l'index et créer un bitmap de taille N où N est le nombre de pages de la relation. Pour chaque entrée d'index satisfaisant le résultat, mettre le bit correspondant à 1 (phase Bitmap Index Scan) Parcourir la relation dans l'ordre du disque, page à page. Si la page est à 1 dans le bitmap, on la charge, sinon on l'ignore. Une fois la page chargée il faut réévaluer la condition car on a oublié quels étaients les résultats de l'index (phase Bitmap Heap Scan) Intéret: Un bitmap est petit (si la relation contient 10000 pages, le bitmap contient 10000 bits ou environs 1250 octets (soit moins d'une page). Cela permet aussi de répondre efficacement aux requêtes booléenes complexes (i.e. autre qu AND). En effet on calcule un bitmap pour chaque sous-condition, et on fait les opérations entre bitmap bit à bit.

Plan 1 Rappels 2 Stockage 3 Indexation 4 Optimisation des opérateurs 5 Optimisation de requêtes 6 Prise en main de Postgresql 6.1 Base d'exemple 6.2 EXPLAIN 6.3 Exemples d'opérateurs 6.4 Démo 14/14