PostgreSQL quatre ans après
Rodolphe Quiédeville
Novapost
21 mai 2014
Rodolphe Quiédeville (Freelance) PostgreSQL quatre a...
Axes de travail
10 axes de travail pour améliorer les performances et monter en
charge en étant serein.
Rodolphe Quiédevil...
Axes de travail
10 axes de travail pour améliorer les performances et monter en
charge en étant serein.
pgtune
hardware
ta...
Axes de travail
pgtune
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 3 / 43
pgtune
Script d’optimisation des paramètres de postgresql.conf. L’étape
numéro une de toute optimisation.
utilisation
pgtu...
pgtune
Fait des propositions d’adaptation des paramètres de configuration au
matériel
Postulat
pgtune considère qu’un seul ...
pgtune
Fait des propositions d’adaptation des paramètres de configuration au
matériel
Postulat
pgtune considère qu’un seul ...
pgtune
Sortie du script
Example
#custom_variable_classes = ’’ # list of custom variable class names
default_statistics_tar...
Axes de travail
pgtune
hardware
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 7 / 43
hardware
PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant
que faire se peut.
Rodolphe Quiédeville (...
hardware
PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant
que faire se peut.
plusieurs disques
Rodo...
hardware
PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant
que faire se peut.
plusieurs disques
plus...
hardware
PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant
que faire se peut.
plusieurs disques
plus...
hardware
PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant
que faire se peut.
plusieurs disques
plus...
Axes de travail
pgtune
hardware
tablespaces
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 9 / 43
Tablespace
Les tablespaces permettent de définir l’emplacement dans le système
de fichiers où seront stockés les fichiers rep...
Tablespace
Les tablespaces permettent de définir l’emplacement dans le système
de fichiers où seront stockés les fichiers rep...
Tablespace
Les tablespaces permettent de définir l’emplacement dans le système
de fichiers où seront stockés les fichiers rep...
Tablespace
Les tablespaces permettent de définir l’emplacement dans le système
de fichiers où seront stockés les fichiers rep...
Tablespace
Création
CREATE TABLESPACE espace_rapide LOCATION ’/mnt/sda1/postgresql/data’;
Création de la table
CREATE TABL...
Axes de travail
pgtune
hardware
tablespaces
replication
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 ma...
replication
Vaste programme.
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 13 / 43
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
Rodolphe Q...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
replication
Vaste programme. La réplication est un des sujets les plus discutés
des bases de données à ce jour.
synchrone/...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
Rodolphe Quiédeville (Freelance) PostgreSQL quat...
connection pooler
L’utilisation d’un pooler de connection est intéressant quand un grand
nombre de connections sont créees...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
Rodolphe Quiédeville (Freelance) PostgreS...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
Rodolphe Quiédeville (Freelance...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
pour récupérer ou ré-utiliser l...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
pour récupérer ou ré-utiliser l...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
pour récupérer ou ré-utiliser l...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
pour récupérer ou ré-utiliser l...
vaccum
La commande VACUUM doit traiter chaque table régulièrement pour
plusieurs raisons :
pour récupérer ou ré-utiliser l...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
Rodolphe Quiédeville (...
Vues matérialisées
Le meilleur de la table et de la vue.
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 m...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
Rodolphe Quiédeville...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Le meilleur de la table et de la vue. Les meilleures alliées des
business analyst.
se crée comme une vu...
Vues matérialisées
Création
CREATE MATERIALIZED VIEW resume_ventes AS
SELECT
no_vendeur,
date_facture,
sum(mtt_facture)::n...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
partitionnement
Rodolp...
partitionnement
Le partitionnement fait référence à la division d’une table logique
volumineuse en plusieurs parties physi...
partitionnement
Le partitionnement fait référence à la division d’une table logique
volumineuse en plusieurs parties physi...
partitionnement
Le partitionnement fait référence à la division d’une table logique
volumineuse en plusieurs parties physi...
partitionnement
Le partitionnement fait référence à la division d’une table logique
volumineuse en plusieurs parties physi...
partitionnement
Création table maître
SQL
CREATE TABLE mesure (
id_ville int not null,
date_trace date not null,
temperatu...
partitionnement
Création des tables filles avec contraintes
SQL
CREATE TABLE mesure_a2006m02 (
CHECK ( date_trace >= DATE ’...
partitionnement
Création des index
SQL
CREATE INDEX mesure_a2006m02_date_trace ON mesure_a2006m02 (date_trace);
CREATE IND...
partitionnement
Création des trigger
SQL
CREATE OR REPLACE FUNCTION mesure_insert_trigger()
RETURNS TRIGGER AS $$
BEGIN
IN...
partitionnement
Attention à l’utilisation
SQL
rodo@[local]:5432 rodo=> explain select * from mesure ;
QUERY PLAN
---------...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
héritage de table
inde...
index
Il s’avère que la seule chose que les développeurs doivent
connaître est l’indexation. En fait, l’indexation d’une b...
index
Trop d’index nuit à la performance. Mettre à jour un index qui n’est
jamais lu n’est pas forcément nécessaire.
Rodol...
index
Trop d’index nuit à la performance. Mettre à jour un index qui n’est
jamais lu n’est pas forcément nécessaire.
SQL
i...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
héritage de table
inde...
query
La ré-écriture des requêtes et le travail coté application
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans ap...
query
La ré-écriture des requêtes et le travail coté application
la requête la plus rapide est celle qui n’est pas éxecuté...
query
La ré-écriture des requêtes et le travail coté application
la requête la plus rapide est celle qui n’est pas éxecuté...
query
La ré-écriture des requêtes et le travail coté application
la requête la plus rapide est celle qui n’est pas éxecuté...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
héritage de table
inde...
Axes de travail
pgtune
hardware
tablespaces
replication
connection pooler
vaccum
materialized views
héritage de table
inde...
schema
Last but not least, le schema reste la source numéro un des
problèmes de performance et de montée en charge.
Rodolp...
schema
Last but not least, le schema reste la source numéro un des
problèmes de performance et de montée en charge.
table
...
schema
Last but not least, le schema reste la source numéro un des
problèmes de performance et de montée en charge.
table
...
schema
Last but not least, le schema reste la source numéro un des
problèmes de performance et de montée en charge.
table
...
schema
Last but not least, le schema reste la source numéro un des
problèmes de performance et de montée en charge.
table
...
Conclusion
Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 41 / 43
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
Rodolphe Quiédeville (F...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Conclusion
Tout modification structurelle doit s’accompagner d’un processus de
validation itératif.
1 rédaction d’un protoc...
Questions ?
Rodolphe Quiédeville
rodolphe@quiedeville.org
http://blog.rodolphe.quiedeville.org/
Document publié sous Licen...
Prochain SlideShare
Chargement dans…5
×

BBL autour de PostgreSQL @Novapost

727 vues

Publié le

Brown Bag Lunch sur inviation chez Novapost pour présenter les axes de réflexions pour la gestion de la montée en charge de PostgreSQL. Présentations de différents axes de travail afin d

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
727
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
26
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

BBL autour de PostgreSQL @Novapost

  1. 1. PostgreSQL quatre ans après Rodolphe Quiédeville Novapost 21 mai 2014 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 1 / 43
  2. 2. Axes de travail 10 axes de travail pour améliorer les performances et monter en charge en étant serein. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 2 / 43
  3. 3. Axes de travail 10 axes de travail pour améliorer les performances et monter en charge en étant serein. pgtune hardware tablespaces replication connection pooler vaccum materialized views partitionnement index query ??? Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 2 / 43
  4. 4. Axes de travail pgtune Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 3 / 43
  5. 5. pgtune Script d’optimisation des paramètres de postgresql.conf. L’étape numéro une de toute optimisation. utilisation pgtune -i /etc/postgresql/9.1/main/postgresql.conf Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 4 / 43
  6. 6. pgtune Fait des propositions d’adaptation des paramètres de configuration au matériel Postulat pgtune considère qu’un seul cluster tourne sur la machine et que celle-ci est dédiée au serveur de base de données Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 5 / 43
  7. 7. pgtune Fait des propositions d’adaptation des paramètres de configuration au matériel Postulat pgtune considère qu’un seul cluster tourne sur la machine et que celle-ci est dédiée au serveur de base de données Restart certains paramètres nécessite un redémarrage pour leur prise en compte Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 5 / 43
  8. 8. pgtune Sortie du script Example #custom_variable_classes = ’’ # list of custom variable class names default_statistics_target = 50 maintenance_work_mem = 176MB constraint_exclusion = on checkpoint_completion_target = 0.9 effective_cache_size = 2GB work_mem = 18MB wal_buffers = 8MB checkpoint_segments = 16 shared_buffers = 704MB max_connections = 80 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 6 / 43
  9. 9. Axes de travail pgtune hardware Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 7 / 43
  10. 10. hardware PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant que faire se peut. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 8 / 43
  11. 11. hardware PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant que faire se peut. plusieurs disques Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 8 / 43
  12. 12. hardware PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant que faire se peut. plusieurs disques plusieurs contrôlleurs Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 8 / 43
  13. 13. hardware PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant que faire se peut. plusieurs disques plusieurs contrôlleurs RAID10 au lieu de RAID5 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 8 / 43
  14. 14. hardware PostgreSQL a plusieurs flux de lecture/écriture, il faut en profiter tant que faire se peut. plusieurs disques plusieurs contrôlleurs RAID10 au lieu de RAID5 les WAL d’un coté les données de l’autre Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 8 / 43
  15. 15. Axes de travail pgtune hardware tablespaces Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 9 / 43
  16. 16. Tablespace Les tablespaces permettent de définir l’emplacement dans le système de fichiers où seront stockés les fichiers représentant les objets de la base de données. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 10 / 43
  17. 17. Tablespace Les tablespaces permettent de définir l’emplacement dans le système de fichiers où seront stockés les fichiers représentant les objets de la base de données. séparer les tables des index Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 10 / 43
  18. 18. Tablespace Les tablespaces permettent de définir l’emplacement dans le système de fichiers où seront stockés les fichiers représentant les objets de la base de données. séparer les tables des index séparer les tables d’archives des données fraiches Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 10 / 43
  19. 19. Tablespace Les tablespaces permettent de définir l’emplacement dans le système de fichiers où seront stockés les fichiers représentant les objets de la base de données. séparer les tables des index séparer les tables d’archives des données fraiches lier les spécificités physique du stockage à l’utilisation logique des données (session en SSD) Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 10 / 43
  20. 20. Tablespace Création CREATE TABLESPACE espace_rapide LOCATION ’/mnt/sda1/postgresql/data’; Création de la table CREATE TABLE foo(i int) TABLESPACE espace1; Le déplacement de données existantes est également possible. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 11 / 43
  21. 21. Axes de travail pgtune hardware tablespaces replication Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 12 / 43
  22. 22. replication Vaste programme. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 13 / 43
  23. 23. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 14 / 43
  24. 24. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 15 / 43
  25. 25. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone warn/hot standby Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 15 / 43
  26. 26. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone warn/hot standby single/multi master Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 15 / 43
  27. 27. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone warn/hot standby single/multi master granularité au niveau table Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 15 / 43
  28. 28. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone warn/hot standby single/multi master granularité au niveau table incore/middleware (pgpool-II) Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 15 / 43
  29. 29. replication Vaste programme. La réplication est un des sujets les plus discutés des bases de données à ce jour. synchrone/asynchrone warn/hot standby single/multi master granularité au niveau table incore/middleware (pgpool-II) Warning La réplication est simple à mettre en oeuvre, la gérer au jour le jour est un travail de tous les jours. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 16 / 43
  30. 30. Axes de travail pgtune hardware tablespaces replication connection pooler Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 17 / 43
  31. 31. connection pooler L’utilisation d’un pooler de connection est intéressant quand un grand nombre de connections sont créees pour de courtes durées. Un pooler peut aussi être intéressant conjointement avec une réplication. pgbouncer pgpool-II Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 18 / 43
  32. 32. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 19 / 43
  33. 33. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 20 / 43
  34. 34. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : pour récupérer ou ré-utiliser l’espace disque occupé par les lignes supprimées ou mises à jour Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 20 / 43
  35. 35. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : pour récupérer ou ré-utiliser l’espace disque occupé par les lignes supprimées ou mises à jour pour mettre à jour les statistiques utilisées par l’optimiseur de PostgreSQL Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 20 / 43
  36. 36. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : pour récupérer ou ré-utiliser l’espace disque occupé par les lignes supprimées ou mises à jour pour mettre à jour les statistiques utilisées par l’optimiseur de PostgreSQL pour mettre à jour la carte de visibilité qui accélère les parcours d’index seuls Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 20 / 43
  37. 37. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : pour récupérer ou ré-utiliser l’espace disque occupé par les lignes supprimées ou mises à jour pour mettre à jour les statistiques utilisées par l’optimiseur de PostgreSQL pour mettre à jour la carte de visibilité qui accélère les parcours d’index seuls pour prévenir la perte des données les plus anciennes à cause d’un cycle de l’identifiant de transaction (XID) ou d’un cycle de l’identifiant de multixact. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 20 / 43
  38. 38. vaccum La commande VACUUM doit traiter chaque table régulièrement pour plusieurs raisons : pour récupérer ou ré-utiliser l’espace disque occupé par les lignes supprimées ou mises à jour pour mettre à jour les statistiques utilisées par l’optimiseur de PostgreSQL pour mettre à jour la carte de visibilité qui accélère les parcours d’index seuls pour prévenir la perte des données les plus anciennes à cause d’un cycle de l’identifiant de transaction (XID) ou d’un cycle de l’identifiant de multixact. autovaccum Si vous ne savez pas à quoi sert autovaccum, laissez faire autovaccum. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 21 / 43
  39. 39. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 22 / 43
  40. 40. Vues matérialisées Le meilleur de la table et de la vue. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 23 / 43
  41. 41. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  42. 42. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  43. 43. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  44. 44. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique porte ses propres index Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  45. 45. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique porte ses propres index scinde les flux de requêtes Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  46. 46. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique porte ses propres index scinde les flux de requêtes doit être mise à jour suivant les besoins ! Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  47. 47. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique porte ses propres index scinde les flux de requêtes doit être mise à jour suivant les besoins ! le REFRESH prend un ACCESS EXCLUSIVE LOCK (corrigé en 9.4) Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  48. 48. Vues matérialisées Le meilleur de la table et de la vue. Les meilleures alliées des business analyst. se crée comme une vue crée une table physique porte ses propres index scinde les flux de requêtes doit être mise à jour suivant les besoins ! le REFRESH prend un ACCESS EXCLUSIVE LOCK (corrigé en 9.4) New ! A partir de PostgreSQL 9.3 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 24 / 43
  49. 49. Vues matérialisées Création CREATE MATERIALIZED VIEW resume_ventes AS SELECT no_vendeur, date_facture, sum(mtt_facture)::numeric(13,2) as mtt_ventes FROM facture WHERE date_facture < CURRENT_DATE GROUP BY no_vendeur, date_facture ORDER BY no_vendeur, date_facture; CREATE UNIQUE INDEX ventes_resume_vendeur ON sales_summary (no_vendeur, date_facture); Mise à jour REFRESH MATERIALIZED VIEW resume_ventes; Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 25 / 43
  50. 50. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views partitionnement Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 26 / 43
  51. 51. partitionnement Le partitionnement fait référence à la division d’une table logique volumineuse en plusieurs parties physiques plus petites. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 27 / 43
  52. 52. partitionnement Le partitionnement fait référence à la division d’une table logique volumineuse en plusieurs parties physiques plus petites. utilise l’héritage de table Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 27 / 43
  53. 53. partitionnement Le partitionnement fait référence à la division d’une table logique volumineuse en plusieurs parties physiques plus petites. utilise l’héritage de table partitionnement par échelon Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 27 / 43
  54. 54. partitionnement Le partitionnement fait référence à la division d’une table logique volumineuse en plusieurs parties physiques plus petites. utilise l’héritage de table partitionnement par échelon partitionnement par liste Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 27 / 43
  55. 55. partitionnement Création table maître SQL CREATE TABLE mesure ( id_ville int not null, date_trace date not null, temperature int, ventes int ); Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 28 / 43
  56. 56. partitionnement Création des tables filles avec contraintes SQL CREATE TABLE mesure_a2006m02 ( CHECK ( date_trace >= DATE ’2006-02-01’ AND date_trace < DATE ’2006-03-01’ ) ) INHERITS (mesure); CREATE TABLE mesure_a2006m03 ( CHECK ( date_trace >= DATE ’2006-03-01’ AND date_trace < DATE ’2006-04-01’ ) ) INHERITS (mesure); ... Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 29 / 43
  57. 57. partitionnement Création des index SQL CREATE INDEX mesure_a2006m02_date_trace ON mesure_a2006m02 (date_trace); CREATE INDEX mesure_a2006m03_date_trace ON mesure_a2006m03 (date_trace); ... CREATE INDEX mesure_a2007m11_date_trace ON mesure_a2007m11 (date_trace); CREATE INDEX mesure_a2007m12_date_trace ON mesure_a2007m12 (date_trace); CREATE INDEX mesure_a2008m01_date_trace ON mesure_a2008m01 (date_trace); Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 30 / 43
  58. 58. partitionnement Création des trigger SQL CREATE OR REPLACE FUNCTION mesure_insert_trigger() RETURNS TRIGGER AS $$ BEGIN INSERT INTO mesure_a2008m01 VALUES (NEW.*); RETURN NULL; END; $$ LANGUAGE plpgsql; SQL CREATE TRIGGER insert_mesure_trigger BEFORE INSERT ON mesure FOR EACH ROW EXECUTE PROCEDURE mesure_insert_trigger(); Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 31 / 43
  59. 59. partitionnement Attention à l’utilisation SQL rodo@[local]:5432 rodo=> explain select * from mesure ; QUERY PLAN -------------------------------------------------------------------------- Append (cost=0.00..55.40 rows=3541 width=16) -> Seq Scan on mesure (cost=0.00..0.00 rows=1 width=16) -> Seq Scan on mesure_a2006m02 (cost=0.00..27.70 rows=1770 width=16) -> Seq Scan on mesure_a2006m03 (cost=0.00..27.70 rows=1770 width=16) (4 rows) Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 32 / 43
  60. 60. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views héritage de table index Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 33 / 43
  61. 61. index Il s’avère que la seule chose que les développeurs doivent connaître est l’indexation. En fait, l’indexation d’une base de données est un travail de développeurs car l’information la plus importante pour une bonne indexation ne se situe ni au niveau de la configuration du système de stockage ni dans la configuration du matériel, mais plutôt au niveau de l’application : « comment l’application cherche ses données ». Markus Winand - http://use-the-index-luke.com/fr Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 34 / 43
  62. 62. index Trop d’index nuit à la performance. Mettre à jour un index qui n’est jamais lu n’est pas forcément nécessaire. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 35 / 43
  63. 63. index Trop d’index nuit à la performance. Mettre à jour un index qui n’est jamais lu n’est pas forcément nécessaire. SQL indexrelname | idx_scan | idx_tup_read | idx_tup_fetch --------------------+----------+--------------+--------------- job_job_fkposte_id | 0 | 0 | 0 job_job_region_id | 0 | 0 | 0 job_job_company_id | 43 | 323 | 305 job_job_author_id | 0 | 0 | 0 job_job_pkey | 22968 | 22930 | 22911 (5 rows) Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 35 / 43
  64. 64. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views héritage de table index query Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 36 / 43
  65. 65. query La ré-écriture des requêtes et le travail coté application Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 37 / 43
  66. 66. query La ré-écriture des requêtes et le travail coté application la requête la plus rapide est celle qui n’est pas éxecutée Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 37 / 43
  67. 67. query La ré-écriture des requêtes et le travail coté application la requête la plus rapide est celle qui n’est pas éxecutée rien ne sert de ré-écrire les index si les requêtes ne les utilisent pas Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 37 / 43
  68. 68. query La ré-écriture des requêtes et le travail coté application la requête la plus rapide est celle qui n’est pas éxecutée rien ne sert de ré-écrire les index si les requêtes ne les utilisent pas certains axes d’optimisation ne sont pas compatible avec les framework mal conçus Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 37 / 43
  69. 69. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views héritage de table index query ??? Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 38 / 43
  70. 70. Axes de travail pgtune hardware tablespaces replication connection pooler vaccum materialized views héritage de table index query schema Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 39 / 43
  71. 71. schema Last but not least, le schema reste la source numéro un des problèmes de performance et de montée en charge. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 40 / 43
  72. 72. schema Last but not least, le schema reste la source numéro un des problèmes de performance et de montée en charge. table Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 40 / 43
  73. 73. schema Last but not least, le schema reste la source numéro un des problèmes de performance et de montée en charge. table view Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 40 / 43
  74. 74. schema Last but not least, le schema reste la source numéro un des problèmes de performance et de montée en charge. table view index Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 40 / 43
  75. 75. schema Last but not least, le schema reste la source numéro un des problèmes de performance et de montée en charge. table view index "les jointures c’est bon mangez-en" Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 40 / 43
  76. 76. Conclusion Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 41 / 43
  77. 77. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  78. 78. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  79. 79. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données 2 mesure des indicateurs Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  80. 80. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données 2 mesure des indicateurs 3 modification d’un paramètre Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  81. 81. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données 2 mesure des indicateurs 3 modification d’un paramètre 4 mesure des même indicateurs Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  82. 82. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données 2 mesure des indicateurs 3 modification d’un paramètre 4 mesure des même indicateurs 5 analyse des résultats Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  83. 83. Conclusion Tout modification structurelle doit s’accompagner d’un processus de validation itératif. 1 rédaction d’un protocole de test avec son jeu de données 2 mesure des indicateurs 3 modification d’un paramètre 4 mesure des même indicateurs 5 analyse des résultats 6 goto 3 | 1 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 42 / 43
  84. 84. Questions ? Rodolphe Quiédeville rodolphe@quiedeville.org http://blog.rodolphe.quiedeville.org/ Document publié sous Licence Creative Commons BY-SA 2.0 Rodolphe Quiédeville (Freelance) PostgreSQL quatre ans après 21 mai 2014 43 / 43

×