Sdílet prostřednictvím


Rozšíření PostgreSQL na flexibilním serveru Azure Database for PostgreSQL

PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL

Flexibilní server Azure Database for PostgreSQL umožňuje rozšířit funkce databáze pomocí rozšíření. Rozšíření sbalí několik souvisejících objektů SQL v jednom balíčku, který lze načíst nebo odebrat z databáze pomocí příkazu. Po načtení do databáze fungují rozšíření jako integrované funkce.

Jak používat rozšíření PostgreSQL

Před instalací rozšíření na flexibilním serveru Azure Database for PostgreSQL je potřeba tato rozšíření povolit pro použití.

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
  2. V nabídce prostředků v části Nastavení vyberte Parametry serveru.
  3. Vyhledejte azure.extensions parametr.
  4. Vyberte rozšíření, která chcete povolit. Snímek obrazovky s flexibilním serverem Azure Database for PostgreSQL – rozšíření seznamu povolených pro instalaci

Pomocí Azure CLI:

Rozšíření seznamu povolených můžete povolit pomocí příkazu sady parametrů rozhraní příkazového řádku.

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

Použití šablony ARM: Následující příklad povolených rozšíření dblink, dict_xsyn, pg_buffercache na serveru, jehož název je postgres-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 je parametr konfigurace serveru, který určuje, které knihovny se musí načíst při spuštění flexibilního serveru Azure Database for PostgreSQL. Všechny knihovny, které používají sdílenou paměť, musí být načteny prostřednictvím tohoto parametru. Pokud je potřeba rozšíření přidat do sdílených knihoven předběžného načtení, postupujte takto:

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
  2. V nabídce prostředků v části Nastavení vyberte Parametry serveru.
  3. Vyhledejte shared_preload_libraries parametr.
  4. Vyberte knihovny, které chcete přidat. Snímek obrazovky znázorňující nastavení parametrů sdílených knihoven předběžného načtení pro instalaci rozšíření ve službě Azure Database for PostgreSQL

Pomocí Azure CLI:

Můžete nastavit shared_preload_libraries příkazem sady parametrů rozhraní příkazového řádku.

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>

Po povolení a načtení rozšíření je nutné je nainstalovat do každé databáze, ve které je plánujete použít. Pokud chcete nainstalovat konkrétní rozšíření, měli byste spustit příkaz CREATE EXTENSION . Tento příkaz načte zabalené objekty do databáze.

Poznámka:

Rozšíření třetích stran nabízená na flexibilním serveru Azure Database for PostgreSQL jsou opensourcový licencovaný kód. V současné době nenabízíme žádná rozšíření třetích stran ani verze rozšíření s prémiovými nebo proprietárními licenčními modely.

Flexibilní instance serveru Azure Database for PostgreSQL podporuje podmnožinu klíčových rozšíření PostgreSQL, jak je uvedeno v následující tabulce. Tyto informace jsou k dispozici také spuštěním SHOW azure.extensions;příkazu . Rozšíření, která nejsou uvedená v tomto dokumentu, nejsou na flexibilním serveru Azure Database for PostgreSQL podporovaná. Na flexibilním serveru Azure Database for PostgreSQL nemůžete vytvořit ani načíst vlastní rozšíření.

Verze rozšíření

Flexibilní server Azure Database for PostgreSQL nabízí následující rozšíření:

Poznámka:

Rozšíření v následující tabulce se značkou ✔️ vyžadují povolení odpovídajících knihoven v parametru shared_preload_libraries serveru.

