SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
SQL
Internals
Configuration
PostgreSQL 9.5 : Nouveautés
Sébastien Lardière
mars 2016
S. Lardière PG95 – mars 2016 1 / 35
SQL
Internals
Configuration
PostgreSQL 9.5 : Nouveautés
1 SQL 2 Internals 3 Configuration
S. Lardière PG95 – mars 2016 2 / 35
SQL
Internals
Configuration
SQL
S. Lardière PG95 – mars 2016 3 / 35
SQL
Internals
Configuration
SQL
Langage SQL :
Sécurité
Performances
Transactions
S. Lardière PG95 – mars 2016 4 / 35
SQL
Internals
Configuration
UPSERT
UPSERT
INSERT or UPDATE
Faisable en plpgSQL
Transactions
S. Lardière PG95 – mars 2016 5 / 35
SQL
Internals
Configuration
UPSERT
L’exemple suivant montre l’insertion dans une table d’enregistrement de statistiques :
Exemple
INSERT INTO user_stats (id, connect)
VALUES (12345,1),(87654,1)
ON CONFLICT (id)
DO UPDATE SET connect = user_stats.connect + EXCLUDED.connect;
S. Lardière PG95 – mars 2016 6 / 35
SQL
Internals
Configuration
Row-Level Security Policies
Row-Level Security Policies
Contrôle d’accès aux données
Accès aux tuples
Utilisation de fonction utilisateur
S. Lardière PG95 – mars 2016 7 / 35
SQL
Internals
Configuration
Row-Level Security Policies
La fonction usertoid() traduit un nom d’utilisateur en id :
Exemple
ALTER TABLE user_stats ENABLE ROW LEVEL SECURITY;
CREATE POLICY policy_user ON user_stats
FOR ALL
TO PUBLIC
USING (id = usertoid(current_user));
S. Lardière PG95 – mars 2016 8 / 35
SQL
Internals
Configuration
GROUPING SETS, CUBE and ROLLUP
GROUPING SETS, CUBE and ROLLUP
Extension de GROUP BY
Permet plusieurs regroupements
Remplace UNION ALL
S. Lardière PG95 – mars 2016 9 / 35
SQL
Internals
Configuration
GROUPING SETS, CUBE and ROLLUP
Exemple :
Exemple
select gender, title, count(*)
from employees join titles using (emp_no)
group by
grouping sets ( ( gender, title ), (title), (gender), () ) ;
S. Lardière PG95 – mars 2016 10 / 35
SQL
Internals
Configuration
GROUPING SETS, CUBE and ROLLUP
Les trois fonctions ont chacune leur rôle :
GROUPING SETS ( (attr1, attr2), (attr2), (attr3, attr1) )
CUBE( attr1, attr2, attr3 )
ROLLUP( attr1, attr2, attr3 )
S. Lardière PG95 – mars 2016 11 / 35
SQL
Internals
Configuration
TABLESAMPLE
TABLESAMPLE
Utilisation d’un échantillon de données
Approximation du résultat
Différents algorythmes : SYSTEM, BERNOULLI
S. Lardière PG95 – mars 2016 12 / 35
SQL
Internals
Configuration
TABLESAMPLE
Exemple
employees=$
select avg(salary) from salaries ;
-[ RECORD 1 ]–––––-
avg | 63810.744836143706
Time: 318.682 ms
employees=$ select avg(salary) from salaries TABLESAMPLE system ( 0.1 );
-[ RECORD 1 ]–––––-
avg | 62681.119426751592
Time: 2.552 ms
employees=$ select avg(salary) from salaries TABLESAMPLE system ( 0.01 );
-[ RECORD 1 ]–––––-
avg | 62807.193205944798
Time: 0.584 ms
S. Lardière PG95 – mars 2016 13 / 35
SQL
Internals
Configuration
IMPORT FOREIGN SCHEMA
IMPORT FOREIGN SCHEMA
Import d’un schéma complet
Simplifie l’utilisation des FDWs
uniquement postgres_fdw pour le moment
S. Lardière PG95 – mars 2016 14 / 35
SQL
Internals
Configuration
Fonctions JSONB
L’opérateur || permet de concaténer des données jsonb
L’opérateur - permet de supprimer une clé d’une donnée jsonb
La fonction jsonb_set permet de mettre à jour la valeur d’une clé d’une donnée jsonb
La fonction jsonb_pretty permet de créer un rendu texte lisible depuis une donnée
jsonb
S. Lardière PG95 – mars 2016 15 / 35
SQL
Internals
Configuration
ALTER TABLE ... SET LOGGED / UNLOGGED
ALTER TABLE ... SET LOGGED / UNLOGGED
Possibilité de modifier le mode UNLOGGED :
Exemple
ALTER TABLE user_stats SET LOGGED ;
S. Lardière PG95 – mars 2016 16 / 35
SQL
Internals
Configuration
SKIP LOCKED
SKIP LOCKED
Modifie le comportement de SELECT ... FOR UPDATE
Ignore les verrous déjà posé
Obtiens les verrous libres
S. Lardière PG95 – mars 2016 17 / 35
SQL
Internals
Configuration
CREATE INDEX IF NOT EXISTS
CREATE INDEX IF NOT EXISTS
Pas d’erreur si l’index existe déjà :
Exemple
employees=# create unique index departments_dept_name_idx ON departments (dept_name) ;
ERROR: relation "departments_dept_name_idx" already exists
employees=# create unique index IF NOT EXISTS departments_dept_name_idx ON departments (dept_nam
NOTICE: relation "departments_dept_name_idx" already exists, skipping
CREATE INDEX
employees=# create unique index IF NOT EXISTS departments_dept_name_idx_fake ON departments (dep
CREATE INDEX
employees=# drop index departments_dept_name_idx_fake;
DROP INDEX
S. Lardière PG95 – mars 2016 18 / 35
SQL
Internals
Configuration
INTERNALS
S. Lardière PG95 – mars 2016 19 / 35
SQL
Internals
Configuration
Index BRIN
Index BRIN
Nouveau type d’index :Block Range INdex
Très gros volume de données (log)
Valeurs limites des blocs
Accès rapide aux pages de la table
S. Lardière PG95 – mars 2016 20 / 35
SQL
Internals
Configuration
Foreign Table Inheritance
Foreign Table Inheritance
Héritage de table étrangère
Utile pour le Sharding
S. Lardière PG95 – mars 2016 21 / 35
SQL
Internals
Configuration
Abbreviated Keys
Optimisation de tris (Abbreviated Keys)
Méthode alterative pour un tri
Version abrégée de la donnée
8 premiers octets
Divise par 3 le temps de tri
Types text et numeric
S. Lardière PG95 – mars 2016 22 / 35
SQL
Internals
Configuration
Améliorations du verrouillage
Améliorations du verrouillage
Lors des lectures
Diminuer l’impact de l’acquisition d’un verrou
Plus de “spinlock” exclusif
Améliore la concurrence en lecture
S. Lardière PG95 – mars 2016 23 / 35
SQL
Internals
Configuration
Réduction de la mémoire
Réduction de l’utilisation de la mémoire par backend
Référence à la mémoire partagée
Dans la mémoire des “backends”
Intérressant quand la mémoire partagée est importante
S. Lardière PG95 – mars 2016 24 / 35
SQL
Internals
Configuration
pg_rewind
pg_rewind
Commande système
Utile dans un contexte HA “service”
Remet un ancien “primary” au niveau de l’actuel “primary”
S. Lardière PG95 – mars 2016 25 / 35
SQL
Internals
Configuration
VACUUM en parallèle
VACUUM en parallèle
Commande système
Switch -j
Tables volumineuses en premier
S. Lardière PG95 – mars 2016 26 / 35
SQL
Internals
Configuration
CONFIGURATION
S. Lardière PG95 – mars 2016 27 / 35
SQL
Internals
Configuration
Suivi de l’horodatage des COMMIT
Suivi de l’horodatage des COMMIT
paramètre track_commit_timestamp
dans les WALs
pour chacune des transactions
utile pour BDR
S. Lardière PG95 – mars 2016 28 / 35
SQL
Internals
Configuration
Nom de l’instance
Nom de l’instance
paramètre cluster_name
complète l’utilisation du port TCP
utile lors de multiples instances
S. Lardière PG95 – mars 2016 29 / 35
SQL
Internals
Configuration
Gestion du recyclage des WAL et des CHECKPOINTs
Gestion du recyclage des WAL et des CHECKPOINTs
paramètres min_wal_size et max_wal_size
remplace checkpoint_segment
Donne une plage de déclenchement de CHECKPOINT
S. Lardière PG95 – mars 2016 30 / 35
SQL
Internals
Configuration
Contrôle de restauration
Contrôle de restauration
paramètre recovery_target_action dans recovery.conf
remplace pause_at_recovery_target
Donne une plage de déclenchement de CHECKPOINT
S. Lardière PG95 – mars 2016 31 / 35
SQL
Internals
Configuration
Mise à jour des index GIN
Mise à jour des index GIN
paramètre gin_pending_list_limit
Liste d’attente des index GIN (fastupdate)
Modifie les performances
S. Lardière PG95 – mars 2016 32 / 35
SQL
Internals
Configuration
RESET SYSTEM
RESET SYSTEM
SQL :
Exemple
ALTER SYSTEM RESET wal_level;
S. Lardière PG95 – mars 2016 33 / 35
SQL
Internals
Configuration
9.6
Parallélisme, Partitionnement, Planner
Feature Freeze le 8 avril
Beta en Mai
S. Lardière PG95 – mars 2016 34 / 35
SQL
Internals
Configuration
Merci!
Des Questions?
S. Lardière PG95 – mars 2016 35 / 35

