powa 3 - optimisations avancées de postgresql

Download PoWA 3 - Optimisations avancées de PostgreSQL

Post on 02-Jan-2017

213 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • PoWA 3Optimisations avances de PostgreSQL

    Ronan Dunklau - Julien Rouhaud

    Dalibo - www.dalibo.org

    24 septembre 2015 - PostgreSQL Session #7

    [ 1 / 43 ]

    http://www.dalibo.org

  • License

    I Create Commons BY-NC-SAI Vous tes libre

    I de partagerI de modifier

    I Sous les conditions suivantesI AttributionI Non commercialI Partage dans les mmes conditions

    [ 2 / 43 ]

  • Auteurs

    I Ronan DunklauI DBA @ DaliboI Open-Source : Multicorn...I Contributeur PostgreSQL (FDWs...)

    I Julien RouhaudI DBA @ DaliboI Open-Source : HypoPG, OPM...I Contributeur PostgreSQL, PgSQL FR...

    I Mais aussiI Marc CousinI Thomas Reiss

    [ 3 / 43 ]

  • PoWA?Prsentation

    I Outil danalyse de chargeI Et doptimisationI En temps rel

    [ 4 / 43 ]

  • Pile applicativePrsentation

    I pg_stat_statementsI pg_stat_kcacheI pg_qualstatsI powa-archivistI powa-web

    [ 5 / 43 ]

    http://docs.postgresql.fr/9.4/pgstatstatements.htmlhttps://github.com/dalibo/pg_stat_kcachehttps://github.com/dalibo/pg_qualstatshttps://github.com/dalibo/powa-archivisthttps://github.com/dalibo/powa-web

  • pg_stat_statementsPrsentation

    I Contrib officielle PostgreSQLI Normalisation de requtesI Cumul de compteurs (buffers, tempsdexcution...), par

    I utilisateurI baseI requte

    [ 6 / 43 ]

  • pg_stat_statementsConcrtement

    I Nombre dexcutions dune requteI Temps moyen dexcution dune requteI Cration de fichiers temporairesI Accs dans ou hors du cache de PostgreSQL

    [ 7 / 43 ]

  • pg_stat_kcachePrsentation

    I Capture de mtriques systmes par requtenormalise

    I Accs physique aux disquesI Utilisation CPU

    [ 8 / 43 ]

  • pg_stat_kcacheConcrtement

    I "Vrai" hit-ratio (cache PostgreSQL / cache systme)I Identification des requtes coteuses en tempsprocesseur

    [ 9 / 43 ]

  • pg_qualstatsPrsentation

    I Analyse des prdicatsI clause WHEREI clause JOIN

    I Stockage de nombreuses statistiquesI SlectivitI chantillon de constantes (+/- filtrantes, frquentes)I Nombre dexcutionsI Type de parcours (squentiel ou index)

    [ 10 / 43 ]

  • pg_qualstatsConcrtement

    I Trouver des index manquantsI Statistiques avances sur les prdicatsI ...

    [ 11 / 43 ]

  • powa-archivistPrsentation

    I Historiser toutes ces sources de donnesI Configurable (rtention, frquence...)I Extensible dautres sources de donnes

    [ 12 / 43 ]

  • powa-archivistConcrtement

    I Quels sont les goulets dtranglementI Pour quelle raisonI Y remdierI En temps rel

    [ 13 / 43 ]

  • Compatibilit

    I PostgreSQL 9.4 et plusI PoWA 1 compatible 9.3, mais beaucoup plus limit

    [ 14 / 43 ]

  • powa-webPrsentation

    I Interface graphique webI Contrle une ou plusieurs instances PoWAI Drill-down analysis

    [ 15 / 43 ]

  • powa-webExemple dutilisation

    I Mauvaises performances sur certaines partiesdune application

    I Choisir la priode danalyse (dernire heure pardfaut)

    I Trouver la base concerne

    [ 16 / 43 ]

  • powa-webVue dun cluster 1

    [ 17 / 43 ]

  • powa-webVue dun cluster 2

    [ 18 / 43 ]

  • powa-webVue dune base

    I La base est identifieI Trouver les requtes problmatiques

    [ 19 / 43 ]

  • powa-webVue dune base 1

    [ 20 / 43 ]

  • powa-webVue dune base 2

    [ 21 / 43 ]

  • powa-webVue la requte

    I 2 requtes problmatiques trouvesI inspection de chacune delles

    [ 22 / 43 ]

  • powa-webPremire requte - SQL

    SELECT

    com.id,

    sum(c_l.pric) AS total_price

    FROM

    command com

    JOIN command_line c_l ON com.id = c_l.id_command

    JOIN client cli ON cli.id = com.id_client

    WHERE

    cli.id = ?

    GROUP BY

    com.id

    [ 23 / 43 ]

  • powa-webPremire requte - cache

    [ 24 / 43 ]

  • powa-webPremire requte - CPU

    [ 25 / 43 ]

  • powa-webPremire requte - prdicats

    [ 26 / 43 ]

  • powa-webPremire requte - index

    [ 27 / 43 ]

  • powa-webDeuxime requte - SQL

    SELECT id, dt

    FROM command

    WHERE state = ?

    [ 28 / 43 ]

  • powa-webDeuxime requte - EXPLAIN

    [ 29 / 43 ]

  • powa-webEn video

    I

    [ 30 / 43 ]

  • powa-webNouveauts version 3

    I Support de lextension HypoPGI Suggestion globale dindex

    [ 31 / 43 ]

    https://github.com/dalibo/hypopg

  • HypoPGPrsentation

    I Gestion dindex hypothtiqueI Cration instantane, aucune ressourceconsomme

    I Pris en compte lors dun EXPLAIN

    [ 32 / 43 ]

  • HypoPGConcrtement

    I Mon index sera-t-il utilis ?I Quelle taille fera-t-il ?I Quel gain apportera-t-il ?

    [ 33 / 43 ]

  • HypoPGEn action

    [ 34 / 43 ]

  • Optimisation globalePrsentation

    I Trouver les index optimaux crerI Satisfaire toutes les requtesI Crer le moins dindex possibleI Gestion des index multi-colonnes

    [ 35 / 43 ]

  • Optimisation globaleFonctionnement 1

    I Rcupration des prdicats optimiserI Prdicats filtrant en moyenne plus de X lignesI Prdicats filtrant en moyenne plus de X %I Prdicats utiliss lors dun parcours squentiel

    [ 36 / 43 ]

  • Optimisation globaleFonctionnement 2

    I Validation du rsultatI Si HypoPG est disponible sur la base

    I Valider lutilisation de chaque index avec HypoPG

    [ 37 / 43 ]

  • Optimisation globaleFonctionnement 3

    I Estimation du gainI Si HypoPG est disponible sur la base

    I Comparaison du cot avec et sans indexhypothtique

    I Rapprochement avec le nombre dexcutions desrequtes

    I Gain en performance estim par requte etglobalement

    [ 38 / 43 ]

  • Optimisation globaleEn action

    [ 39 / 43 ]

  • Optimisation globaleEn action

    [ 40 / 43 ]

  • Optimisation globaleEn action

    I vido

    [ 41 / 43 ]

  • Liens utilesI powa-archivist

    I SiteI Dpt

    I powa-webI DptI Dmo

    I pg_qualstatsI DptI Article

    I pg_stat_kcacheI DptI Article

    I HypoPGI SiteI DptI Article

    [ 42 / 43 ]

    https://dalibo.github.io/powahttps://github.com/dalibo/powa-archivisthttps://github.com/dalibo/powa-webhttp://demo-powa.dalibo.comhttps://github.com/dalibo/pg_qualstatshttp://rdunklau.github.io/postgresql/powa/pg_qualstats/2015/02/02/pg_qualstats_part1/https://github.com/dalibo/pg_stat_kcachehttps://rjuju.github.io/postgresql/2015/03/04/pg_stat_kcache-2-0.htmlhttps://dalibo.github.io/hypopghttps://github.com/dalibo/hypopghttps://rjuju.github.io/postgresqlfr/2015/07/02/parlons-des-index-hypothetiques.html

  • Questions?

    I contact@dalibo.comI powa@dalibo.comI powa.readthedocs.org

    [ 43 / 43 ]

    mailto:contact@dalibo.commailto:powa@dalibo.comhttp://powa.readthedocs.org

Recommended

View more >