SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Profilage
PL/pgSQL
Plprofiler
Questions ?
Pl Profiler
Sébastien Lardière
Loxodata
mars 2017
slardiere PLPROFILER – mars 2017 1 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Profilage dans PostgreSQL
slardiere PLPROFILER – mars 2017 2 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Profilage dans PostgreSQL
Profilage
Analyse Dynamique d’un programme
Mesure :
fréquence et durée d’un appel
l’usage d’une instruction
la consommation temps et mémoire
slardiere PLPROFILER – mars 2017 3 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Profilage dans PostgreSQL
Profilage dans PostgreSQL
Nombreuses statistiques dans le catalogue (pg_stat_user_tables, ...)
Requêtes lentes dans les logs : log_min_duration_statement
pg_stat_statement
auto_explain.log_nested_statements = on
slardiere PLPROFILER – mars 2017 4 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Profilage dans PostgreSQL
slardiere PLPROFILER – mars 2017 5 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
PL/pgSQL
Langage inspiré de PLSQL, crée par Jan Wieck (fin ’90)
Langage « LOADable »
À l’execution, le moteur est chargé
Le contenu de pg_proc est utilisé
slardiere PLPROFILER – mars 2017 6 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
PL/pgSQL
Au premier appel dans une session :
L’interpréteur « compile » la fonction
Le SQL embarqué n’est qu’une chaine
Résultat : un arbre similaire à celui d’une requête SQL
Les requêtes sont préparées via SPI
Les plans préparées sont utilisées pendant toutes la session
slardiere PLPROFILER – mars 2017 7 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Profilage de PL/pgSQL
Problème : le contenu des fonctions est invisible
L’extension Plprofiler permet d’inspecter l’exécution du code PL/pgSQL
Des hooks de debug ont été ajouté en 2006
slardiere PLPROFILER – mars 2017 8 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Installation
Simple sous GNU/Linux, dépend de Perl et Python
Un fichier plprofiler.so
Une extension plprofiler3.0.sql
Un client (python) plprofiler
slardiere PLPROFILER – mars 2017 9 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Installation
À partir de https://bitbucket.org/openscg/plprofiler/overview
Exemple
cd openscg-plprofiler
sudo make USE_PGXS=1 install
cd python-plprofiler/
sudo python setup.py install
slardiere PLPROFILER – mars 2017 10 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Installation
L’extension doit être créée :
Exemple
create extension plprofiler
slardiere PLPROFILER – mars 2017 11 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
RUN
La commande RUN du client permet de lancer des requêtes :
Exemple
plprofiler run -c select looploop(2,2) 
--name=LoopLoop --title=LoopLoop 
--desc=Loop Loop function call 
--output=looploop.html
slardiere PLPROFILER – mars 2017 12 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
slardiere PLPROFILER – mars 2017 13 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Pour tester une application globalement, charger le module postgresql.conf :
Exemple
shared_preload_libraries = 'plprofiler'
slardiere PLPROFILER – mars 2017 14 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Puis, piloter la collecte avec la commande monitor :
Exemple
plprofiler reset
plprofiler monitor --interval 10 --duration 300
plprofiler report --from-shared --output parttest01.html
slardiere PLPROFILER – mars 2017 15 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Possibilité d’enregistrer des sessions :
Exemple
plprofiler save --name=parttest01
plprofiler report --name=parttest01 --output parttest01.html
slardiere PLPROFILER – mars 2017 16 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
slardiere PLPROFILER – mars 2017 17 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
slardiere PLPROFILER – mars 2017 18 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Pilotage depuis l’outil de benchmarks, ici, pgbench :
Exemple
SET plprofiler.enabled TO true;
SET plprofiler.collect_interval TO 10;
insert into test.test1jour ( ev_date, label )
values ( now() + interval '1d' *
((random() - 0.5) * 100)::int, 1);
slardiere PLPROFILER – mars 2017 19 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Pilotage depuis l’outil de benchmarks, ici, pgbench :
Exemple
pgbench -c 10 -j 10 -T 10 -f testpart.sql parttest
slardiere PLPROFILER – mars 2017 20 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
Benchmarks
Pilotage depuis l’outil de benchmarks, ici, pgbench :
Exemple
plprofiler save --name=parttest01
plprofiler report --name=parttest01 --output parttest01.html
slardiere PLPROFILER – mars 2017 21 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Installation
RUN
Benchmarks
pgbench
https://www.loxodata.com/post/plpgsql-profiler/
slardiere PLPROFILER – mars 2017 22 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
slardiere PLPROFILER – mars 2017 23 / 24
Profilage
PL/pgSQL
Plprofiler
Questions ?
Merci !
slardiere PLPROFILER – mars 2017 24 / 24

