SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
POSTGRESQL 11
PGDAY.FR - MARSEILLE - 2018-06-26
Jean-Christophe Arnu
LOXODATA
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
QUI
Jean-Christophe Arnu
 PostgreSQL depuis 1998
  PostgreSQLFr et de PGDay.fr
 Consultant PostgreSQL
  @jcarnu
2 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
LOXODATA
Entreprise disposant de 3 piliers d'expertises
PostgreSQL DevOps Cloud
3 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
LOXODATA
Une large palette de services
Architecture Conseil Formation
Administration Audit Support
4 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
ON PLONGE ?
Désolé pas de TL;DR
;-)
5 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
6 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Poursuite des efforts dans le partitionnement logique (syntaxe)
Modi cations internes pour plus de performances
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Partitionnement par Hashage
V10 : par RANGE, LIST
V11 : par hashage HASH
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Partitionnement par Hashage
-- PARTITION BY HASH(colonne)
CREATE TABLE tbl (col1 bigserial primary key, val bigint) PARTITION BY HASH (col1);
CREATE TABLE tbl_1 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE tbl_2 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE tbl_3 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE tbl_4 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 3);
9 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
UPDATE : changement de données entre partitions
CREATE TABLE events (event_ts TIMESTAMPTZ, event_name text) PARTITION BY RANGE (event_ts);
CREATE TABLE events_may PARTITION OF events FOR VALUES
FROM ('2018-05-01T00:00:00.0000') TO ('2018-06-01T00:00:00');
CREATE TABLE events_june PARTITION OF events FOR VALUES
FROM ('2018-06-01T00:00:00.0000') TO ('2018-07-01T00:00:00');
-- Test
INSERT INTO events VALUES ('2018-05-26T09:00:00.0000','PgDay.fr Marseille');
postgres=# select * from events_may;
event_ts | event_name
------------------------+--------------------
2018-05-26 09:00:00+02 | PgDay.fr Marseille
(1 row)
-- Déplacement
UPDATE events SET event_ts='2018-06-26T09:00:00.000' WHERE event_name='PgDay.fr Marseille';
postgres=# select * from events_june;
event_ts | event_name
------------------------+--------------------
2018-06-26 09:00:00+02 | PgDay.fr Marseille
(1 row)
10 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Propagation des index de la table parente aux partitions
CREATE INDEX events_event_ts_idx ON events(event_ts);
postgres=# d events
Table "public.events"
Column | Type | Collation | Nullable | Default
------------+--------------------------+-----------+----------+---------
event_ts | timestamp with time zone | | |
event_name | text | | |
Partition key: RANGE (event_ts)
Indexes:
"events_event_ts_idx" btree (event_ts)
Number of partitions: 2 (Use d+ to list them.)
postgres=# d events_juin
Table "public.events_juin"
Column | Type | Collation | Nullable | Default
------------+--------------------------+-----------+----------+---------
event_ts | timestamp with time zone | | |
event_name | text | | |
Partition of: events FOR VALUES FROM ('2018-06-01 00:00:00+02')
TO ('2018-07-01 00:00:00+02')
Indexes:
"events_juin_event_ts_idx" btree (event_ts)
11 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Partition par défaut
CREATE TABLE events_default PARTITION OF events DEFAULT;
INSERT INTO events VALUES ('2018-10-23 09:00:00','PGConf Europe Lisbonne');
postgres=# select * from events_default ;
event_ts | event_name
------------------------+------------------------
2018-10-23 09:00:00+01 | PGConf Europe Lisbonne
(1 row)
postgres=# d events_default
Table "public.events_default"
Column | Type | Collation | Nullable | Default
------------+--------------------------+-----------+----------+---------
event_ts | timestamp with time zone | | |
event_name | text | | |
Partition of: events DEFAULT
Indexes:
"events_default_event_ts_idx" btree (event_ts)
12 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
Clés primaires et étrangères
Clé primaire ou UNIQUE uniquement
si elle comprend la clé de
partitionnement
Clés étrangères prises en charge
Propagation des clés aux partitions
PARTITIONNEMENT
13 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
INSERT ON CONFLICT
Fonctionne également sur les tables
partitionnées
Ne permet pas l'update entre
partitions
PARTITIONNEMENT
14 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Contrôle des plans d'exécution avec des partitions :
enable_partitionwise_join (off) jointures sur partitions
enable_partitionwise_aggregate (off) agrégats sur partitions
enable_partition_pruning (on) éviction en 2 passes : planner et
executor
15 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARTITIONNEMENT
Améliorations dans le moteur de PostgreSQL :
Triggers FOR EACH ROW sur tables partitionnées (seulement AFTER et
sans WHEN)
Prise en charge dans postgres_fdw : le routage s'effectue vers les
partitions étrangères
16 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
MOTEUR
17 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARALLÉLISME
18 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARALLÉLISME / INDEX
19 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARALLÉLISME / INDEX
Construction parallèle d'index BTree
Index BTree incluant des colonnes "Include"
Possible d'ajouter des statistiques sur une colonne d'index en particulier :
CREATE UNIQUE INDEX terroir_idx ON terroir
USING BTREE (terroir_id) INCLUDE (millesime, cepage);
ALTER INDEX ... ALTER COLUMN <n° colonne> SET STATISTICS 2000;
20 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARALLÉLISME
OPÉRATIONS DE PLANIFICATION
Opération Hash et Hash join parallélisables
Opération Append parallélisable (UNION par exemple)
=# EXPLAIN SELECT AVG(t1.data) FROM t1 JOIN t2 ON t2.refid = t1.id;
QUERY PLAN
-----------------------------------------------------------------------------------------
Finalize Aggregate (cost=44353.17..44353.18 rows=1 width=32)
-> Gather (cost=44352.95..44353.16 rows=2 width=32)
Workers Planned: 2
-> Partial Aggregate (cost=43352.95..43352.96 rows=1 width=32)
-> Parallel Hash Join (cost=23742.00..42311.28 rows=416667 width=8)
Hash Cond: (t1.id = t2.refid)
-> Parallel Seq Scan on t1 (cost=0.00..9572.67 rows=416667 width=16)
-> Parallel Hash (cost=16905.67..16905.67 rows=416667 width=8)
-> Parallel Seq Scan on t2 (cost=0.00..16905.67 rows=416667 widt
(9 rows)
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PARALLÉLISME
SELECT SPÉCIAUX
SELECT des vues matérialisées
SELECT INTO
CREATE TABLE AS SELECT
22 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
JIT
Basée sur LLVM
Pour les gros volumes de données (notamment OLAP)
Fonctionne sur le principe de dépassement de seuils :
jit Active/désactive jit
jit_above_cost Déclenchement jit sur une requête > seuil coût
jit_{inline,optimize}_above_cost Seuils inline et optimisation
23 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
JIT
Sans JIT :
postgres=# EXPLAIN ANALYZE SELECT is_available, COUNT(*) FROM jit_table GROUP BY is_availabl
QUERY PLAN
------------------------------------------------------------------------------------------
...
Planning Time: 0.138 ms
JIT:
Functions: 13
Generation Time: 4.027 ms
Inlining: false
Inlining Time: 0.000 ms
Optimization: false
Optimization Time: 1.356 ms
Emission Time: 43.928 ms
Execution Time: 584.373 ms
(23 rows)
Planning Time: 0.194 ms
Execution Time: 712.831 ms
24 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
TAILLE DES WAL
Taille des WAL dans initdb:
Lors de la création du cluster :
initdb -D mydata --wal-segsize=64
pg_resetwal a aussi l'option
25 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PG_STAT_STATEMENTS
Le hash queryid passe à 64 bits
26 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
RÉPLICATION
Réplication de TRUNCATE dans la réplication logique (CREATE
PUBLICATION)
27 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
REQUÊTES ET PL
28 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
REQUÊTES DE FENÊTRAGE
Support de toutes les options SQL:2011 dans les clauses de fenêtrage
GROUPS et EXCLUDE {CURRENT ROW,GROUP,TIES,NO OTHERS}
29 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
REQUÊTES
LOCK TABLE sur une vue possible
Statistiques sur une fonction dans un index
Possibilité d'indiquer la mise à jour d'un index sur fonction (WITH (
recheck_on_update = on ))
30 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
REQUÊTES
Push down de la clause LIMIT sur les sous-requêtes
Push down des jointures sur UPDATE et DELETE (postgres_fdw)
Possibilité d'indiquer le seuil de passage en TOAST dans un CREATE TABLE
(WITH ( toast_tuple_target = 4096 ))
VACUUM et ANALYZE peuvent prendre plusieurs tables en paramètre.
31 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
JSONB
Interaction jsonb avec PL/Python et PL/Perl
Modules jsonb_plpython{u} et json_plperl
TRANSFORM FOR TYPE jsonb et paramètres de type jsonb
32 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
RECHERCHE TEXTE ET HASHAGE
FTS : websearch_to_tsquery()
JSON/B : json_to_tsvector() et jsonb_to_tsvector()
Opérateur ^@ 'texte' identique à like 'texte%'
Fonctions de hash : sha224(), sha256(), sha384() et sha512()
33 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PROCÉDURES STOCKÉES ET FONCTIONS
Procédures :
Peuvent contrôler la transaction : COMMIT et ROLLBACK
Appel avec CALL procedure() conforme au standard SQL
Fonctionne dans les autres langages (plpy.commit(),
spi_commit()...)
Nouveau mot clé CONSTANT
SET TRANSACTION dans PL/pgSQL
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
ALTER TABLE, COPY ET LOCKS
ALTER TABLE... ADD COLUMN ... DEFAULT non null ne réécrit pas la
table
Nouveaux rôles : pg_{read,write}_server_files pour autoriser
l'utilisation de COPY
Verrouillage au niveau page sur les index GIN GiST et HASH sur prédicat
35 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
OUTILS
36 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
PSQL
sf procedure af che le code d'une procédure ou fonction
Ajout des variables :ERROR :SQLSTATE :ROWCOUNT et
:LAST_ERROR_MESSAGE
gdesc af che les colonnes du résultat et leurs types
ET La killer feature : exit et quit : q
=# SELECT id,dt,name FROM (SELECT * FROM jit1 ORDER BY 2) AS a LIMIT 5 gdesc
Column | Type
--------+--------------------------
id | bigint
dt | timestamp with time zone
name | text
(3 rows)
37 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
BACKUP
pg_dump et pg_restore:
Indiquer si on dumpe à partir d'une partition ou d'une table partitionnée
Option --no-comments
pg_dumpall dispose maintenant de l'option d'encodage -E
pg_basebackup
Checksum de validation des backups par défaut dans pg_basebackup
Table "UNLOGGED" et "TEMP" sont exclues du backup
--slot et --create-slot
38 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
POSTGRESQL 12
Pluggable Storage API : zHeap, mais aussi d'autres
MERGE (rejeté en V11 mais INSERT ON CONFLICT)
Plus de parallélisme (encore!)
Plus de JIT !
39 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
CONCLUSION
40 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
Poursuite du travail initié en v10 (Paritionnement, parallélisme)
Améliorations importantes dans les performances (JIT, parallélisme, ALTER
TABLE)
Nouveautés fonctionnelles (PROCEDURES, index ...)
41 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
ET AUSSI!
42 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
Rendre les femmes de PostgreSQL plus visibles
  @PostgresWomen
  
  
https://www.facebook.com/PostgresWomen/
https://www.postgresql.org/list/pgsql-women/
43 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
All we need is love!
: last friday of July
: 256th day of the year
: rst friday of July
Sysadmin appreciation day
Day of the Programmer
DBA appreciation day
44 / 45
 LOXODATA
PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com
C'EST FINI !
Vraiment ni ?
 Nous recrutons !
  
QUESTIONS ?
MERCI ! :-)
recrutement@loxodata.com
45 / 45

