powa 3 - optimisations avancées de postgresql

Post on 02-Jan-2017

229 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PoWA 3Optimisations avancées de PostgreSQL

Ronan Dunklau - Julien Rouhaud

Dalibo - www.dalibo.org

24 septembre 2015 - PostgreSQL Session #7

[ 1 / 43 ]

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 mêmes 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?Présentation

I Outil d’analyse de chargeI Et d’optimisationI En temps réel

[ 4 / 43 ]

pg_stat_statementsPrésentation

I Contrib officielle PostgreSQLI Normalisation de requêtesI Cumul de compteurs (buffers, tempsd’exécution...), par

I utilisateurI baseI requête

[ 6 / 43 ]

pg_stat_statementsConcrètement

I Nombre d’exécutions d’une requêteI Temps moyen d’exécution d’une requêteI Création de fichiers temporairesI Accès dans ou hors du cache de PostgreSQL

[ 7 / 43 ]

pg_stat_kcachePrésentation

I Capture de métriques systèmes par requêtenormalisée

I Accès physique aux disquesI Utilisation CPU

[ 8 / 43 ]

pg_stat_kcacheConcrètement

I "Vrai" hit-ratio (cache PostgreSQL / cache système)I Identification des requêtes coûteuses en tempsprocesseur

[ 9 / 43 ]

pg_qualstatsPrésentation

I Analyse des prédicatsI clause WHEREI clause JOIN

I Stockage de nombreuses statistiquesI SélectivitéI Échantillon de constantes (+/- filtrantes, fréquentes)I Nombre d’exécutionsI Type de parcours (séquentiel ou index)

[ 10 / 43 ]

pg_qualstatsConcrètement

I Trouver des index manquantsI Statistiques avancées sur les prédicatsI ...

[ 11 / 43 ]

powa-archivistPrésentation

I Historiser toutes ces sources de donnéesI Configurable (rétention, fréquence...)I Extensible à d’autres sources de données

[ 12 / 43 ]

powa-archivistConcrètement

I Quels sont les goulets d’étranglementI Pour quelle raisonI Y remédierI En temps réel

[ 13 / 43 ]

Compatibilité

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

[ 14 / 43 ]

powa-webPrésentation

I Interface graphique webI Contrôle une ou plusieurs instances PoWAI Drill-down analysis

[ 15 / 43 ]

powa-webExemple d’utilisation

I Mauvaises performances sur certaines partiesd’une application

I Choisir la période d’analyse (dernière heure pardéfaut)

I Trouver la base concernée

[ 16 / 43 ]

powa-webVue d’un cluster 1

[ 17 / 43 ]

powa-webVue d’un cluster 2

[ 18 / 43 ]

powa-webVue d’une base

I La base est identifiéeI Trouver les requêtes problématiques

[ 19 / 43 ]

powa-webVue d’une base 1

[ 20 / 43 ]

powa-webVue d’une base 2

[ 21 / 43 ]

powa-webVue à la requête

I 2 requêtes problématiques trouvéesI inspection de chacune d’elles

[ 22 / 43 ]

powa-webPremière requête - 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-webPremière requête - cache

[ 24 / 43 ]

powa-webPremière requête - CPU

[ 25 / 43 ]

powa-webPremière requête - prédicats

[ 26 / 43 ]

powa-webPremière requête - index

[ 27 / 43 ]

powa-webDeuxième requête - SQL

SELECT id, dt

FROM command

WHERE state = ?

[ 28 / 43 ]

powa-webDeuxième requête - EXPLAIN

[ 29 / 43 ]

powa-webEn video

I

[ 30 / 43 ]

powa-webNouveautés version 3

I Support de l’extension HypoPGI Suggestion globale d’index

[ 31 / 43 ]

HypoPGPrésentation

I Gestion d’index hypothétiqueI Création instantanée, aucune ressourceconsommée

I Pris en compte lors d’un EXPLAIN

[ 32 / 43 ]

HypoPGConcrètement

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 globalePrésentation

I Trouver les index optimaux à créerI Satisfaire toutes les requêtesI Créer le moins d’index possibleI Gestion des index multi-colonnes

[ 35 / 43 ]

Optimisation globaleFonctionnement 1

I Récupération des prédicats à optimiserI Prédicats filtrant en moyenne plus de X lignesI Prédicats filtrant en moyenne plus de X %I Prédicats utilisés lors d’un parcours séquentiel

[ 36 / 43 ]

Optimisation globaleFonctionnement 2

I Validation du résultatI Si HypoPG est disponible sur la base

I Valider l’utilisation de chaque index avec HypoPG

[ 37 / 43 ]

Optimisation globaleFonctionnement 3

I Estimation du gainI Si HypoPG est disponible sur la base

I Comparaison du coût avec et sans indexhypothétique

I Rapprochement avec le nombre d’exécutions desrequêtes

I Gain en performance estimé par requête etglobalement

[ 38 / 43 ]

Optimisation globaleEn action

[ 39 / 43 ]

Optimisation globaleEn action

[ 40 / 43 ]

Optimisation globaleEn action

I vidéo

[ 41 / 43 ]

Questions?

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

[ 43 / 43 ]

top related