Extensions PostgreSQL dans Azure Database pour PostgreSQL - Serveur flexible

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur flexible

Le serveur flexible Azure Database pour PostgreSQL permet d’étendre les fonctionnalités de votre base de données avec des extensions. Les extensions regroupent plusieurs objets SQL associés au sein d’un package qui peut être chargé ou supprimé de votre base de données à l’aide d’une commande. Une fois chargées dans la base de données, les extensions fonctionnent comme des fonctionnalités intégrées.

Guide pratique pour utiliser les extensions PostgreSQL

Avant d’installer des extensions dans le serveur flexible Azure Database pour PostgreSQL, vous devez les ajouter à la liste d’autorisation pour les utiliser.

À l’aide du Portail Azure :

  1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.
  2. Dans la barre latérale, sélectionnez Paramètres du serveur.
  3. Recherchez le paramètre azure.extensions.
  4. Sélectionnez les extensions que vous souhaitez ajouter à la liste d’autorisation. Capture d’écran montrant Serveur flexible Azure Database pour PostgreSQL : extensions dans la liste verte pour l’installation.

Avec Azure CLI :

Vous pouvez ajouter des extensions à la liste d’autorisation en utilisant la commande CLI « parameter set ».

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

Avec un modèle ARM : l’exemple ci-dessous autorise les extensions dblink, dict_xsyn et pg_buffercache sur le serveur mypostgreserver

{

    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",

    "contentVersion": "1.0.0.0",

    "parameters": {

        "flexibleServers_name": {

            "defaultValue": "mypostgreserver",

            "type": "String"

        },

        "azure_extensions_set_value": {

            "defaultValue": " dblink,dict_xsyn,pg_buffercache",

            "type": "String"

        }

    },

    "variables": {},

    "resources": [

        {

            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",

            "apiVersion": "2021-06-01",

            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",

            "properties": {

                "value": "[parameters('azure_extensions_set_value')]",

                "source": "user-override"

            }

        }

    ]

}

shared_preload_libraries est un paramètre de configuration de serveur qui détermine les bibliothèques à charger lors du démarrage du serveur flexible Azure Database pour PostgreSQL. Toutes les bibliothèques qui utilisent de la mémoire partagée doivent être chargées via ce paramètre. Si votre extension doit être ajoutée aux bibliothèques partagées de préchargement, cette opération peut être effectuée :

À l’aide du Portail Azure :

  1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.
  2. Dans la barre latérale, sélectionnez Paramètres du serveur.
  3. Recherchez le paramètre shared_preload_libraries.
  4. Sélectionnez les extensions que vous souhaitez ajouter. Capture d’écran montrant Azure Database pour PostgreSQL : configuration de paramètre de bibliothèques préchargées partagées pour l’installation d’extensions.

Avec Azure CLI :

Vous pouvez définir shared_preload_libraries en utilisant la commande CLI « parameter set ».

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

Une fois que les extensions ont été ajoutées à la liste d’autorisation et chargées, elles doivent être installées dans votre base de données en vue de leur utilisation. Pour installer une extension, vous devez exécuter la commande CREATE EXTENSION. Cette commande charge les objets empaquetés dans votre base de données.

Remarque

Les extensions tierces proposées dans le serveur flexible Azure Database pour PostgreSQL disposent d’un code sous licence open source. Nous n’offrons actuellement aucune extension ou aucune version d’extension tierce avec des modèles de licence Premium ou propriétaires.

Le serveur flexible Azure Database pour PostgreSQL prend en charge une partie des extensions PostgreSQL clés, comme indiqué ci-dessous. Ces informations sont également disponibles en exécutant SHOW azure.extensions;. Les extensions non listées dans ce document ne sont pas prises en charge sur le serveur flexible Azure Database pour PostgreSQL. Vous ne pouvez ni créer ni charger votre propre extension dans le serveur flexible Azure Database pour PostgreSQL.

Versions d’extension

Les extensions suivantes sont disponibles dans le serveur flexible Azure Database pour PostgreSQL :

Remarque

Les extensions du tableau suivant avec la ✔️ marque nécessitent que leurs bibliothèques correspondantes soient activées dans le paramètre de serveur shared_preload_libraries .