Weitere ähnliche Inhalte

Ähnlich wie Pg11 pgday 2018

Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaPatrick Allaert
 
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Arthur Lutz
 
Business Intelligence system
Business Intelligence system Business Intelligence system
Business Intelligence system Basma Saad
 
Stata presentation-1.pdf
Stata presentation-1.pdfStata presentation-1.pdf
Stata presentation-1.pdfKarimMustapha1
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8lyonjug
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
Twido soft ARROSAGE AUTOMATIQUE
Twido soft   ARROSAGE AUTOMATIQUETwido soft   ARROSAGE AUTOMATIQUE
Twido soft ARROSAGE AUTOMATIQUEmohamed elguerri
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020SEO CAMP
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteYann Caron
 
Mathcad 15 m045 à lire en premier
Mathcad 15 m045 à lire en premierMathcad 15 m045 à lire en premier
Mathcad 15 m045 à lire en premierCaroline de Villèle
 
Reporting et Décisionnel - Mise en œuvre d’un système intégré
Reporting et Décisionnel - Mise en œuvre d’un système intégréReporting et Décisionnel - Mise en œuvre d’un système intégré
Reporting et Décisionnel - Mise en œuvre d’un système intégréConstantin ZAMORA
 
Bato Base Arrêt Transport Ouverte
Bato Base Arrêt Transport OuverteBato Base Arrêt Transport Ouverte
Bato Base Arrêt Transport OuverteFabMob
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
04 Introduction au logiciel R
04 Introduction au logiciel R04 Introduction au logiciel R
04 Introduction au logiciel RBoris Guarisma
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Fabien Baligand
 