Contenu connexe

Similaire à PostgreSQL plprofiler - Mars 2017 - Loxodata

Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7neuros
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...LeClubQualiteLogicielle
 
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...OCTO Technology
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Africa Performances
 
COSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptxCOSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptxFatiMa243348
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erpJoubi Aaziz
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
BID CE Workshop 1 Session 15 - Wrap-up and Evaluation
BID CE Workshop 1   Session 15 - Wrap-up and EvaluationBID CE Workshop 1   Session 15 - Wrap-up and Evaluation
BID CE Workshop 1 Session 15 - Wrap-up and EvaluationAlberto González-Talaván
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java scriptPascal Laurin
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 

Similaire à PostgreSQL plprofiler - Mars 2017 - Loxodata (20)

Perf university
Perf universityPerf university
Perf university
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
 
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...
UN ÉLÉPHANT QUI SE BALANÇAIT … Comment mettre en musique les big data et valo...
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 
Catalogue PFE 2019
Catalogue PFE 2019Catalogue PFE 2019
Catalogue PFE 2019
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8
 
Openerp
OpenerpOpenerp
Openerp
 
Presentation forum php 2010
Presentation forum php 2010Presentation forum php 2010
Presentation forum php 2010
 
COSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptxCOSMAS_Dino_Presentation_11_06_2011.pptx
COSMAS_Dino_Presentation_11_06_2011.pptx
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erp
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
BID CE Workshop 1 Session 15 - Wrap-up and Evaluation
BID CE Workshop 1   Session 15 - Wrap-up and EvaluationBID CE Workshop 1   Session 15 - Wrap-up and Evaluation
BID CE Workshop 1 Session 15 - Wrap-up and Evaluation
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 
Pytong2015
Pytong2015Pytong2015
Pytong2015
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 

Plus de slardiere

Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12slardiere
 
PostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec PatroniPostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec Patronislardiere
 
pgBackRest - pgday.fr
pgBackRest - pgday.frpgBackRest - pgday.fr
pgBackRest - pgday.frslardiere
 
Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5slardiere
 
Meetup PostgreSQL Nantes PG10
Meetup PostgreSQL Nantes PG10Meetup PostgreSQL Nantes PG10
Meetup PostgreSQL Nantes PG10slardiere
 
Structures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, LoxodataStructures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, Loxodataslardiere
 
Historique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' LoxodataHistorique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' Loxodataslardiere
 

Plus de slardiere (7)

Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12
 
PostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec PatroniPostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec Patroni
 
pgBackRest - pgday.fr
pgBackRest - pgday.frpgBackRest - pgday.fr
pgBackRest - pgday.fr
 
Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5
 
Meetup PostgreSQL Nantes PG10
Meetup PostgreSQL Nantes PG10Meetup PostgreSQL Nantes PG10
Meetup PostgreSQL Nantes PG10
 
Structures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, LoxodataStructures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, Loxodata
 
Historique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' LoxodataHistorique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' Loxodata
 

PostgreSQL plprofiler - Mars 2017 - Loxodata