Workshop 10
Dalibo & Contributors
Ancienne numérotation exprimée sur 3 nombres :
9 . 6 . 3
Majeure1 . Majeure2 . Mineure
Nouvelle numérotation exprimée sur 2 nombres uniquement :
10 . 2
Majeure . Mineure
pg_xlog
-> pg_wal
pg_clog
-> pg_xact
xlog
-> wal
location
-> lsn
xlog
-> wal
pg_class
pg_partitioned_table
Créer une table partitionnée :
CREATE TABLE t1(c1 integer, c2 text) PARTITION BY LIST (c1);
Ajouter une partition :
CREATE TABLE t1_a PARTITION OF t1 FOR VALUES IN (1, 2, 3);
Détacher la partition :
ALTER TABLE t1 DETACH PARTITION t1_a;
Attacher la partition :
ALTER TABLE t1 ATTACH PARTITION t1_a FOR VALUES IN (1, 2, 3);
Créer une table partitionnée :
CREATE TABLE t2(c1 integer, c2 text) PARTITION BY RANGE (c1);
Ajouter une partition :
CREATE TABLE t2_1 PARTITION OF t2 FOR VALUES FROM (1) TO (100);
Détacher une partition :
ALTER TABLE t2 DETACH PARTITION t2_1;
Clé sur plusieurs colonnes acceptée
Créer une table partitionnée avec une clé multi-colonnes :
CREATE TABLE t1(c1 integer, c2 text, c3 date)
PARTITION BY RANGE (c1, c3);
Ajouter une partition :
CREATE TABLE t1_a PARTITION of t1 FOR VALUES
FROM (1,'2017-08-10') TO (100, '2017-08-11');
Table non partitionnée
INSERT INTO t1 SELECT i, 'toto'
FROM generate_series(0, 9999999) i;
Time: 10097.098 ms (00:10.097)
Nouveau partitionnement
INSERT INTO t2 SELECT i, 'toto'
FROM generate_series(0, 9999999) i;
Time: 11448.867 ms (00:11.449)
Ancien partitionnement
INSERT INTO t3 SELECT i, 'toto'
FROM generate_series(0, 9999999) i;
Time: 125351.918 ms (02:05.352)
CHECK
identiqueUPDATE
et DELETE
Définir wal_level à logical
Initialiser une base de données et sauvegarder son schéma
Créer une publication pour toutes les tables
CREATE PUBLICATION ma_publication FOR ALL TABLES;
Créer une publication pour une table
CREATE PUBLICATION ma_publication FOR TABLE t1;
pg_stat_replication
pour l’état de la réplicationpg_replication_slots
pour la définition des slots de réplicationpg_publication
pour la définition des publicationspg_publication_tables
pour la liste des tables publiées par publicationpg_subscription
pour la définition des abonnementspg_replication_origin_status
pour l’état de la réplicationSort Method: external merge
CREATE STATISTICS
Index Scan
et Index Only Scan
)Merge Join
)Gather Merge
)min_parallel_table_scan_size
: taille minimale d’une table (8 Mo)min_parallel_index_scan_size
: taille minimale d’un index (512 ko)min_parallel_relation_size
max_parallel_workers
: nombre maximum de workers que le système peut supporter pour le besoin des requêtes parallèlesSCRAM-SHA-256
pg_hba_file_rules
CREATE POLICY
PERMISSIVE
: politiques d’une table reliées par des OR
RESTRICTIVE
: politiques d’une table reliées par des AND
PERMISSIVE
par défautbackend_type
psql --dbname="postgresql://127.0.0.1:5432,127.0.0.1:5433/ma_db?target_session_attrs=any"
file_fdw
postgres_fdw
FULL JOIN
) sur le serveur distantTous :
synchronous_standby_names = (s1, s2, s3, s4)
Certains par ordre de priorité :
synchronous_standby_names = [FIRST] 3 (s1, s2, s3, s4)
Certains sur la base d’un quorum :
synchronous_standby_names = [ANY] 3 (s1, s2, s3, s4)
-x
none
: pas de récupération des WALfetch
: récupération des WAL à la fin de la copie des donnéesstream
: streaming (par défaut)pg_receivewal
json
et jsonb
ts_headline()
et to_tsvector()
REFERENCING OLD TABLE
REFERENCING NEW TABLE
CREATE TRIGGER tr1
AFTER DELETE ON t1
REFERENCING OLD TABLE AS oldtable
FOR EACH STATEMENT
EXECUTE PROCEDURE log_delete();
pg_sequence
et pg_sequences
CREATE SEQUENCE AS type_donnee
pg_ctl
attend désormais que l’instance soit démarrée avant de rendre la main (identique au comportement à l’arrêt)floating point timestamp
tsearch2
pg_dump
UNENCRYPTED
pour les mots de passeLes outils Dalibo sont à présent compatibles :
Outil | Compatibilité avec PostgreSQL 10 |
---|---|
pgBadger | Oui |
pgCluu | Oui, depuis 2.6 |
ora2Pg | Oui (support du partitionnement déclaratif) |
pg_stat_kcache | Oui, depuis 2.0.3 |
ldap2pg | Oui |
SELECT * FROM questions;
À présent, place à l’atelier…