Ähnlich wie Pg11 pgday 2018 (20)

Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
Data scientist
Data scientistData scientist
Data scientist
 
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
Meetup Nantes Monitoring - Supervision d'une application web (et de son archi...
 
Business Intelligence system
Business Intelligence system Business Intelligence system
Business Intelligence system
 
Stata presentation-1.pdf
Stata presentation-1.pdfStata presentation-1.pdf
Stata presentation-1.pdf
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
Twido soft ARROSAGE AUTOMATIQUE
Twido soft   ARROSAGE AUTOMATIQUETwido soft   ARROSAGE AUTOMATIQUE
Twido soft ARROSAGE AUTOMATIQUE
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
Core web vitals pour unifier UX et SEO - Stephane Rios - SEO Camp'us paris 2020
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
 
Mathcad 15 m045 à lire en premier
Mathcad 15 m045 à lire en premierMathcad 15 m045 à lire en premier
Mathcad 15 m045 à lire en premier
 
Reporting et Décisionnel - Mise en œuvre d’un système intégré
Reporting et Décisionnel - Mise en œuvre d’un système intégréReporting et Décisionnel - Mise en œuvre d’un système intégré
Reporting et Décisionnel - Mise en œuvre d’un système intégré
 
Bato Base Arrêt Transport Ouverte
Bato Base Arrêt Transport OuverteBato Base Arrêt Transport Ouverte
Bato Base Arrêt Transport Ouverte
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
04 Introduction au logiciel R
04 Introduction au logiciel R04 Introduction au logiciel R
04 Introduction au logiciel R
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)
 