Contenu connexe

Similaire à Nouveautés de PostgreSQL 9.5

SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksPhilippe Geiger
 
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnelsUSI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnelsJoseph Glorieux
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
[JSS2015] Nouveautés SSIS SSRS 2016
[JSS2015] Nouveautés SSIS SSRS 2016[JSS2015] Nouveautés SSIS SSRS 2016
[JSS2015] Nouveautés SSIS SSRS 2016GUSS
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Guillaume Nocent
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query StoreGUSS
 
Azure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceAzure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceMicrosoft Décideurs IT
 
Azure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceAzure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceMicrosoft Technet France
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerMicrosoft
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdfMbarkiIsraa
 
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Olivier DASINI
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paasChristophe Laporte
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data LakeGUSS
 
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...Jean-Pierre Riehl
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureGUSS
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Jean-Pierre Riehl
 

Similaire à Nouveautés de PostgreSQL 9.5 (20)

SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
 
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnelsUSI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
[JSS2015] Nouveautés SSIS SSRS 2016
[JSS2015] Nouveautés SSIS SSRS 2016[JSS2015] Nouveautés SSIS SSRS 2016
[JSS2015] Nouveautés SSIS SSRS 2016
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016Présentation JSS2015 - Le Query Store de SQL Server 2016
Présentation JSS2015 - Le Query Store de SQL Server 2016
 