Nom de l’extension Description PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Utilisé pour analyser une adresse et la décomposer en éléments constitutifs, généralement afin de prendre en charge l’étape de normalisation des adresses par géocodage. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Exemple de jeu de données de normalisation des adresses aux États-Unis 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Fonctions permettant de vérifier l’intégrité de la relation 1.3 1.3 1.3 1.2 1.2 1.1
anon (préversion) Outils d’anonymisation des données 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️
azure_ai Intégration d’Azure AI et de ML Services pour PostgreSQL 1.0.0 1.0.0 1.0.0 1.0.0 N/A N/A
azure_storage Intégration d’Azure pour PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ S/O
bloom Méthode d’accès Bloom, index basé sur un fichier de signature 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Prise en charge de l’indexation des types de données communs dans GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Prise en charge de l’indexation des types de données communs dans GiST 1.7 1.7 1.6 1.5 1.5 1.5
citext Type de données des chaînes de caractères sans respect de la casse 1.6 1.6 1.6 1.6 1.6 1.5
cube Type de données pour les cubes multidimensionnels 1.5 1.5 1.5 1.4 1.4 1.4
dblink Se connecte à d’autres bases de données PostgreSQL à partir d’une base de données 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Modèle de dictionnaire de recherche de texte pour les entiers 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Modèle de dictionnaire de recherche de texte pour le traitement de synonyme étendu 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Calcule les distances orthodromiques à la surface de la Terre 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Détermine les ressemblances et la distance entre les chaînes 1.2 1.1 1.1 1.1 1.1 1,1
hstore Type de données permettant de stocker des paires clé/valeur 1.8 1.8 1.8 1.7 1.6 1.5
hypopg Index hypothétiques pour PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Agrégateur et énumérateur d’entier (obsolète) 1.1 1.1 1.1 1.1 1.1 1.1
intarray Fonctions, opérateurs et prise en charge d’index pour les tableaux d’entiers 1D 1.5 1.5 1.5 1.3 1.2 1.2
isn Types de données pour les standards internationaux de numérotation de produits 1.2 1.2 1.2 1.2 1.2 1.2
lo Maintenance des objets volumineux (Large Object) 1.1 1.1 1.1 1.1 1.1 1,1
login_hook Login_hook – hook pour exécuter login_hook.login() au moment de la connexion 1.5 1.4 1.4 1.4 1.4 1.4
ltree Type de données pour les structures hiérarchiques de type arborescence 1.2 1.2 1.2 1.2 1.1 1,1
orafce Fonctions et opérateurs qui émulent un sous-ensemble de fonctions et de packages à partir du système de gestion de base de données relationnelle Oracle 4.4 3.24 3,18 3,18 3,18 3.7
pageinspect Inspectez le contenu de pages de base de données de bas niveau 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit Fournit des fonctionnalités d’audit 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Examine le cache des tampons partagé 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Planificateur de travaux pour PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Fonctions de chiffrement 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (préversion) Gestionnaire d’emplacements de réplication logique à des fins de basculement 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1
pg_freespacemap Examinez le mappage d’espace libre (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Permet d’ajuster les plans d’exécution PostgreSQL à l’aide de « conseils » dans les commentaires SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Réplication logique PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Extension pour gérer les tables partitionnées par date et heure ou par ID 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Préchauffe les données de relation 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Réorganiser les tables dans les bases de données PostgreSQL avec des verrous minimaux 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Extension PgRouting S/O 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Affiche les informations de verrouillage au niveau des lignes 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Outil permettant de supprimer l’espace inutilisé d’une relation. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Suit les statistiques d’exécution de toutes les instructions SQL exécutées 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Affiche les statistiques au niveau du tuple 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Mesure de la similarité du texte et recherche d’index sur la base de trigrammes 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Examinez le mappage de visibilité (machine virtuelle) et les informations de visibilité au niveau des pages 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Langage procédural PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 Langage procédural PL/JavaScript (v8) approuvé 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis Fonctions et types spatiaux de géométrie et géographie PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Types et fonctions raster PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Fonctions SFCGAL PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS tiger geocoder et geocoder inverse 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Types et fonctions spatiaux de topologie PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Wrapper de données externes pour les serveurs PostgreSQL distants 1.1 1.1 1,1 1.0 1.0 1.0
semver Type de données de version sémantique 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable – inscription et manipulation des variables de session et des constantes 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informations sur les certificats SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Fonctions qui manipulent des tables entières, y compris les tables d’analyse croisée 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Wrapper de données étrangères pour interroger une base de données TDS (Sybase ou Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Permet des insertions scalables et des requêtes complexes pour les données de séries chronologiques S/O 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows méthode TABLESAMPLE, qui accepte le nombre de lignes en tant que limite 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time méthode TABLESAMPLE, qui accepte le temps en millisecondes en tant que limite 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Dictionnaire de recherche de texte qui supprime les accents 1.1 1.1 1.1 1.1 1.1 1,1
uuid-ossp Génère des identificateurs uniques universels (UUID). 1.1 1.1 1.1 1.1 1.1 1,1
vector Types de données vectorielles et méthodes d’accès ivfflat et hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

dblink et postgres_fdw vous permettent de vous connecter d’une instance de serveur flexible Azure Database pour PostgreSQL à une autre, ou à une autre base de données dans le même serveur. Le serveur flexible Azure Database pour PostgreSQL prend en charge les connexions entrantes et sortantes vers n’importe quel serveur PostgreSQL. Le serveur d’envoi doit autoriser les connexions sortantes vers le serveur de réception. De même, le serveur de réception doit autoriser les connexions à partir du serveur d’envoi.

Nous vous recommandons de déployer vos serveurs avec intégration au réseau virtuel si vous envisagez d’utiliser ces deux extensions. Par défaut, l’intégration au réseau virtuel autorise les connexions entre les serveurs du réseau virtuel. Vous pouvez également choisir d’utiliser des groupes de sécurité réseau de réseau virtuel pour personnaliser l’accès.

pg_prewarm

L’extension pg_prewarm charge les données relationnelles dans le cache. Le préchauffage de vos caches signifie que vos requêtes ont de meilleurs temps de réponse lors de leur première exécution après un redémarrage. La fonctionnalité de préchauffage automatique n’est actuellement pas disponible dans le serveur flexible Azure Database pour PostgreSQL.

pg_cron

pg_cron est un planificateur de travaux simple basé sur cron pour PostgreSQL qui s’exécute dans la base de données en tant qu’extension. L’extension pg_cron peut être utilisée pour exécuter des tâches de maintenance planifiées dans une base de données PostgreSQL. Par exemple, vous pouvez exécuter le vide périodique d’une table ou supprimer d’anciens travaux de données.

pg_cron peut exécuter plusieurs travaux en parallèle, mais il exécute au plus une instance d’un travail à la fois. Si une deuxième exécution est censée démarrer avant la fin de la première, la deuxième exécution est mise en file d’attente et démarrée dès que la première exécution est terminée. Cela garantit que les travaux s’exécutent exactement autant de fois que prévu, et qu’ils ne s’exécutent pas simultanément avec eux-mêmes.

Exemples :

Pour supprimer les anciennes données le samedi à 3h30 (GMT)

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Pour exécuter le vide tous les jours à 10h00 (GMT) dans la base de données par défaut postgres.

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Pour annuler la planification de toutes les tâches de pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

Pour afficher tous les travaux actuellement planifiés avec pg_cron.

SELECT * FROM cron.job;

Pour exécuter le vide tous les jours à 10 h (GMT) dans la base de données « testcron » sous azure_pg_admin compte de rôle.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Remarque

pg_cron extension est préchargée dans shared_preload_libraries pour chaque instance de serveur flexible Azure Database pour PostgreSQL à l’intérieur de la base de données postgres pour vous permettre de planifier des travaux à exécuter dans d’autres bases de données au sein de votre instance de base de données flexible Azure Database pour PostgreSQL sans compromettre la sécurité. Toutefois, pour des raisons de sécurité, vous devez toujours liste vertepg_cron extension et l’installer à l’aide de commande CREATE EXTENSION.

À partir de pg_cron version 1.4, vous pouvez utiliser les fonctions cron.schedule_in_database et cron.alter_job pour planifier votre travail dans une base de données spécifique et mettre à jour une planification existante respectivement.

Exemples :

Pour supprimer les anciennes données le samedi à 3h30 (GMT) sur la base de données DBName

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Remarque

cron_schedule_in_database fonction autorise le nom d’utilisateur comme paramètre facultatif. La définition du nom d’utilisateur sur une valeur non null nécessite le privilège de superutilisateur PostgreSQL et n’est pas prise en charge dans le serveur flexible Azure Database pour PostgreSQL. Les exemples précédents montrent l’exécution de cette fonction avec un paramètre de nom d’utilisateur facultatif omis ou défini sur null, qui exécute le travail dans le contexte de la planification du travail par l’utilisateur, lequel doit avoir les privilèges du rôle azure_pg_admin.

Pour mettre à jour ou modifier le nom de la base de données pour la planification existante

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots (préversion)

L’extension PG Failover Slots améliore le serveur flexible Azure Database pour PostgreSQL quand il fonctionne à la fois avec une réplication logique et des serveurs à haute disponibilité. Elle résout efficacement le défi au sein du moteur PostgreSQL standard qui ne conserve pas les emplacements de réplication logique après un basculement. La maintenance de ces emplacements est essentielle pour empêcher les interruptions de réplication ou les incompatibilités de données pendant les modifications de rôle serveur principal, ce qui garantit la continuité opérationnelle et l’intégrité des données.

L’extension simplifie le processus de basculement en gérant le transfert, le nettoyage et la synchronisation nécessaires des emplacements de réplication, ce qui offre une transition transparente pendant les modifications de rôle serveur. L’extension est prise en charge pour PostgreSQL versions 11 à 16.

Vous trouverez plus d’informations et comment utiliser l’extension PG Failover Slots sur sa page GitHub.

Activer pg_failover_slots

Pour activer l’extension PG Failover Slots pour votre instance de serveur flexible Azure Database pour PostgreSQL, vous devez modifier la configuration du serveur en incluant l’extension dans les bibliothèques de préchargement partagées du serveur et en ajustant un paramètre de serveur spécifique. Le processus est le suivant :

  1. Ajoutez pg_failover_slots aux bibliothèques de préchargement partagées du serveur en mettant à jour le paramètre shared_preload_libraries.
  2. Remplacez le paramètre hot_standby_feedback du serveur par on.

Toutes les modifications apportées au paramètre shared_preload_libraries nécessitent un redémarrage du serveur.

Suivez les étapes ci-dessous dans le portail Azure :

  1. Connectez-vous au portail Azure et accédez à la page de votre instance de serveur flexible Azure Database pour PostgreSQL.
  2. Dans le menu de gauche, sélectionnez Paramètres du serveur.
  3. Recherchez le paramètre shared_preload_libraries dans la liste et modifiez sa valeur pour inclure pg_failover_slots.
  4. Recherchez le paramètre hot_standby_feedback et définissez sa valeur sur on.
  5. Sélectionnez Enregistrer pour conserver vos modifications. À présent, vous avez la possibilité d’Enregistrer et redémarrer. Choisissez cette option pour vous assurer que les modifications prennent effet, car la modification de shared_preload_libraries nécessite un redémarrage du serveur.

En sélectionnant Enregistrer et redémarrer, votre serveur redémarre automatiquement, en appliquant les modifications que vous avez apportées. Une fois que le serveur est de retour en ligne, l’extension PG Failover Slots est activée et opérationnelle sur votre instance de serveur flexible Azure Database pour PostgreSQL principale, prête à gérer les emplacements de réplication logique pendant les basculements.

pg_stat_statements

L’extension pg_stat_statements vous donne une vue de toutes les requêtes qui ont été exécutées sur votre base de données. C’est très utile pour se faire une idée du niveau de performance de votre charge de travail de requêtes sur un système de production.

L’extension pg_stat_statements est préchargée dans shared_preload_libraries sur chaque instance de serveur flexible Azure Database pour PostgreSQL pour vous fournir un moyen de suivre les statistiques d’exécution des instructions SQL. Toutefois, pour des raisons de sécurité, vous devez toujours placer dans une liste d’autorisation l’extension pg_stat_statements et installer celle-ci avec la commande CREATE EXTENSION. Le paramètre pg_stat_statements.track, qui contrôle quelles instructions sont comptées par l’extension, a la valeur par défaut top, ce qui signifie que toutes les instructions exécutées directement par les clients sont suivies. Les deux autres niveaux de suivi sont none et all. Ce paramètre peut être configuré en tant que paramètre de serveur.

Il y a un compromis entre les informations d’exécution des requêtes fournies par pg_stat_statements et l’impact sur les performances du serveur en raison de la journalisation de chaque instruction SQL. Si vous n’utilisez pas activement l’extension pg_stat_statements, nous vous recommandons de définir pg_stat_statements.track sur none. Certains services de supervision tiers peuvent s’appuyer sur pg_stat_statements pour fournir des insights sur les performances des requêtes. Vérifiez donc si c’est le cas pour vous ou non.

TimescaleDB

TimescaleDB est une base de données de séries chronologiques empaquetée en tant qu’extension pour PostgreSQL. TimescaleDB fournit des fonctions analytiques axées sur le temps et des optimisations et met à l’échelle PostgreSQL pour les charges de travail de série chronologique. En savoir plus sur TimescaleDB, marque déposée de Timescale, Inc. Le serveur flexible Azure Database pour PostgreSQL fournit l’édition Apache-2 de TimescaleDB.

Installer TimescaleDB

Pour installer TimescaleDB, en plus d’autoriser son référencement, comme indiqué ci-dessus, vous devez l’inclure dans les bibliothèques de préchargement partagées du serveur. Une modification apportée au paramètre shared_preload_libraries de Postgres nécessite un shared_preload_libraries pour prendre effet. Vous pouvez modifier les paramètres à l’aide du portail Azure ou d’Azure CLI. À l’aide du Portail Azure :

  1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.

  2. Dans la barre latérale, sélectionnez Paramètres du serveur.

  3. Recherchez le paramètre shared_preload_libraries.

  4. Sélectionnez TimescaleDB.

  5. Sélectionnez Enregistrer pour conserver vos modifications. Vous recevez une notification une fois que la modification est enregistrée.

  6. Après avoir reçu la notification, redémarrez le serveur pour appliquer ces modifications.

Vous pouvez maintenant activer TimescaleDB dans votre base de données de serveur flexible Azure Database pour PostgreSQL. Connectez-vous à la base de données et exécutez la commande suivante :

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Conseil

Si vous voyez une erreur, vérifiez que vous avez redémarré le serveur après l’enregistrement de shared_preload_libraries.

Vous pouvez maintenant créer une hypertable TimescaleDB à partir de zéro ou migrer des données de série chronologiques existantes dans PostgreSQL.

Restaurer une base de données d’échelle de temps à l’aide de pg_dump et pg_restore

Pour restaurer une base de données d’échelle de temps à l’aide de pg_dump et pg_restore, vous devez exécuter deux procédures d’assistance dans la base de données de destination : timescaledb_pre_restore() et timescaledb_post restore().

Préparez d’abord la base de données de destination :

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Vous pouvez maintenant exécuter pg_dump sur la base de données d’origine, puis effectuer pg_restore. Après la restauration, veillez à exécuter la commande suivante dans la base de données restaurée :

SELECT timescaledb_post_restore();

Pour plus d’informations sur la méthode de restauration avec une base de données avec une échelle de temps, consultez la documentation relative à l’échelle de temps

Restaurer une base de données d’échelle de données à l’aide de timescaledb-backup

Lors de l’exécution de la procédure SELECT timescaledb_post_restore() indiquée ci-dessus, vous pourriez recevoir des erreurs d’autorisation refusée lors de la mise à jour de l’indicateur timescaledb.restoring. Cela est dû à l’autorisation ALTER DATABASE limitée dans les services de base de données cloud PaaS. Dans ce cas, vous pouvez utiliser une autre méthode à l’aide de l’outil timescaledb-backup pour sauvegarder et restaurer une base de données d’échelle de temps. Timescaledb-backup est un programme qui simplifie le vidage et la restauration d’une base de données TimescaleDB, moins susceptible d’engendrer des erreurs et plus performant.
Pour ce faire, vous devez procéder comme suit

  1. Installer les outils comme détaillé ici
  2. Créer une instance de serveur flexible Azure Database pour PostgreSQL cible et une base de données
  3. Activer l’extension d’échelle de temps comme indiqué ci-dessus
  4. Accorder le rôle azure_pg_admin à l’utilisateur qui sera utilisé par ts-restore
  5. Exécuter ts-restore pour restaurer la base de données

Des informations supplémentaires sur ces utilitaires sont disponibles ici.

Remarque

Lorsque vous vous servez d’utilitaires timescale-backup pour effectuer une restauration sur Azure, comme les noms d’utilisateur de base de données pour le serveur unique Azure Database pour PostgreSQL doivent utiliser le format <user@db-name>, vous devez remplacer @ par l’encodage de caractères %40.

pg_hint_plan

pg_hint_plan permet d’ajuster les plans d’exécution PostgreSQL à l’aide de ce que l’on appelle des « indicateurs » dans les commentaires SQL, comme

/*+ SeqScan(a) */

pg_hint_plan lit les expressions d’indication dans un commentaire de forme spéciale donnée avec l’instruction SQL cible. La forme spéciale commence par la séquence de caractères « /*+ » et se termine par « */ ». Les phrases indicatives se composent du nom de l’indicateur et des paramètres suivants entre parenthèses et délimités par des espaces. De nouvelles lignes peuvent délimiter chaque expression d’indicateur, pour plus de lisibilité.

Exemple :

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

L’exemple ci-dessus oblige le planificateur à utiliser les résultats d’un seq scan sur la table a à combiner avec la table b en tant que hash join.

Pour installer pg_hint_plan, en plus d’autoriser son référencement, comme indiqué ci-dessus, vous devez l’inclure dans les bibliothèques de préchargement partagées du serveur. Une modification apportée au paramètre shared_preload_libraries de Postgres nécessite un shared_preload_libraries pour prendre effet. Vous pouvez modifier les paramètres à l’aide du portail Azure ou d’Azure CLI. À l’aide du Portail Azure :

  1. Sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.

  2. Dans la barre latérale, sélectionnez Paramètres du serveur.

  3. Recherchez le paramètre shared_preload_libraries.

  4. Sélectionnez pg_hint_plan.

  5. Sélectionnez Enregistrer pour conserver vos modifications. Vous recevez une notification une fois que la modification est enregistrée.

  6. Après avoir reçu la notification, redémarrez le serveur pour appliquer ces modifications.

Vous pouvez maintenant activer pg_hint_plan dans votre base de données de serveur flexible Azure Database pour PostgreSQL. Connectez-vous à la base de données et exécutez la commande suivante :

CREATE EXTENSION pg_hint_plan ;

pg_buffercache

Pg_buffercache peut être utilisé pour étudier le contenu de shared_buffers. À l’aide de cette extension vous pouvez savoir si une relation particulière est mise en cache ou non (dans shared_buffers). Cette extension peut vous aider à résoudre les problèmes de performances (mise en cache des problèmes de performances associés).

Cette extension fait partie de contrib et elle est facile à installer.

CREATE EXTENSION pg_buffercache;

Extensions et mise à niveau de version principale

Le serveur flexible Azure Database pour PostgreSQL a introduit une fonctionnalité de mise à niveau de version principale sur place qui effectue une mise à niveau sur place de l’instance de serveur flexible Azure Database pour PostgreSQL en un seul clic. La mise à niveau de version principale sur place simplifie le processus de mise à niveau de serveur flexible Azure Database pour PostgreSQL, ce qui réduit les interruptions pour les utilisateurs et les applications accédant au serveur. La mise à niveau de la version principale sur place ne prend pas en charge des extensions spécifiques et il existe certaines limitations à la mise à niveau de certaines extensions. Les extensions Timescaledb, pgaudit, dblink, orafce et postgres_fdw ne sont prises en charge pour aucune des versions de serveur flexible Azure Database pour PostgreSQL lors de l’utilisation de la fonctionnalité de mise à jour de version principale sur place.