Share via


PostgreSQL-extensies in Azure Database for PostgreSQL - Flexibele server

VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server

Flexibele Azure Database for PostgreSQL-server biedt de mogelijkheid om de functionaliteit van uw database uit te breiden met behulp van extensies. Extensies bundelen meerdere gerelateerde SQL-objecten in één pakket dat kan worden geladen of verwijderd uit uw database met een opdracht. Nadat de extensie in de database is geladen, werken extensies zoals ingebouwde functies.

PostgreSQL-extensies gebruiken

Voordat u extensies installeert in een flexibele Azure Database for PostgreSQL-server, moet u deze extensies toestaan voor gebruik.

Azure Portal gebruiken:

  1. Selecteer uw flexibele Azure Database for PostgreSQL-serverexemplaren.
  2. Selecteer serverparameters in het resourcemenu onder Instellingen.
  3. Zoek de azure.extensions parameter.
  4. Selecteer de extensies die u wilt toestaan. Schermopname van flexibele Azure Database for PostgreSQL-server- uitbreidingen voor installatie.

Azure CLI gebruiken:

U kunt extensies in de lijst toestaan via de opdracht CLI-parameterset.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>

Arm-sjabloon gebruiken: volgende voorbeeld van toegestane lijstextensies dblink, dict_xsynpg_buffercache op een server waarvan de naam ispostgres-test-server:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "postgres-test-server",
            "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 is een serverconfiguratieparameter die bepaalt welke bibliotheken moeten worden geladen wanneer de flexibele Server van Azure Database for PostgreSQL wordt gestart. Bibliotheken die gebruikmaken van gedeeld geheugen, moeten worden geladen via deze parameter. Als uw extensie moet worden toegevoegd aan gedeelde preloadbibliotheken, voert u de volgende stappen uit:

Azure Portal gebruiken:

  1. Selecteer uw flexibele Azure Database for PostgreSQL-serverexemplaren.
  2. Selecteer serverparameters in het resourcemenu onder Instellingen.
  3. Zoek de shared_preload_libraries parameter.
  4. Selecteer de bibliotheken die u wilt toevoegen. Schermopname van de parameterinstelling gedeelde preloadbibliotheken in Azure Database for PostgreSQL voor de installatie van extensies.

Azure CLI gebruiken:

U kunt instellen shared_preload_libraries via de opdracht cli-parameterset.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

Nadat extensies zijn toegestaan en geladen, moeten ze worden geïnstalleerd in elke database waarop u ze wilt gebruiken. Als u een bepaalde extensie wilt installeren, moet u de opdracht CREATE EXTENSION uitvoeren. Met deze opdracht worden de verpakte objecten in uw database geladen.

Notitie

Extensies van derden die worden aangeboden in flexibele Azure Database for PostgreSQL-server, zijn open source gelicentieerde code. Op dit moment bieden we geen extensies of uitbreidingsversies van derden aan met premium- of eigen licentiemodellen.

Azure Database for PostgreSQL Flexible Server Instance ondersteunt een subset van de belangrijkste PostgreSQL-extensies, zoals vermeld in de volgende tabel. Deze informatie is ook beschikbaar door uit te voeren SHOW azure.extensions;. Extensies die niet in dit document worden vermeld, worden niet ondersteund op flexibele Azure Database for PostgreSQL-server. U kunt uw eigen extensie niet maken of laden in azure Database for PostgreSQL flexibele server.

Extensieversies

De volgende extensies zijn beschikbaar in azure Database for PostgreSQL flexibele server:

Notitie

Voor extensies in de volgende tabel met de ✔️ markering moeten de bijbehorende bibliotheken zijn ingeschakeld in de shared_preload_libraries serverparameter.