Pg11 pgday 2018

  • 1.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com POSTGRESQL 11 PGDAY.FR - MARSEILLE - 2018-06-26 Jean-Christophe Arnu LOXODATA
  • 2.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com QUI Jean-Christophe Arnu  PostgreSQL depuis 1998   PostgreSQLFr et de PGDay.fr  Consultant PostgreSQL   @jcarnu 2 / 45
  • 3.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com LOXODATA Entreprise disposant de 3 piliers d'expertises PostgreSQL DevOps Cloud 3 / 45
  • 4.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com LOXODATA Une large palette de services Architecture Conseil Formation Administration Audit Support 4 / 45
  • 5.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com ON PLONGE ? Désolé pas de TL;DR ;-) 5 / 45
  • 6.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT 6 / 45
  • 7.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Poursuite des efforts dans le partitionnement logique (syntaxe) Modi cations internes pour plus de performances
  • 8.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Partitionnement par Hashage V10 : par RANGE, LIST V11 : par hashage HASH
  • 9.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Partitionnement par Hashage -- PARTITION BY HASH(colonne) CREATE TABLE tbl (col1 bigserial primary key, val bigint) PARTITION BY HASH (col1); CREATE TABLE tbl_1 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 0); CREATE TABLE tbl_2 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 1); CREATE TABLE tbl_3 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 2); CREATE TABLE tbl_4 PARTITION OF tbl FOR VALUES WITH (MODULUS 4, REMAINDER 3); 9 / 45
  • 10.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT UPDATE : changement de données entre partitions CREATE TABLE events (event_ts TIMESTAMPTZ, event_name text) PARTITION BY RANGE (event_ts); CREATE TABLE events_may PARTITION OF events FOR VALUES FROM ('2018-05-01T00:00:00.0000') TO ('2018-06-01T00:00:00'); CREATE TABLE events_june PARTITION OF events FOR VALUES FROM ('2018-06-01T00:00:00.0000') TO ('2018-07-01T00:00:00'); -- Test INSERT INTO events VALUES ('2018-05-26T09:00:00.0000','PgDay.fr Marseille'); postgres=# select * from events_may; event_ts | event_name ------------------------+-------------------- 2018-05-26 09:00:00+02 | PgDay.fr Marseille (1 row) -- Déplacement UPDATE events SET event_ts='2018-06-26T09:00:00.000' WHERE event_name='PgDay.fr Marseille'; postgres=# select * from events_june; event_ts | event_name ------------------------+-------------------- 2018-06-26 09:00:00+02 | PgDay.fr Marseille (1 row) 10 / 45
  • 11.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Propagation des index de la table parente aux partitions CREATE INDEX events_event_ts_idx ON events(event_ts); postgres=# d events Table "public.events" Column | Type | Collation | Nullable | Default ------------+--------------------------+-----------+----------+--------- event_ts | timestamp with time zone | | | event_name | text | | | Partition key: RANGE (event_ts) Indexes: "events_event_ts_idx" btree (event_ts) Number of partitions: 2 (Use d+ to list them.) postgres=# d events_juin Table "public.events_juin" Column | Type | Collation | Nullable | Default ------------+--------------------------+-----------+----------+--------- event_ts | timestamp with time zone | | | event_name | text | | | Partition of: events FOR VALUES FROM ('2018-06-01 00:00:00+02') TO ('2018-07-01 00:00:00+02') Indexes: "events_juin_event_ts_idx" btree (event_ts) 11 / 45
  • 12.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Partition par défaut CREATE TABLE events_default PARTITION OF events DEFAULT; INSERT INTO events VALUES ('2018-10-23 09:00:00','PGConf Europe Lisbonne'); postgres=# select * from events_default ; event_ts | event_name ------------------------+------------------------ 2018-10-23 09:00:00+01 | PGConf Europe Lisbonne (1 row) postgres=# d events_default Table "public.events_default" Column | Type | Collation | Nullable | Default ------------+--------------------------+-----------+----------+--------- event_ts | timestamp with time zone | | | event_name | text | | | Partition of: events DEFAULT Indexes: "events_default_event_ts_idx" btree (event_ts) 12 / 45
  • 13.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com Clés primaires et étrangères Clé primaire ou UNIQUE uniquement si elle comprend la clé de partitionnement Clés étrangères prises en charge Propagation des clés aux partitions PARTITIONNEMENT 13 / 45
  • 14.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com INSERT ON CONFLICT Fonctionne également sur les tables partitionnées Ne permet pas l'update entre partitions PARTITIONNEMENT 14 / 45
  • 15.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Contrôle des plans d'exécution avec des partitions : enable_partitionwise_join (off) jointures sur partitions enable_partitionwise_aggregate (off) agrégats sur partitions enable_partition_pruning (on) éviction en 2 passes : planner et executor 15 / 45
  • 16.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARTITIONNEMENT Améliorations dans le moteur de PostgreSQL : Triggers FOR EACH ROW sur tables partitionnées (seulement AFTER et sans WHEN) Prise en charge dans postgres_fdw : le routage s'effectue vers les partitions étrangères 16 / 45
  • 17.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com MOTEUR 17 / 45
  • 18.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARALLÉLISME 18 / 45
  • 19.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARALLÉLISME / INDEX 19 / 45
  • 20.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARALLÉLISME / INDEX Construction parallèle d'index BTree Index BTree incluant des colonnes "Include" Possible d'ajouter des statistiques sur une colonne d'index en particulier : CREATE UNIQUE INDEX terroir_idx ON terroir USING BTREE (terroir_id) INCLUDE (millesime, cepage); ALTER INDEX ... ALTER COLUMN <n° colonne> SET STATISTICS 2000; 20 / 45
  • 21.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARALLÉLISME OPÉRATIONS DE PLANIFICATION Opération Hash et Hash join parallélisables Opération Append parallélisable (UNION par exemple) =# EXPLAIN SELECT AVG(t1.data) FROM t1 JOIN t2 ON t2.refid = t1.id; QUERY PLAN ----------------------------------------------------------------------------------------- Finalize Aggregate (cost=44353.17..44353.18 rows=1 width=32) -> Gather (cost=44352.95..44353.16 rows=2 width=32) Workers Planned: 2 -> Partial Aggregate (cost=43352.95..43352.96 rows=1 width=32) -> Parallel Hash Join (cost=23742.00..42311.28 rows=416667 width=8) Hash Cond: (t1.id = t2.refid) -> Parallel Seq Scan on t1 (cost=0.00..9572.67 rows=416667 width=16) -> Parallel Hash (cost=16905.67..16905.67 rows=416667 width=8) -> Parallel Seq Scan on t2 (cost=0.00..16905.67 rows=416667 widt (9 rows)
  • 22.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PARALLÉLISME SELECT SPÉCIAUX SELECT des vues matérialisées SELECT INTO CREATE TABLE AS SELECT 22 / 45
  • 23.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com JIT Basée sur LLVM Pour les gros volumes de données (notamment OLAP) Fonctionne sur le principe de dépassement de seuils : jit Active/désactive jit jit_above_cost Déclenchement jit sur une requête > seuil coût jit_{inline,optimize}_above_cost Seuils inline et optimisation 23 / 45
  • 24.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com JIT Sans JIT : postgres=# EXPLAIN ANALYZE SELECT is_available, COUNT(*) FROM jit_table GROUP BY is_availabl QUERY PLAN ------------------------------------------------------------------------------------------ ... Planning Time: 0.138 ms JIT: Functions: 13 Generation Time: 4.027 ms Inlining: false Inlining Time: 0.000 ms Optimization: false Optimization Time: 1.356 ms Emission Time: 43.928 ms Execution Time: 584.373 ms (23 rows) Planning Time: 0.194 ms Execution Time: 712.831 ms 24 / 45
  • 25.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com TAILLE DES WAL Taille des WAL dans initdb: Lors de la création du cluster : initdb -D mydata --wal-segsize=64 pg_resetwal a aussi l'option 25 / 45
  • 26.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PG_STAT_STATEMENTS Le hash queryid passe à 64 bits 26 / 45
  • 27.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com RÉPLICATION Réplication de TRUNCATE dans la réplication logique (CREATE PUBLICATION) 27 / 45
  • 28.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com REQUÊTES ET PL 28 / 45
  • 29.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com REQUÊTES DE FENÊTRAGE Support de toutes les options SQL:2011 dans les clauses de fenêtrage GROUPS et EXCLUDE {CURRENT ROW,GROUP,TIES,NO OTHERS} 29 / 45
  • 30.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com REQUÊTES LOCK TABLE sur une vue possible Statistiques sur une fonction dans un index Possibilité d'indiquer la mise à jour d'un index sur fonction (WITH ( recheck_on_update = on )) 30 / 45
  • 31.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com REQUÊTES Push down de la clause LIMIT sur les sous-requêtes Push down des jointures sur UPDATE et DELETE (postgres_fdw) Possibilité d'indiquer le seuil de passage en TOAST dans un CREATE TABLE (WITH ( toast_tuple_target = 4096 )) VACUUM et ANALYZE peuvent prendre plusieurs tables en paramètre. 31 / 45
  • 32.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com JSONB Interaction jsonb avec PL/Python et PL/Perl Modules jsonb_plpython{u} et json_plperl TRANSFORM FOR TYPE jsonb et paramètres de type jsonb 32 / 45
  • 33.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com RECHERCHE TEXTE ET HASHAGE FTS : websearch_to_tsquery() JSON/B : json_to_tsvector() et jsonb_to_tsvector() Opérateur ^@ 'texte' identique à like 'texte%' Fonctions de hash : sha224(), sha256(), sha384() et sha512() 33 / 45
  • 34.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PROCÉDURES STOCKÉES ET FONCTIONS Procédures : Peuvent contrôler la transaction : COMMIT et ROLLBACK Appel avec CALL procedure() conforme au standard SQL Fonctionne dans les autres langages (plpy.commit(), spi_commit()...) Nouveau mot clé CONSTANT SET TRANSACTION dans PL/pgSQL
  • 35.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com ALTER TABLE, COPY ET LOCKS ALTER TABLE... ADD COLUMN ... DEFAULT non null ne réécrit pas la table Nouveaux rôles : pg_{read,write}_server_files pour autoriser l'utilisation de COPY Verrouillage au niveau page sur les index GIN GiST et HASH sur prédicat 35 / 45
  • 36.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com OUTILS 36 / 45
  • 37.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com PSQL sf procedure af che le code d'une procédure ou fonction Ajout des variables :ERROR :SQLSTATE :ROWCOUNT et :LAST_ERROR_MESSAGE gdesc af che les colonnes du résultat et leurs types ET La killer feature : exit et quit : q =# SELECT id,dt,name FROM (SELECT * FROM jit1 ORDER BY 2) AS a LIMIT 5 gdesc Column | Type --------+-------------------------- id | bigint dt | timestamp with time zone name | text (3 rows) 37 / 45
  • 38.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com BACKUP pg_dump et pg_restore: Indiquer si on dumpe à partir d'une partition ou d'une table partitionnée Option --no-comments pg_dumpall dispose maintenant de l'option d'encodage -E pg_basebackup Checksum de validation des backups par défaut dans pg_basebackup Table "UNLOGGED" et "TEMP" sont exclues du backup --slot et --create-slot 38 / 45
  • 39.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com POSTGRESQL 12 Pluggable Storage API : zHeap, mais aussi d'autres MERGE (rejeté en V11 mais INSERT ON CONFLICT) Plus de parallélisme (encore!) Plus de JIT ! 39 / 45
  • 40.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com CONCLUSION 40 / 45
  • 41.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com Poursuite du travail initié en v10 (Paritionnement, parallélisme) Améliorations importantes dans les performances (JIT, parallélisme, ALTER TABLE) Nouveautés fonctionnelles (PROCEDURES, index ...) 41 / 45
  • 42.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com ET AUSSI! 42 / 45
  • 43.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com Rendre les femmes de PostgreSQL plus visibles   @PostgresWomen       https://www.facebook.com/PostgresWomen/ https://www.postgresql.org/list/pgsql-women/ 43 / 45
  • 44.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com All we need is love! : last friday of July : 256th day of the year : rst friday of July Sysadmin appreciation day Day of the Programmer DBA appreciation day 44 / 45
  • 45.  LOXODATA PostgreSQL 11- PgDay.fr 2018 - Marseille - 2018-06-26 -      -  cc-by-nc@jcarnu jc.arnu@loxodata.com C'EST FINI ! Vraiment ni ?  Nous recrutons !    QUESTIONS ? MERCI ! :-) recrutement@loxodata.com 45 / 45