[JSS2015] Query Store
[JSS2015] Query Store[JSS2015] Query Store
[JSS2015] Query Store
 
Azure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceAzure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérience
 
Azure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérienceAzure SQL Database, approche et retours d'expérience
Azure SQL Database, approche et retours d'expérience
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL Server
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdf
 
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1
 
Sql saturday 323 paris 2014 azure migration iaas et paas
Sql saturday 323 paris 2014   azure migration iaas et paasSql saturday 323 paris 2014   azure migration iaas et paas
Sql saturday 323 paris 2014 azure migration iaas et paas
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
 
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
SQLSaturday Toulouse 2017 - Azure Data Lake : SELECT people FROM data-lake WH...
 
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans AzureSQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
SQLSaturday Paris 2014 - Et hop, ma base migre dans Azure
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
Azure Data Lake, le Big Data 2.0 - SQL Saturday Montreal 2017
 

Plus de slardiere

Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12slardiere
 
PostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec PatroniPostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec Patronislardiere
 
pgBackRest - pgday.fr
pgBackRest - pgday.frpgBackRest - pgday.fr
pgBackRest - pgday.frslardiere
 
Structures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, LoxodataStructures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, Loxodataslardiere
 
Historique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' LoxodataHistorique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' Loxodataslardiere
 
PostgreSQL plprofiler - Mars 2017 - Loxodata
PostgreSQL  plprofiler - Mars 2017 - LoxodataPostgreSQL  plprofiler - Mars 2017 - Loxodata
PostgreSQL plprofiler - Mars 2017 - Loxodataslardiere
 

Plus de slardiere (6)

Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12Nouveautés PostgreSQL 12
Nouveautés PostgreSQL 12
 
PostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec PatroniPostgreSQL - Haute disponibilité avec Patroni
PostgreSQL - Haute disponibilité avec Patroni
 
pgBackRest - pgday.fr
pgBackRest - pgday.frpgBackRest - pgday.fr
pgBackRest - pgday.fr
 
Structures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, LoxodataStructures internes des données sur disque, Mai 2016, Loxodata
Structures internes des données sur disque, Mai 2016, Loxodata
 
Historique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' LoxodataHistorique des bases de données, Mars 2016' Loxodata
Historique des bases de données, Mars 2016' Loxodata
 
PostgreSQL plprofiler - Mars 2017 - Loxodata
PostgreSQL  plprofiler - Mars 2017 - LoxodataPostgreSQL  plprofiler - Mars 2017 - Loxodata
PostgreSQL plprofiler - Mars 2017 - Loxodata
 

Nouveautés de PostgreSQL 9.5