Název rozšíření Popis PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Používá se k analýze adresy do základních prvků. Obecně se používá k podpoře kroku normalizace geokódování adres. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Příklad datové sady Standardizer v USA 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Funkce pro ověřování integrity relací 1.3 1.3 1.3 1.2 1.2 1,1
azure_ai Integrace Azure AI a ML Services pro PostgreSQL 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0
azure_local_ai (Preview) Možnosti místní umělé inteligence pro PostgreSQL 0.1.0 0.1.0 0.1.0 0.1.0 N/A
azure_storage Integrace Azure pro PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️
kvést Přístupová metoda Bloomu – index založený na souboru podpisu 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Podpora indexování běžných datových typů v GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Podpora indexování běžných datových typů v GiST 1,7 1,7 1.6 1.5 1.5 1.5
citext Datový typ pro řetězce znaků bez rozlišování malých a velkých písmen 1.6 1.6 1.6 1.6 1.6 1.5
krychle Datový typ pro multidimenzionální datové krychle 1.5 1.5 1.5 1.4 1.4 1.4
dblink Připojení k jiným databázím PostgreSQL z databáze 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Šablona slovníku pro vyhledávání textu pro celá čísla 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Šablona slovníku vyhledávání textu pro rozšířené zpracování synonym 1.0 1.0 1.0 1.0 1.0 1.0
zemitost Výpočet vzdáleností velkého kruhu na povrchu Země 1,1 1,1 1,1 1,1 1,1 1,1
fuzzystrmatch Určení podobností a vzdálenosti mezi řetězci 1.2 1,1 1,1 1,1 1,1 1,1
hstore Datový typ pro ukládání sad párů klíčů (klíč, hodnota) 1.8 1.8 1.8 1,7 1.6 1.5
hypopg Hypotetické indexy pro PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
Intagg Agregátor integer a enumerátor (zastaralé) 1,1 1,1 1,1 1,1 1,1 1,1
intarray Podpora funkcí, operátorů a indexů pro 1D pole celých čísel 1.5 1.5 1.5 1.3 1.2 1.2
Datové typy pro mezinárodní standardy číslování výrobků 1.2 1.2 1.2 1.2 1.2 1.2
hle Údržba velkých objektů 1,1 1,1 1,1 1,1 1,1 1,1
login_hook Login_hook – spuštění login_hook.login() při přihlášení 1.5 1.4 1.4 1.4 1.4 1.4
Ltree Datový typ pro hierarchické stromové struktury 1.2 1.2 1.2 1.2 1,1 1,1
orafce Funkce a operátory, které emulují podmnožinu funkcí a balíčků z Oracle RDBMS 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect Kontrola obsahu databázových stránek na nízké úrovni 1.12 1.11 1,9 1.8 1,7 1,7
pgaudit Poskytuje funkce auditování. 16,0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1,5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Prozkoumání mezipaměti sdílené vyrovnávací paměti 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Plánovač úloh pro PostgreSQL 1,5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Kryptografické funkce 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (Preview) Správce slotu logické replikace pro účely převzetí služeb při selhání 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️
pg_freespacemap Prozkoumání mapy volného místa (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Umožňuje upravit plány provádění PostgreSQL pomocí takzvaných tipů v komentářích SQL. 1.6.0 ✔️ 1,5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Logická replikace PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Rozšíření pro správu dělených tabulek podle času nebo ID 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Předzřetěná data relačních dat 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Změna uspořádání tabulek v databázích PostgreSQL s minimálními zámky 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Rozšíření PgRouting 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Zobrazení informací o uzamčení na úrovni řádků 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Nástroj pro odebrání nevyužitého místa z relace. 1.6 ✔️ 1.6 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️
pg_stat_statements Sledování statistik plánování a provádění všech spuštěných příkazů SQL 1.10 ✔️ 1.10 ✔️ 1,9 ✔️ 1,8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Zobrazení statistiky na úrovni řazené kolekce členů 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Měření podobnosti textu a vyhledávání indexů na základě trigramů 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Prozkoumání mapy viditelnosti (virtuálního počítače) a informací o viditelnosti na úrovni stránky 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Procedurální jazyk PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 Důvěryhodný procedurální jazyk PL/JavaScript (v8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis Geometrie PostGIS a geografické prostorové typy a funkce 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Rasterové typy a funkce PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funkce PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS tiger geocoder a reverzní geokódér 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Prostorové typy a funkce topologie PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Obálka cizích dat pro vzdálené servery PostgreSQL 1,1 1,1 1,1 1.0 1.0 1.0
semver Datový typ sémantické verze 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable – registrace a manipulace s proměnnými relace a konstantami 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informace o certifikátech SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Funkce, které manipulují s celými tabulkami, včetně křížové tabulky 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Obálka cizích dat pro dotazování databáze TDS (Sybase nebo Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Umožňuje škálovatelné vkládání a složité dotazy pro data časových řad. 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows Metoda TABLESAMPLE, která přijímá počet řádků jako limit 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time Metoda TABLESAMPLE, která jako limit přijímá čas v milisekundách 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Slovník pro vyhledávání textu, který odebere zvýraznění 1,1 1,1 1,1 1,1 1,1 1,1
uuid-ossp Generování univerzálních jedinečných identifikátorů (UUID) 1,1 1,1 1,1 1,1 1,1 1,1
vektor Vektorový datový typ a metody přístupu ivfflat a hnsw 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

Upgrade rozšíření PostgreSQL

Místní upgrady rozšíření databáze jsou povoleny jednoduchým příkazem. Tato funkce umožňuje zákazníkům automaticky aktualizovat rozšíření třetích stran na nejnovější verze a udržovat aktuální a zabezpečené systémy bez ručního úsilí.

Aktualizace rozšíření

Pokud chcete aktualizovat nainstalované rozšíření na nejnovější dostupnou verzi podporovanou v Azure, použijte následující příkaz SQL:

ALTER EXTENSION <extension_name> UPDATE;

Tento příkaz zjednodušuje správu rozšíření databáze tím, že uživatelům umožňuje ruční upgrade na nejnovější verzi schválenou Azure, což zvyšuje kompatibilitu i zabezpečení.

Omezení

Aktualizace rozšíření je sice jednoduchá, ale existují určitá omezení:

  • Výběr konkrétní verze: Příkaz nepodporuje aktualizaci na zprostředkující verze rozšíření. Vždy se aktualizuje na nejnovější dostupnou verzi.
  • Downgrading: Nepodporuje downgradování rozšíření na předchozí verzi. Pokud je potřeba downgrade, může vyžadovat pomoc s podporou a závisí na dostupnosti předchozí verze.

Nainstalovaná rozšíření

Pokud chcete zobrazit seznam rozšíření aktuálně nainstalovaných v databázi, použijte následující příkaz SQL:

SELECT * FROM pg_extension;

Dostupná rozšíření a jejich verze

Pokud chcete zkontrolovat, které verze rozšíření jsou k dispozici pro aktuální instalaci databáze, zadejte dotaz na pg_available_extensions zobrazení katalogu systému. Pokud chcete například určit verzi dostupnou azure_aipro rozšíření, spusťte:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Tyto příkazy poskytují nezbytné přehledy o konfiguracích rozšíření databáze a pomáhají efektivně a bezpečně udržovat vaše systémy. Díky zajištění jednoduchých aktualizací nejnovějších verzí rozšíření podporuje Azure Database for PostgreSQL robustní, zabezpečenou a efektivní správu databázových aplikací.

Důležité informace týkající se flexibilního serveru Azure Database for PostgreSQL

Následuje seznam podporovaných rozšíření, která vyžadují určité konkrétní aspekty při použití ve službě flexibilního serveru Azure Database for PostgreSQL. Seznam je abecedně seřazený.

Dblink umožňuje připojit se z jedné instance flexibilního serveru Azure Database for PostgreSQL k jiné nebo k jiné databázi na stejném serveru. Flexibilní server Azure Database for PostgreSQL podporuje příchozí i odchozí připojení k libovolnému serveru PostgreSQL. Odesílající server musí povolit odchozí připojení k přijímajícímu serveru. Podobně přijímající server musí povolit připojení z odesílajícího serveru.

Pokud plánujete použít toto rozšíření, doporučujeme nasadit servery s integrací virtuální sítě. Integrace virtuální sítě ve výchozím nastavení umožňuje připojení mezi servery ve virtuální síti. K přizpůsobení přístupu můžete také použít skupiny zabezpečení sítě virtuální sítě.

pg_buffercache

pg_buffercache lze použít ke studiu obsahu shared_buffers. Pomocí tohoto rozšíření můžete zjistit, jestli je konkrétní relace uložena do mezipaměti (v shared_buffers). Toto rozšíření vám může pomoct při řešení potíží s výkonem (problémy související s výkonem související s ukládáním do mezipaměti).

Toto rozšíření je integrované s základní instalací PostgreSQL a snadno se instaluje.

CREATE EXTENSION pg_buffercache;

pg_cron

pg_cron je jednoduchý plánovač úloh založený na cron pro PostgreSQL, který běží uvnitř databáze jako rozšíření. Rozšíření pg_cron lze použít ke spouštění naplánovaných úloh údržby v databázi PostgreSQL. Můžete například spustit pravidelné vakuum tabulky nebo odebrat staré datové úlohy.

pg_cron může paralelně spouštět více úloh, ale současně běží nejvýše jednu instanci úlohy. Pokud se má spustit druhé spuštění před dokončením prvního spuštění, druhé spuštění se zařadí do fronty a spustí se hned po dokončení prvního spuštění. Tímto způsobem je zajištěno, že úlohy běží přesně tolikrát, kolikrát je naplánováno, a nespustí se souběžně s sebou.

Některé příklady:

Chcete-li odstranit stará data v sobotu v 3:30 (GMT).

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

Chcete-li spustit úklid každý den v 10:00 (GMT) ve výchozí databázi postgres.

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

Chcete-li zrušit naplánování všech úkolů od pg_cron.

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

Chcete-li zobrazit všechny úlohy, které jsou aktuálně naplánovány pomocí pg_cron.

SELECT * FROM cron.job;

Chcete-li spustit úklid každý den v 10:00 (GMT) v databázi "testcron" pod azure_pg_admin účet role.

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

Poznámka:

pg_cron rozšíření se předem načte shared_preload_libraries pro každou instanci flexibilního serveru Azure Database for PostgreSQL uvnitř databáze postgres, abyste měli možnost plánovat spouštění úloh v jiných databázích v rámci instance flexibilního serveru Azure Database for PostgreSQL bez ohrožení zabezpečení. Z bezpečnostních důvodů ale stále musíte povolit rozšíření seznamu pg_cron povolených a nainstalovat ho pomocí příkazu CREATE EXTENSION .

pg_cron Počínaje verzí 1.4 můžete pomocí cron.schedule_in_database funkcí cron.alter_job naplánovat úlohu v konkrétní databázi a aktualizovat existující plán.

Některé příklady:

Chcete-li odstranit stará data v sobotu v 3:30 (GMT) v databázi DBName.

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

Poznámka:

cron_schedule_in_database funkce umožňuje uživatelské jméno jako volitelný parametr. Nastavení uživatelského jména na nenulovou hodnotu vyžaduje oprávnění superuživatele PostgreSQL a na flexibilním serveru Azure Database for PostgreSQL se nepodporuje. Předchozí příklady ukazují spuštění této funkce s volitelným parametrem uživatelského jména vynechaným nebo nastaveným na hodnotu null, která spouští úlohu v kontextu plánování úlohy uživatele, která by měla mít azure_pg_admin oprávnění role.

Aktualizace nebo změna názvu databáze pro existující plán

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

pg_failover_slots (Preview)

Rozšíření slotů převzetí služeb při selhání PG vylepšuje flexibilní server Azure Database for PostgreSQL při provozu s logickou replikací i servery s povolenou vysokou dostupností. Efektivně řeší výzvu v rámci standardního modulu PostgreSQL, který po převzetí služeb při selhání nezachovává sloty logické replikace. Udržování těchto slotů je důležité, aby se zabránilo pozastavení replikace nebo neshodě dat během změn role primárního serveru, což zajišťuje provozní kontinuitu a integritu dat.

Rozšíření zjednodušuje proces převzetí služeb při selhání tím, že spravuje potřebné přenosy, vyčištění a synchronizaci slotů replikace, a tím zajišťuje bezproblémový přechod během změn role serveru. Rozšíření je podporované pro PostgreSQL verze 11 až 16.

Další informace a způsob použití rozšíření PG Failover Slots najdete na stránce GitHubu.

Povolení pg_failover_slots

Pokud chcete povolit rozšíření slotů převzetí služeb při selhání PG pro instanci flexibilního serveru Azure Database for PostgreSQL, musíte upravit konfiguraci serveru zahrnutím rozšíření do sdílených knihoven předběžného načtení serveru a úpravou konkrétního parametru serveru. Postup je následující:

  1. Přidejte pg_failover_slots do sdílených knihoven předběžného načtení serveru aktualizací parametru shared_preload_libraries .
  2. Změňte parametr hot_standby_feedback serveru na on.

Všechny změny parametru shared_preload_libraries vyžadují, aby se projevilo restartování serveru.

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
  2. V nabídce prostředků v části Nastavení vyberte Parametry serveru.
  3. Vyhledejte shared_preload_libraries parametr a upravte jeho hodnotu tak, aby zahrnovala pg_failover_slots.
  4. Vyhledejte hot_standby_feedback parametr a nastavte jeho hodnotu na on.
  5. Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy shared_preload_libraries vyžadují restartování serveru.

Výběrem možnosti Uložit a restartovat se server automaticky restartuje a použije právě provedené změny. Jakmile je server opět online, rozšíření slotů převzetí služeb při selhání pg je povolené a funkční na vaší primární instanci flexibilního serveru Azure Database for PostgreSQL připravené ke zpracování slotů logické replikace během převzetí služeb při selhání.

pg_hint_plan

pg_hint_plan umožňuje v komentářích SQL upravit plány provádění PostgreSQL pomocí tzv. "hints", například:

/*+ SeqScan(a) */

pg_hint_plan čte nápovědu frází v komentáři speciálního tvaru zadaného pomocí cílového příkazu SQL. Speciální formulář začíná sekvencí znaků /*+a končí znakem "*/". Fráze nápovědy se skládají z názvu nápovědy a následujících parametrů uzavřených závorky a oddělené mezerami. Nové řádky pro čitelnost můžou každou nápovědu oddělovat.

Příklad:

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

Předchozí příklad způsobí, že plánovač použije výsledky seq scan tabulky, která se zkombinuje s tabulkou b jako a hash join.

Pokud chcete nainstalovat pg_hint_plan navíc, abyste ho mohli zahrnout do seznamu povolených, jak je znázorněno v tom, jak používat rozšíření PostgreSQL, musíte ho zahrnout do sdílených knihoven předběžného načtení serveru. Změna parametru shared_preload_libraries Postgres vyžaduje , aby se projevilo restartování serveru. Parametry můžete změnit pomocí webu Azure Portal nebo Azure CLI.

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
  2. V nabídce prostředků v části Nastavení vyberte Parametry serveru.
  3. Vyhledejte shared_preload_libraries parametr a upravte jeho hodnotu tak, aby zahrnovala pg_hint_plan.
  4. Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy shared_preload_libraries vyžadují restartování serveru. Teď můžete povolit pg_hint_plan flexibilní serverovou databázi Azure Database for PostgreSQL. Připojte se k databázi a zadejte následující příkaz:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

Rozšíření pg_prewarm načte relační data do mezipaměti. Předběžné sestavení mezipamětí znamená, že vaše dotazy mají lepší dobu odezvy při prvním spuštění po restartování. Funkce automatického předwarmu v současné době není dostupná na flexibilním serveru Azure Database for PostgreSQL.

pg_repack

Typická otázka, kterou se lidé ptají, když se poprvé pokusí použít toto rozšíření: Je pg_repack rozšíření nebo spustitelný soubor na straně klienta, jako je psql nebo pg_dump?

Odpověď na to je, že je to ve skutečnosti obojí. pg_repack/lib obsahuje kód pro rozšíření, včetně schématu a artefaktů SQL, které vytvoří, a knihovna jazyka C implementuje kód několika těchto funkcí. Na druhou stranu pg_repack/bin uchovává kód klientské aplikace, který ví, jak pracovat s artefakty programovatelnosti vytvořené rozšířením. Cílem této klientské aplikace je usnadnit složitost interakce s různými rozhraními, která se zobrazí rozšířením na straně serveru, tím, že uživateli nabízí některé možnosti příkazového řádku, které jsou snadněji pochopitelné. Klientská aplikace bez rozšíření vytvořeného v databázi, na kterou odkazuje, je zbytečná. Rozšíření na straně serveru by samo o sobě bylo plně funkční, ale vyžadovalo by, aby uživatel porozuměl složitému vzoru interakce, který se skládá z provádění dotazů pro načtení dat, která se používají jako vstup do funkcí implementovaných rozšířením.

Oprávnění odepřeno pro opětovné zabalení schématu

Od této chvíle je vzhledem k tomu, jakým způsobem udělujeme oprávnění ke schématu opětovného balení vytvořenému tímto rozšířením, je podporováno pouze spouštění pg_repack funkcí z kontextu azure_pg_admin.

Můžete si všimnout, že pokud se vlastník tabulky, který není azure_pg_admin, pokusí spustit pg_repack, skončí s chybou, jako je následující:

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()

Chcete-li se této chybě vyhnout, ujistěte se, že spouštíte pg_repack z kontextu azure_pg_admin.

pg_stat_statements

Rozšíření pg_stat_statements poskytuje zobrazení všech dotazů, které jsou spuštěné ve vaší databázi. To je užitečné k pochopení toho, jak výkon úloh dotazů vypadá v produkčním systému.

Rozšíření pg_stat_statements se předem načte na shared_preload_libraries každou instanci flexibilního serveru Azure Database for PostgreSQL, která vám poskytne způsob sledování statistik provádění příkazů SQL. Z bezpečnostních důvodů ale stále musíte povolit rozšíření pg_stat_statements seznamupovolených a nainstalovat ho pomocí příkazu CREATE EXTENSION. Nastavení pg_stat_statements.track, které řídí, jaké příkazy jsou počítány rozšířením, výchozí nastavení , což znamená, že všechny příkazy topvydané přímo klienty jsou sledovány. Dvě další úrovně sledování jsou none a all. Toto nastavení je konfigurovatelné jako parametr serveru.

Je potřeba najít kompromis mezi informacemi o spouštění dotazů, které poskytuje rozšíření pg_stat_statements, a dopadem na výkon serveru při protokolování jednotlivých příkazů SQL. Pokud rozšíření aktivně nepoužíváte pg_stat_statements , doporučujeme nastavit pg_stat_statements.track možnost none. Některé monitorovací služby třetích stran se můžou spoléhat na pg_stat_statements poskytování přehledů výkonu dotazů, takže ověřte, jestli se jedná o případ za vás, nebo ne.

postgres_fdw

postgres_fdw umožňuje připojení z jedné instance flexibilního serveru Azure Database for PostgreSQL k jiné nebo k jiné databázi na stejném serveru. Flexibilní server Azure Database for PostgreSQL podporuje příchozí i odchozí připojení k libovolnému serveru PostgreSQL. Odesílající server musí povolit odchozí připojení k přijímajícímu serveru. Podobně přijímající server musí povolit připojení z odesílajícího serveru.

Pokud plánujete použít toto rozšíření, doporučujeme nasadit servery s integrací virtuální sítě. Integrace virtuální sítě ve výchozím nastavení umožňuje připojení mezi servery ve virtuální síti. K přizpůsobení přístupu můžete také použít skupiny zabezpečení sítě virtuální sítě.

TimescaleDB

TimescaleDB je databáze časových řad, která je zabalená jako rozšíření pro PostgreSQL. TimescaleDB poskytuje časově orientované analytické funkce, optimalizace a škálování Postgres pro úlohy časových řad. Přečtěte si další informace o sadě TimescaleDB, registrovanou ochrannou známku flexibilního serveru Timescale, Inc. Azure Database for PostgreSQL poskytuje edici TimescaleDB Apache-2.

Instalace timescaleDB

Pokud chcete kromě toho nainstalovat timescaleDB, aby bylo možné ji uvést, jak je znázorněno výše, musíte ji zahrnout do sdílených knihoven předběžného načtení serveru. Změna parametru shared_preload_libraries Postgres vyžaduje , aby se projevilo restartování serveru. Parametry můžete změnit pomocí webu Azure Portal nebo Azure CLI.

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
  2. V nabídce prostředků v části Nastavení vyberte Parametry serveru.
  3. Vyhledejte shared_preload_libraries parametr a upravte jeho hodnotu tak, aby zahrnovala TimescaleDB.
  4. Výběrem možnosti Uložit zachováte provedené změny. Teď máte možnost Uložit a restartovat. Tuto možnost zvolte, pokud chcete zajistit, aby se změny projevily, protože úpravy shared_preload_libraries vyžadují restartování serveru. Ve své flexibilní serverové databázi Azure Database for PostgreSQL teď můžete povolit timescaleDB. Připojte se k databázi a zadejte následující příkaz:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Tip

Pokud se zobrazí chyba, po uložení shared_preload_libraries potvrďte, že jste server restartovali.

Teď můžete vytvořit hypertable timescaleDB úplně od začátku nebo migrovat stávající data časových řad v PostgreSQL.

Obnovení databáze časové osy pomocí pg_dump a pg_restore

Chcete-li obnovit databázi časové osy pomocí pg_dump a pg_restore, musíte v cílové databázi spustit dva pomocné postupy: timescaledb_pre_restore() a timescaledb_post restore().

Nejprve připravte cílovou databázi:

--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();

Teď můžete spustit pg_dump v původní databázi a pak provést pg_restore. Po obnovení nezapomeňte v obnovené databázi spustit následující příkaz:

SELECT timescaledb_post_restore();

Další podrobnosti o metodě obnovení s databází s povolenou časovou osou najdete v dokumentaci k časovému měřítku.

Obnovení databáze časové osy pomocí zálohy timescaledb

Při spuštění SELECT timescaledb_post_restore() výše uvedeného postupu se může zobrazit chyba odepření oprávnění při aktualizaci příznaku timescaledb.restoring. Důvodem je omezené oprávnění ALTER DATABASE v databázových službách Cloud PaaS. V takovém případě můžete pomocí nástroje provést alternativní metodu timescaledb-backup zálohování a obnovení databáze časové osy. Timescaledb-backup je program pro jednodušší dumping a obnovení databáze TimescaleDB, méně náchylné k chybám a výkonnější.
Pokud to chcete udělat, měli byste postupovat následovně:

  1. Tady najdete podrobné informace o instalaci nástrojů.
  2. Vytvoření cílové instance a databáze flexibilního serveru Azure Database for PostgreSQL
  3. Povolení rozšíření časové osy, jak je znázorněno výše
  4. Udělení azure_pg_admin role uživateli, který bude používat ts-restore
  5. Spuštění příkazu ts-restore pro obnovení databáze

Další podrobnosti o těchto nástrojích najdete tady.

Upgrade rozšíření a hlavní verze

Flexibilní server Azure Database for PostgreSQL zavedl funkci místního upgradu hlavní verze, která provádí místní upgrade instance flexibilního serveru Azure Database for PostgreSQL jediným kliknutím. Místní upgrade hlavní verze zjednodušuje proces upgradu flexibilního serveru Azure Database for PostgreSQL a minimalizuje přerušení přístupu uživatelů a aplikací k serveru. Místní upgrade hlavní verze nepodporuje konkrétní rozšíření a pro upgrade určitých rozšíření existují určitá omezení. Rozšíření Timescaledb, pgaudit, dblink nebo orafce a postgres_fdw nejsou podporovány pro všechny verze flexibilního serveru Azure Database for PostgreSQL při použití funkce místní aktualizace hlavní verze.