Extensienaam Beschrijving PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Wordt gebruikt om een adres te parseren in samenstellende elementen. Over het algemeen gebruikt ter ondersteuning van geocoderingsadresnormalisatiestap. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Voorbeeld van Een Standardizer US-gegevensset 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Functies voor het verifiëren van relationele integriteit 1.3 1.3 1.3 1.2 1.2 1.1
azure_ai Integratie van Azure AI en ML Services voor PostgreSQL 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0 N.v.t.
azure_local_ai (preview) Lokale AI-mogelijkheden voor PostgreSQL 0.1.0 0.1.0 0.1.0 0.1.0 N.v.t. N.v.t.
azure_storage Azure-integratie voor PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ N.v.t.
bloeien Bloom-toegangsmethode - index op basis van handtekeningbestand 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Ondersteuning voor het indexeren van algemene gegevenstypen in GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Ondersteuning voor het indexeren van algemene gegevenstypen in GiST 1,7 1,7 1.6 1.5 1.5 1.5
citext Gegevenstype voor hoofdlettergevoelige tekenreeksen 1.6 1.6 1.6 1.6 1.6 1.5
kubus Gegevenstype voor multidimensionale kubussen 1.5 1.5 1.5 1.4 1.4 1.4
dblink Verbinding maken met andere PostgreSQL-databases vanuit een database 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Tekstzoekwoordenlijstsjabloon voor gehele getallen 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Tekstzoekwoordenlijstsjabloon voor uitgebreide synoniemenverwerking 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Grote cirkelafstanden op het oppervlak van de aarde berekenen 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Overeenkomsten en afstand tussen tekenreeksen bepalen 1.2 1.1 1.1 1.1 1.1 1.1
hstore Gegevenstype voor het opslaan van sets (sleutel- en waardeparen) 1.8 1.8 1.8 1,7 1.6 1.5
hypopg Hypothetische indexen voor PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Integeraggregator en enumerator (verouderd) 1.1 1.1 1.1 1.1 1.1 1.1
intarray Functies, operators en indexondersteuning voor 1D-matrices met gehele getallen 1.5 1.5 1.5 1.3 1.2 1.2
Isn Gegevenstypen voor internationale productnummeringsstandaarden 1.2 1.2 1.2 1.2 1.2 1.2
Lo Onderhoud van groot object 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - hook to execute login_hook.login() at login time 1.5 1.4 1.4 1.4 1.4 1.4
ltree Gegevenstype voor hiërarchische structuurachtige structuren 1.2 1.2 1.2 1.2 1.1 1.1
orafce Functies en operators die een subset van functies en pakketten uit oracle RDBMS emuleren 4.4 3.24 3,18 3,18 3,18 3.7
pageinspect De inhoud van databasepagina's op laag niveau controleren 1.12 1.11 1,9 1.8 1,7 1,7
pgaudit Biedt controlefunctionaliteit 16.0 ✔️ 1,7 ✔️ 1.6.2 ✔️ 1,5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache De gedeelde buffercache onderzoeken 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Job scheduler voor PostgreSQL 1,5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Cryptografische functies 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (preview) Beheer van logische replicatiesite voor failoverdoeleinden 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️
pg_freespacemap Bekijk de vrije ruimtekaart (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Hiermee kunt u PostgreSQL-uitvoeringsplannen aanpassen met behulp van zogenaamde hints in SQL-opmerkingen. 1.6.0 ✔️ 1,5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Logische replicatie van PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Extensie voor het beheren van gepartitioneerde tabellen op tijd of id 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Relationele gegevens voorafwarmen 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Tabellen in PostgreSQL-databases opnieuw ordenen met minimale vergrendelingen 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting PgRouting-extensie N.v.t. 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Informatie over het vergrendelen op rijniveau weergeven 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Een hulpprogramma voor het verwijderen van ongebruikte ruimte uit een relatie. 1.6 ✔️ 1.6 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️
pg_stat_statements Plannings- en uitvoeringsstatistieken bijhouden van alle SQL-instructies die zijn uitgevoerd 1.10 ✔️ 1.10 ✔️ 1,9 ✔️ 1.8 ✔️ 1,7 ✔️ 1.6 ✔️
pgungsuple Statistieken op tupleniveau weergeven 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Vergelijking van tekst en index zoeken op basis van trigrammen 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility De zichtbaarheidskaart (VM) en zichtbaarheidsgegevens op paginaniveau bekijken 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql PL/pgSQL procedurele taal 1.0 1.0 1.0 1.0 1.0 1.0
plv8 Vertrouwde proceduretaal PL/JavaScript (v8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis PostGIS geometrie en geografie ruimtelijke typen en functies 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster PostGIS-rastertypen en -functies 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal PostGIS SFCGAL-functies 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS tiger geocoder en reverse geocoder 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Ruimtelijke typen en functies van PostGIS-topologie 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Wrapper voor externe PostgreSQL-servers 1.1 1.1 1.1 1.0 1.0 1.0
semver Gegevenstype Semantische versie 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - registratie en manipulatie van sessievariabelen en constanten 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informatie over SSL-certificaten 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Functies waarmee hele tabellen worden bewerkt, inclusief kruistabel 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Externe gegevenswikkelaar voor het uitvoeren van query's op een TDS-database (Sybase of Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Maakt schaalbare invoegingen en complexe query's mogelijk voor tijdreeksgegevens 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows DE METHODE TABLESAMPLE die het aantal rijen als limiet accepteert 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time DE METHODE TABLESAMPLE die tijd in milliseconden accepteert als een limiet 1.0 1.0 1.0 1.0 1.0 1.0
Unaccent Woordenlijst voor zoeken in tekst waarmee accenten worden verwijderd 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Universally Unique Identifiers (UUID's) genereren 1.1 1.1 1.1 1.1 1.1 1.1
vector Vectorgegevenstype en ivfflat- en hnsw-toegangsmethoden 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

PostgreSQL-extensies upgraden

In-place upgrades van database-extensies zijn toegestaan via een eenvoudige opdracht. Met deze functie kunnen klanten hun extensies van derden automatisch bijwerken naar de nieuwste versies, waardoor de huidige en veilige systemen zonder handmatige inspanningen worden onderhouden.

Extensies bijwerken

Als u een geïnstalleerde extensie wilt bijwerken naar de nieuwste beschikbare versie die wordt ondersteund door Azure, gebruikt u de volgende SQL-opdracht:

ALTER EXTENSION <extension_name> UPDATE;

Deze opdracht vereenvoudigt het beheer van database-extensies doordat gebruikers handmatig kunnen upgraden naar de nieuwste versie die door Azure is goedgekeurd, waardoor compatibiliteit en beveiliging worden verbeterd.

Beperkingen

Hoewel het bijwerken van extensies eenvoudig is, zijn er bepaalde beperkingen:

  • Selectie van een specifieke versie: de opdracht biedt geen ondersteuning voor het bijwerken naar tussenliggende versies van een extensie. Deze wordt altijd bijgewerkt naar de nieuwste beschikbare versie.
  • Downgraden: biedt geen ondersteuning voor het downgraden van een extensie naar een eerdere versie. Als een downgrade nodig is, is er mogelijk ondersteuning nodig en is dit afhankelijk van de beschikbaarheid van de vorige versie.

Geïnstalleerde extensies

Gebruik de volgende SQL-opdracht om de extensies weer te geven die momenteel in uw database zijn geïnstalleerd:

SELECT * FROM pg_extension;

Beschikbare extensies en hun versies

Als u wilt controleren welke versies van een extensie beschikbaar zijn voor de huidige database-installatie, voert u een query uit op de pg_available_extensions systeemcatalogusweergave. Als u bijvoorbeeld wilt bepalen welke versie beschikbaar is voor de azure_aiextensie, voert u het volgende uit:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Deze opdrachten bieden noodzakelijke inzichten in de extensieconfiguraties van uw database, waardoor uw systemen efficiënt en veilig kunnen worden onderhouden. Door eenvoudige updates naar de nieuwste extensieversies mogelijk te maken, blijft Azure Database for PostgreSQL ondersteuning bieden voor het robuuste, veilige en efficiënte beheer van uw databasetoepassingen.

Overwegingen die specifiek zijn voor flexibele Azure Database for PostgreSQL-server

Hieronder volgt een lijst met ondersteunde extensies waarvoor een aantal specifieke overwegingen nodig zijn bij gebruik in de flexibele serverservice van Azure Database for PostgreSQL. De lijst is alfabetisch gesorteerd.

Met dblink kunt u verbinding maken tussen een exemplaar van een flexibele Azure Database for PostgreSQL-server of een andere database op dezelfde server. Flexibele Azure Database for PostgreSQL-server ondersteunt zowel binnenkomende als uitgaande verbindingen met elke PostgreSQL-server. De verzendende server moet uitgaande verbindingen met de ontvangende server toestaan. Op dezelfde manier moet de ontvangende server verbindingen van de verzendende server toestaan.

U wordt aangeraden uw servers te implementeren met integratie van virtuele netwerken als u van plan bent deze extensie te gebruiken. Integratie van virtuele netwerken staat standaard verbindingen toe tussen servers in het virtuele netwerk. U kunt er ook voor kiezen om netwerkbeveiligingsgroepen voor virtuele netwerken te gebruiken om de toegang aan te passen.

pg_buffercache

pg_buffercache kan worden gebruikt om de inhoud van shared_buffers te bestuderen. Met deze extensie kunt u zien of een bepaalde relatie in de cache is opgeslagen of niet (in shared_buffers). Deze extensie kan u helpen bij het oplossen van prestatieproblemen (prestatieproblemen in de cache).

Deze extensie is geïntegreerd met de kerninstallatie van PostgreSQL en is eenvoudig te installeren.

CREATE EXTENSION pg_buffercache;

pg_cron

pg_cron is een eenvoudige op cron gebaseerde taakplanner voor PostgreSQL die als extensie in de database wordt uitgevoerd. De pg_cron extensie kan worden gebruikt voor het uitvoeren van geplande onderhoudstaken in een PostgreSQL-database. U kunt bijvoorbeeld periodiek vacuüm van een tabel uitvoeren of oude gegevenstaken verwijderen.

pg_cron kan meerdere taken parallel uitvoeren, maar het wordt maximaal één exemplaar van een taak tegelijk uitgevoerd. Als een tweede uitvoering moet beginnen voordat de eerste is voltooid, wordt de tweede uitvoering in de wachtrij geplaatst en gestart zodra de eerste uitvoering is voltooid. Op die manier wordt ervoor gezorgd dat taken precies zo vaak worden uitgevoerd als gepland en niet gelijktijdig met zichzelf worden uitgevoerd.

Een aantal voorbeelden:

Oude gegevens op zaterdag om 3:30 uur (GMT) verwijderen.

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

Om elke dag om 10:00 uur (GMT) vacuüm uit te voeren in de standaarddatabase postgres.

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

Als u alle taken van pg_cron.

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

Als u alle taken wilt zien die momenteel zijn gepland met pg_cron.

SELECT * FROM cron.job;

Om elke dag om 10:00 uur (GMT) vacuüm uit te voeren in database 'testcron' onder azure_pg_admin rolaccount.

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

Notitie

pg_cron extensie wordt vooraf geladen shared_preload_libraries voor elk exemplaar van een flexibele Azure Database for PostgreSQL-server in postgres-database, zodat u taken kunt plannen die moeten worden uitgevoerd in andere databases in uw flexibele Azure Database for PostgreSQL-serverdatabaseexemplaren zonder dat dit de beveiliging in gevaar heeft. Om veiligheidsredenen moet u echter nog steeds de lijstextensie pg_cron toestaan en installeren met de opdracht CREATE EXTENSION .

pg_cron Vanaf versie 1.4 kunt u de cron.schedule_in_database en cron.alter_job functies gebruiken om uw taak in een specifieke database te plannen en een bestaande planning bij te werken.

Een aantal voorbeelden:

Oude gegevens verwijderen op zaterdag om 3:30 uur (GMT) op database DBName.

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

Notitie

cron_schedule_in_database met de functie kan de gebruikersnaam als optionele parameter worden gebruikt. Voor het instellen van de gebruikersnaam op een niet-null-waarde zijn postgreSQL-superuserbevoegdheden vereist en wordt deze niet ondersteund in de flexibele Server van Azure Database for PostgreSQL. In voorgaande voorbeelden ziet u hoe u deze functie uitvoert met een optionele parameter voor de gebruikersnaam die wordt weggelaten of ingesteld op null, waarmee de taak wordt uitgevoerd in de context van het plannen van de taak. Deze moet azure_pg_admin rolbevoegdheden hebben.

De databasenaam voor bestaande schema bijwerken of wijzigen

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

pg_failover_slots (preview)

De extensie PG-failoversites verbetert de flexibele Server van Azure Database for PostgreSQL wanneer deze werkt met zowel logische replicatie als servers met hoge beschikbaarheid. Het lost effectief de uitdaging op binnen de standaard PostgreSQL-engine die na een failover geen logische replicatiesites behoudt. Het onderhouden van deze sites is essentieel om te voorkomen dat replicatie wordt onderbroken of gegevens niet overeenkomen tijdens wijzigingen in de primaire serverfunctie, waardoor operationele continuïteit en gegevensintegriteit worden gewaarborgd.

De extensie stroomlijnt het failoverproces door de benodigde overdracht, opschoning en synchronisatie van replicatiesites te beheren, waardoor een naadloze overgang wordt geboden tijdens wijzigingen in de serverfunctie. De extensie wordt ondersteund voor PostgreSQL-versies 11 tot en met 16.

U vindt meer informatie en hoe u de extensie PG-failoversites kunt gebruiken op de GitHub-pagina.

Pg_failover_slots inschakelen

Als u de extensie PG-failoversites wilt inschakelen voor uw flexibele Azure Database for PostgreSQL-serverexemplaren, moet u de configuratie van de server wijzigen door de extensie op te slaan in de gedeelde bibliotheken voor vooraf laden van de server en een specifieke serverparameter aan te passen. Dit is het proces:

  1. Voeg deze pg_failover_slots toe aan de gedeelde bibliotheken voor vooraf laden van de server door de shared_preload_libraries parameter bij te werken.
  2. Wijzig de serverparameter hot_standby_feedback in on.

Voor wijzigingen in de shared_preload_libraries parameter moet de server opnieuw worden opgestart.

Azure Portal gebruiken:

  1. Selecteer uw flexibele Azure Database for PostgreSQL-serverexemplaren.
  2. Selecteer serverparameters in het resourcemenu onder Instellingen.
  3. Zoek de parameter en bewerk de shared_preload_libraries bijbehorende waarde om op te nemen pg_failover_slots.
  4. Zoek de parameter en stel de hot_standby_feedback waarde in op on.
  5. Selecteer Opslaan om uw wijzigingen te behouden. Nu hebt u de mogelijkheid om op te slaan en opnieuw op te starten. Kies deze optie om ervoor te zorgen dat de wijzigingen van kracht worden, omdat voor het wijzigen shared_preload_libraries een server opnieuw moet worden opgestart.

Als u Opslaan en opnieuw opstarten selecteert , wordt uw server automatisch opnieuw opgestart en worden de wijzigingen toegepast die u zojuist hebt aangebracht. Zodra de server weer online is, is de extensie PG-failoversites ingeschakeld en operationeel op uw primaire exemplaar van de flexibele Azure Database for PostgreSQL-server, klaar voor het afhandelen van logische replicatiesites tijdens failovers.

pg_hint_plan

pg_hint_plan maakt het mogelijk postgreSQL-uitvoeringsplannen aan te passen met behulp van zogenaamde 'hints' in SQL-opmerkingen, zoals:

/*+ SeqScan(a) */

pg_hint_plan leest hints in een opmerking van speciale vorm die wordt gegeven met de SQL-doelinstructie. Het speciale formulier begint met de tekenreeks "/*+" en eindigt op "*/". Hintzinnen bestaan uit hintnaam en de volgende parameters tussen haakjes en gescheiden door spaties. Nieuwe regels voor leesbaarheid kunnen elke hintterm scheiden.

Voorbeeld:

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

Het vorige voorbeeld zorgt ervoor dat de planner de resultaten van een seq scan tabel gebruikt die als a hash joinwordt gecombineerd met tabel b.

Als u pg_hint_plan wilt installeren, moet u deze ook opnemen in de gedeelde preloadbibliotheken van de server, zoals wordt weergegeven in het gebruik van PostgreSQL-extensies. Voor een wijziging van de parameter van shared_preload_libraries Postgres moet de server opnieuw worden opgestart . U kunt parameters wijzigen met behulp van Azure Portal of de Azure CLI.

Azure Portal gebruiken:

  1. Selecteer uw flexibele Azure Database for PostgreSQL-serverexemplaren.
  2. Selecteer serverparameters in het resourcemenu onder Instellingen.
  3. Zoek de parameter en bewerk de shared_preload_libraries bijbehorende waarde om op te nemen pg_hint_plan.
  4. Selecteer Opslaan om uw wijzigingen te behouden. Nu hebt u de mogelijkheid om op te slaan en opnieuw op te starten. Kies deze optie om ervoor te zorgen dat de wijzigingen van kracht worden, omdat voor het wijzigen shared_preload_libraries een server opnieuw moet worden opgestart. U kunt nu pg_hint_plan uw flexibele Azure Database for PostgreSQL-serverdatabase inschakelen. Maak verbinding met de database en voer de volgende opdracht uit:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

De pg_prewarm extensie laadt relationele gegevens in de cache. Het voorafwarmen van uw caches betekent dat uw query's betere reactietijden hebben bij hun eerste uitvoering na een herstart. De functionaliteit voor automatisch voorafwarmen is momenteel niet beschikbaar in de flexibele server van Azure Database for PostgreSQL.

pg_repack

Een typische vraag die mensen stellen wanneer ze deze extensie voor het eerst proberen te gebruiken is: Is pg_repack een extensie of een uitvoerbaar bestand aan de clientzijde, zoals psql of pg_dump?

Het antwoord hierop is dat het eigenlijk beide is. pg_repack/lib bevat de code voor de extensie, inclusief het schema en de SQL-artefacten die worden gemaakt, en de C-bibliotheek die de code van verschillende van deze functies implementeert. Aan de andere kant bewaart pg_repack/bin de code voor de clienttoepassing, die weet hoe moet worden gecommuniceerd met de programmeerartefacten die door de extensie zijn gemaakt. Deze clienttoepassing is erop gericht om de complexiteit van interactie met de verschillende interfaces die door de extensie aan de serverzijde worden weergegeven, te vereenvoudigen door de gebruiker een aantal opdrachtregelopties aan te bieden die gemakkelijker te begrijpen zijn. De clienttoepassing zonder de extensie die in de database is gemaakt, is nutteloos. De extensie aan de serverzijde zou volledig functioneel zijn, maar vereist dat de gebruiker een gecompliceerd interactiepatroon begrijpt dat bestaat uit het uitvoeren van query's om gegevens op te halen die worden gebruikt als invoer voor functies die door de extensie worden geïmplementeerd.

Machtiging geweigerd voor het opnieuw verpakken van schema's

Vanaf nu wordt het alleen ondersteund om pg_repack functionaliteit uit te voeren vanuit de context van azure_pg_admin.

Als de eigenaar van een tabel, die dat niet azure_pg_adminis, probeert pg_repack uit te voeren, krijgt deze mogelijk een foutmelding zoals hieronder:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

Om deze fout te voorkomen, moet u ervoor zorgen dat u pg_repack uitvoert vanuit de context van azure_pg_admin.

pg_stat_statements

De pg_stat_statements-extensie geeft u een overzicht van alle query's die in uw database zijn uitgevoerd. Dit is handig om inzicht te krijgen in de prestaties van uw queryworkloads in een productiesysteem.

De pg_stat_statements-extensie wordt vooraf geladen op shared_preload_libraries elk flexibele Azure Database for PostgreSQL-serverexemplaren om u een middel te bieden voor het bijhouden van uitvoeringsstatistieken van SQL-instructies. Om veiligheidsredenen moet u de extensie echter nog steeds toestaan pg_stat_statements extensie en installeren met de opdracht CREATE EXTENSION . De instelling pg_stat_statements.track, waarmee wordt bepaald welke instructies worden geteld door de extensie, standaard topingesteld op , wat betekent dat alle instructies die rechtstreeks door clients worden uitgegeven, worden bijgehouden. De twee andere traceringsniveaus zijn none en all. Deze instelling kan worden geconfigureerd als een serverparameter.

Er bestaat een verband tussen de informatie over de query-uitvoering die pg_stat_statements biedt en de impact op de serverprestaties wanneer elke SQL-instructie wordt vastgelegd. Als u de pg_stat_statements extensie niet actief gebruikt, raden we u aan deze optie in te nonestellenpg_stat_statements.track. Sommige bewakingsservices van derden kunnen afhankelijk zijn van pg_stat_statements het leveren van inzichten in queryprestaties, dus controleer of dit het geval is voor u of niet.

postgres_fdw

postgres_fdw kunt u verbinding maken tussen een exemplaar van een flexibele Azure Database for PostgreSQL-server of een andere database op dezelfde server. Flexibele Azure Database for PostgreSQL-server ondersteunt zowel binnenkomende als uitgaande verbindingen met elke PostgreSQL-server. De verzendende server moet uitgaande verbindingen met de ontvangende server toestaan. Op dezelfde manier moet de ontvangende server verbindingen van de verzendende server toestaan.

U wordt aangeraden uw servers te implementeren met integratie van virtuele netwerken als u van plan bent deze extensie te gebruiken. Integratie van virtuele netwerken staat standaard verbindingen toe tussen servers in het virtuele netwerk. U kunt er ook voor kiezen om netwerkbeveiligingsgroepen voor virtuele netwerken te gebruiken om de toegang aan te passen.

TimescaleDB

TimescaleDB is een tijdreeksdatabase die is verpakt als een extensie voor PostgreSQL. TimescaleDB biedt tijdgeoriënteerde analytische functies, optimalisaties en schaalt Postgres voor tijdreeksworkloads. Meer informatie over TimescaleDB, een geregistreerd handelsmerk van Timescale, Inc. Azure Database for PostgreSQL flexibele server biedt de TimescaleDB Apache-2-editie.

TimescaleDB installeren

Als u TimescaleDB wilt installeren, moet u deze ook opnemen in de gedeelde preloadbibliotheken van de server om deze toe te staan, zoals hierboven wordt weergegeven. Voor een wijziging van de parameter van shared_preload_libraries Postgres moet de server opnieuw worden opgestart . U kunt parameters wijzigen met behulp van Azure Portal of de Azure CLI.

Azure Portal gebruiken:

  1. Selecteer uw flexibele Azure Database for PostgreSQL-serverexemplaren.
  2. Selecteer serverparameters in het resourcemenu onder Instellingen.
  3. Zoek de parameter en bewerk de shared_preload_libraries bijbehorende waarde om op te nemen TimescaleDB.
  4. Selecteer Opslaan om uw wijzigingen te behouden. Nu hebt u de mogelijkheid om op te slaan en opnieuw op te starten. Kies deze optie om ervoor te zorgen dat de wijzigingen van kracht worden, omdat voor het wijzigen shared_preload_libraries een server opnieuw moet worden opgestart. U kunt nu TimescaleDB inschakelen in uw flexibele Azure Database for PostgreSQL-serverdatabase. Maak verbinding met de database en voer de volgende opdracht uit:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Tip

Als er een fout optreedt, controleert u of u de server opnieuw hebt opgestart nadat u shared_preload_libraries hebt opgeslagen.

U kunt nu een volledig nieuwe TimescaleDB-hypertabel maken of bestaande tijdreeksgegevens migreren in PostgreSQL.

Een Timescale-database herstellen met behulp van pg_dump en pg_restore

Als u een Timescale-database wilt herstellen met behulp van pg_dump en pg_restore, moet u twee helperprocedures uitvoeren in de doeldatabase: timescaledb_pre_restore() en timescaledb_post restore().

Bereid eerst de doeldatabase voor:

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

SELECT timescaledb_pre_restore();

U kunt nu pg_dump uitvoeren op de oorspronkelijke database en vervolgens pg_restore uitvoeren. Voer na het herstellen de volgende opdracht uit in de herstelde database:

SELECT timescaledb_post_restore();

Zie de documentatie over Timescale voor meer informatie over de herstelmethode met de database met Timescale.

Een Timescale-database herstellen met timescaledb-backup

Tijdens het uitvoeren SELECT timescaledb_post_restore() van de bovenstaande procedure krijgt u mogelijk geweigerde machtigingen bij het bijwerken van de vlag timescaledb.restore. Dit komt door beperkte ALTER DATABASE-machtigingen in Cloud PaaS-databaseservices. In dit geval kunt u een alternatieve methode uitvoeren met behulp van het timescaledb-backup hulpprogramma om een back-up te maken van de timescale-database en deze te herstellen. Timescaledb-backup is een programma voor het dumpen en herstellen van een TimescaleDB-database eenvoudiger, minder foutgevoelig en beter presterend.
Hiervoor moet u het volgende doen

  1. Hulpprogramma's installeren zoals hier wordt beschreven
  2. Een doelexemplaren en -database van Azure Database for PostgreSQL flexibele server maken
  3. Timescale-extensie inschakelen zoals hierboven wordt weergegeven
  4. Rol azure_pg_admin verlenen aan gebruiker die wordt gebruikt door ts-restore
  5. TS-herstel uitvoeren om de database te herstellen

Meer informatie over deze hulpprogramma's vindt u hier.

Extensies en upgrade van primaire versie

Azure Database for PostgreSQL Flexibele server heeft met slechts één klik een in-place functie voor het upgraden van primaire versies geïntroduceerd die een in-place upgrade uitvoert van het flexibele azure Database for PostgreSQL-serverexemplaren. In-place primaire versie-upgrade vereenvoudigt het upgradeproces voor flexibele Azure Database for PostgreSQL-servers, waardoor de onderbreking voor gebruikers en toepassingen die toegang hebben tot de server, wordt geminimaliseerd. In-place primaire versie-upgrade biedt geen ondersteuning voor specifieke extensies en er zijn enkele beperkingen voor het upgraden van bepaalde extensies. De extensies Timescaledb, pgaudit, dblink, orafce en postgres_fdw worden niet ondersteund voor alle flexibele serverversies van Azure Database for PostgreSQL bij gebruik van de in-place functie voor het bijwerken van primaire versies.