共用方式為


適用於 PostgreSQL 的 Azure 資料庫中的 PostgreSQL 延伸模組 - 單一伺服器

適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器即將淘汰。 強烈建議您升級至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫單一伺服器會發生什麼情況? (部分機器翻譯)。

PostgreSQL 提供下列功能:使用擴充功能來擴充您的資料庫功能。 延伸模組會將多個相關 SQL 物件統合在同一個套件之中,而且只要一個命令,就能載入或從資料庫移除。 載入到資料庫之後,延伸模組就像內建功能一樣。

如何使用 PostgreSQL 擴充功能

您必須先在資料庫中安裝 PostgreSQL 擴充功能,然後才能使用它們。 若要安裝特定的延伸模組,請從 psql 工具執行「CREATE EXTENSION」命令,以將封裝的物件載入至您的資料庫。

適用於 PostgreSQL 的 Azure 資料庫支援下列的主要延伸模組子集。 此資訊也可以藉由執行 SELECT * FROM pg_available_extensions; 來取得。 未列出的其他延伸模組不受支援。 在適用於 PostgreSQL 的 Azure 資料庫中無法建立您自己的延伸模組。

Postgres 11 延伸模組

在具有 Postgres 第 11 版的「適用於 PostgreSQL 的 Azure 資料庫」伺服器中可使用下列延伸模組。

副檔名 延伸模組版本 說明
address_standardizer 2.5.1 用來將位址剖析為組成項目。
address_standardizer_data_us 2.5.1 Address Standardizer US 資料集範例
btree_gin 1.3 支援在 GIN 中編制通用資料類型的索引
btree_gist 1.5 支援在 GiST 中編制通用資料類型的索引
citext 1.5 不區分大小寫字元字串的資料類型
cube 1.4 多維度 Cube 的資料類型
dblink 1.2 從資料庫內連線至其他 PostgreSQL 資料庫
dict_int 1.0 整數的文字搜尋字典範本
earthdistance 1.1 計算地球表面上的大圓距離
fuzzystrmatch 1.1 判斷字串之間的相似性與距離
hstore 1.5 用來儲存索引鍵/值組集合的資料類型
hypopg 1.1.2 PostgreSQL 的假設索引
intarray 1.2 1D 整數陣列的函式、運算子和索引支援
isn 1.2 國際產品編號標準的資料類型
ltree 1.1 階層式樹狀結構的資料類型
orafce 3.7 模擬函式和套件子集 (來自商務 RDBMS) 的函式和運算子
pgaudit 1.3.1 提供稽核功能
pgcrypto 1.3 密碼編譯函數
pgrouting 2.6.2 pgRouting 延伸模組
pgrowlocks 1.2 顯示資料列層級鎖定資訊
pgstattuple 1.5 顯示元組層級統計資料
pg_buffercache 1.3 檢查共用緩衝區快取
pg_partman 4.0.0 依時間或識別碼管理資料分割資料表的延伸模組
pg_prewarm 1.2 預先載入關聯資料
pg_stat_statements 1.6 追蹤所有已執行 SQL 陳述式的執行統計資料
pg_trgm 1.4 文字相似度測量和根據三字母組的索引搜尋
plpgsql 1.0 PL/pgSQL 程序性語言
plv8 2.3.11 PL/JavaScript (v8) 信任的程序性語言
postgis 2.5.1 PostGIS 幾何、地理和點陣空間類型與函式
postgis_sfcgal 2.5.1 PostGIS SFCGAL 函式
postgis_tiger_geocoder 2.5.1 PostGIS Tiger 地理編碼器和反向地理編碼器
postgis_topology 2.5.1 PostGIS 拓撲空間類型和函式
postgres_fdw 1.0 遠端 PostgreSQL 伺服器的外部資料包裝函式
tablefunc 1.0 操作整個資料表 (包括交叉資料表) 的函式
timescaledb 1.7.4 針對時間序列資料啟用可調整的插入和複雜查詢
unaccent 1.1 移除重音的文字搜尋字典
uuid-ossp 1.1 產生通用唯一識別碼 (UUID)

Postgres 10 延伸模組

在具有 Postgres 第 10 版的「適用於 PostgreSQL 的 Azure 資料庫」伺服器中可使用下列延伸模組。

副檔名 延伸模組版本 說明
address_standardizer 2.5.1 用來將位址剖析為組成項目。
address_standardizer_data_us 2.5.1 Address Standardizer US 資料集範例
btree_gin 1.3 支援在 GIN 中編制通用資料類型的索引
btree_gist 1.5 支援在 GiST 中編制通用資料類型的索引
chkpass 1.0 自動加密密碼的資料類型
citext 1.4 不區分大小寫字元字串的資料類型
cube 1.2 多維度 Cube 的資料類型
dblink 1.2 從資料庫內連線至其他 PostgreSQL 資料庫
dict_int 1.0 整數的文字搜尋字典範本
earthdistance 1.1 計算地球表面上的大圓距離
fuzzystrmatch 1.1 判斷字串之間的相似性與距離
hstore 1.4 用來儲存索引鍵/值組集合的資料類型
hypopg 1.1.1 PostgreSQL 的假設索引
intarray 1.2 1D 整數陣列的函式、運算子和索引支援
isn 1.1 國際產品編號標準的資料類型
ltree 1.1 階層式樹狀結構的資料類型
orafce 3.7 模擬函式和套件子集 (來自商務 RDBMS) 的函式和運算子
pgaudit 1.2 提供稽核功能
pgcrypto 1.3 密碼編譯函數
pgrouting 2.5.2 pgRouting 延伸模組
pgrowlocks 1.2 顯示資料列層級鎖定資訊
pgstattuple 1.5 顯示元組層級統計資料
pg_buffercache 1.3 檢查共用緩衝區快取
pg_partman 2.6.3 依時間或識別碼管理資料分割資料表的延伸模組
pg_prewarm 1.1 預先載入關聯資料
pg_stat_statements 1.6 追蹤所有已執行 SQL 陳述式的執行統計資料
pg_trgm 1.3 文字相似度測量和根據三字母組的索引搜尋
plpgsql 1.0 PL/pgSQL 程序性語言
plv8 2.1.0 PL/JavaScript (v8) 信任的程序性語言
postgis 2.4.3 PostGIS 幾何、地理和點陣空間類型與函式
postgis_sfcgal 2.4.3 PostGIS SFCGAL 函式
postgis_tiger_geocoder 2.4.3 PostGIS Tiger 地理編碼器和反向地理編碼器
postgis_topology 2.4.3 PostGIS 拓撲空間類型和函式
postgres_fdw 1.0 遠端 PostgreSQL 伺服器的外部資料包裝函式
tablefunc 1.0 操作整個資料表 (包括交叉資料表) 的函式
timescaledb 1.7.4 針對時間序列資料啟用可調整的插入和複雜查詢
unaccent 1.1 移除重音的文字搜尋字典
uuid-ossp 1.1 產生通用唯一識別碼 (UUID)

Postgres 9.6 延伸模組

在具有 Postgres 9.6 版的「適用於 PostgreSQL 的 Azure 資料庫」伺服器中可使用下列延伸模組。

副檔名 延伸模組版本 說明
address_standardizer 2.3.2 用來將位址剖析為組成項目。
address_standardizer_data_us 2.3.2 Address Standardizer US 資料集範例
btree_gin 1.0 支援在 GIN 中編制通用資料類型的索引
btree_gist 1.2 支援在 GiST 中編制通用資料類型的索引
chkpass 1.0 自動加密密碼的資料類型
citext 1.3 不區分大小寫字元字串的資料類型
cube 1.2 多維度 Cube 的資料類型
dblink 1.2 從資料庫內連線至其他 PostgreSQL 資料庫
dict_int 1.0 整數的文字搜尋字典範本
earthdistance 1.1 計算地球表面上的大圓距離
fuzzystrmatch 1.1 判斷字串之間的相似性與距離
hstore 1.4 用來儲存索引鍵/值組集合的資料類型
hypopg 1.1.1 PostgreSQL 的假設索引
intarray 1.2 1D 整數陣列的函式、運算子和索引支援
isn 1.1 國際產品編號標準的資料類型
ltree 1.1 階層式樹狀結構的資料類型
orafce 3.7 模擬函式和套件子集 (來自商務 RDBMS) 的函式和運算子
pgaudit 1.1.2 提供稽核功能
pgcrypto 1.3 密碼編譯函數
pgrouting 2.3.2 pgRouting 延伸模組
pgrowlocks 1.2 顯示資料列層級鎖定資訊
pgstattuple 1.4 顯示元組層級統計資料
pg_buffercache 1.2 檢查共用緩衝區快取
pg_partman 2.6.3 依時間或識別碼管理資料分割資料表的延伸模組
pg_prewarm 1.1 預先載入關聯資料
pg_stat_statements 1.4 追蹤所有已執行 SQL 陳述式的執行統計資料
pg_trgm 1.3 文字相似度測量和根據三字母組的索引搜尋
plpgsql 1.0 PL/pgSQL 程序性語言
plv8 2.1.0 PL/JavaScript (v8) 信任的程序性語言
postgis 2.3.2 PostGIS 幾何、地理和點陣空間類型與函式
postgis_sfcgal 2.3.2 PostGIS SFCGAL 函式
postgis_tiger_geocoder 2.3.2 PostGIS Tiger 地理編碼器和反向地理編碼器
postgis_topology 2.3.2 PostGIS 拓撲空間類型和函式
postgres_fdw 1.0 遠端 PostgreSQL 伺服器的外部資料包裝函式
tablefunc 1.0 操作整個資料表 (包括交叉資料表) 的函式
timescaledb 1.7.4 針對時間序列資料啟用可調整的插入和複雜查詢
unaccent 1.1 移除重音的文字搜尋字典
uuid-ossp 1.1 產生通用唯一識別碼 (UUID)

Postgres 9.5 延伸模組

注意

PostgreSQL 9.5 版已淘汰。

在具有 Postgres 9.5 版的「適用於 PostgreSQL 的 Azure 資料庫」伺服器中可使用下列延伸模組。

副檔名 延伸模組版本 說明
address_standardizer 2.3.0 用來將位址剖析為組成項目。
address_standardizer_data_us 2.3.0 Address Standardizer US 資料集範例
btree_gin 1.0 支援在 GIN 中編制通用資料類型的索引
btree_gist 1.1 支援在 GiST 中編制通用資料類型的索引
chkpass 1.0 自動加密密碼的資料類型
citext 1.1 不區分大小寫字元字串的資料類型
cube 1.0 多維度 Cube 的資料類型
dblink 1.1 從資料庫內連線至其他 PostgreSQL 資料庫
dict_int 1.0 整數的文字搜尋字典範本
earthdistance 1.0 計算地球表面上的大圓距離
fuzzystrmatch 1.0 判斷字串之間的相似性與距離
hstore 1.3 用來儲存索引鍵/值組集合的資料類型
hypopg 1.1.1 PostgreSQL 的假設索引
intarray 1.0 1D 整數陣列的函式、運算子和索引支援
isn 1.0 國際產品編號標準的資料類型
ltree 1.0 階層式樹狀結構的資料類型
orafce 3.7 模擬函式和套件子集 (來自商務 RDBMS) 的函式和運算子
pgaudit 1.0.7 提供稽核功能
pgcrypto 1.2 密碼編譯函數
pgrouting 2.3.0 pgRouting 延伸模組
pgrowlocks 1.1 顯示資料列層級鎖定資訊
pgstattuple 1.3 顯示元組層級統計資料
pg_buffercache 1.1 檢查共用緩衝區快取
pg_partman 2.6.3 依時間或識別碼管理資料分割資料表的延伸模組
pg_prewarm 1.0 預先載入關聯資料
pg_stat_statements 1.3 追蹤所有已執行 SQL 陳述式的執行統計資料
pg_trgm 1.1 文字相似度測量和根據三字母組的索引搜尋
plpgsql 1.0 PL/pgSQL 程序性語言
postgis 2.3.0 PostGIS 幾何、地理和點陣空間類型與函式
postgis_sfcgal 2.3.0 PostGIS SFCGAL 函式
postgis_tiger_geocoder 2.3.0 PostGIS Tiger 地理編碼器和反向地理編碼器
postgis_topology 2.3.0 PostGIS 拓撲空間類型和函式
postgres_fdw 1.0 遠端 PostgreSQL 伺服器的外部資料包裝函式
tablefunc 1.0 操作整個資料表 (包括交叉資料表) 的函式
unaccent 1.0 移除重音的文字搜尋字典
uuid-ossp 1.0 產生通用唯一識別碼 (UUID)

pg_stat_statements

每個「適用於 PostgreSQL 的 Azure 資料庫」伺服器已預先載入 pg_stat_statements 延伸模組,可讓您追蹤 SQL 陳述式的執行統計資料。 控制延伸模組計入哪些陳述式的設定 pg_stat_statements.track 預設為 top,這表示會追蹤用戶端直接發出的所有陳述式。 其他兩個會追蹤層級 noneall。 這項設定是可透過 Azure 入口網站Azure CLI 設定的伺服器參數。

pg_stat_statements 提供查詢執行資訊,不過會對於伺服器效能造成影響,因為它會記錄每個 SQL 陳述式。 如果您不主動使用 pg_stat_statements 延伸模組,我們建議您將 pg_stat_statements.track 設定為 none。 請注意,某些協力廠商監視服務可能會需要 pg_stat_statements 傳遞查詢效能深入解析,因此請確認這是否為您的情況。

dblinkpostgres_fdw 可讓您從一個 PostgreSQL 伺服器連線至另一個伺服器,或連線至相同伺服器中的另一個資料庫。 接收端伺服器必須允許來自傳送端伺服器通過其防火牆的連線。 將這些延伸模組用於「適用於 PostgreSQL 的 Azure 資料庫」伺服器之間的連線時,可藉由將 [允許存取 Azure 服務] 設為 [開啟] 來執行此動作。 如果您想要使用延伸模組來回路到相同的伺服器,也需要執行此動作。 [允許存取 Azure 服務] 設定可在「適用於 PostgreSQL 的 Azure 資料庫」伺服器的 Azure 入口網站頁面中找到,位於 [連線安全性] 下方。 開啟 [允許存取 Azure 服務] 會將所有 Azure IP 放在允許清單中。

注意

除了連線至相同 Azure 區域中的其他「適用於 PostgreSQL 的 Azure 資料庫」伺服器以外,目前不支援透過外部資料包裝函式延伸模組 (例如 postgres_fdw) 從「適用於 PostgreSQL 的 Azure 資料庫」對外連線。

uuid

如果您打算使用 uuid-ossp 延伸模組中的 uuid_generate_v4(),請考慮與 pgcrypto 延伸模組中的 gen_random_uuid() 相互比較兩者的效能優點。

pgAudit

pgAudit 延伸模組提供工作階段和物件稽核記錄。 若要了解如何在適用於 PostgreSQL 的 Azure 資料庫中使用此延伸模組,請參閱稽核概念一文。

pg_prewarm

pg_prewarm 延伸模組將關聯式資料載入快取。 預先載入快取表示重新開機後,查詢在第一次執行時有較佳的回應時間。 在 Postgres 10 和更舊版本中,需要使用預先載入函式來手動執行預先載入。

在 Postgres 11 和更新版本中,您可以設定自動預先載入。 您必須在 shared_preload_libraries 參數清單中加上 pg_prewarm,然後重新啟動伺服器以套用變更。 您可以從 Azure 入口網站CLI、REST API 或 ARM 範本來設定參數。

TimescaleDB

TimescaleDB 是封裝為 PostgreSQL 延伸模組的時間序列資料庫。 TimescaleDB 提供時間導向的分析函式、最佳化,可調整 Postgres 來處理時間序列工作負載。

深入了解 TimescaleDB (Timescale, Inc. 的註冊商標)。 適用於 PostgreSQL 的 Azure 資料庫提供 TimescaleDB Apache-2 版本

安裝 TimescaleDB

若要安裝 TimescaleDB,您需要將 TimescaleDB 加入伺服器的共用預先載入程式庫中。 需要重新啟動伺服器,對 Postgres shared_preload_libraries 參數的變更才會生效。 您可以使用 Azure 入口網站Azure CLI 來變更參數。

使用 Azure 入口網站

  1. 選取適用於 PostgreSQL 的 Azure 資料庫伺服器。

  2. 在提要欄位中,選取 [伺服器參數]

  3. 搜尋 shared_preload_libraries 參數。

  4. 選取 [TimescaleDB]

  5. 選取 [儲存] 以保留變更。 儲存變更後會通知您。

  6. 收到通知後,請重新啟動伺服器,以套用這些變更。 若要了解如何重新啟動伺服器,請參閱重新啟動適用於 PostgreSQL 的 Azure 資料庫伺服器

您現在可以在 Postgres 資料庫中啟用 TimescaleDB。 連線至資料庫並發出下列命令:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

提示

如果您看到錯誤,請確認您在儲存 shared_preload_libraries 之後已重新啟動伺服器

您現在可以從頭開始建立 TimescaleDB hypertable,或遷移 PostgreSQL 中現有的時間序列資料

使用 pg_dump 和 pg_restore 還原 Timescale 資料庫

若要使用 pg_dump 和 pg_restore 來還原 Timescale 資料庫,您需要在目的地資料庫中執行兩個輔助程序:timescaledb_pre_restore()timescaledb_post restore()

首先準備目的地資料庫:

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

現在您可以在原始資料庫上執行 pg_dump,然後再執行 pg_restore。 還原之後,請務必在還原的資料庫中執行下列命令:

SELECT timescaledb_post_restore();

有關已啟用 Timescale 的資料庫可用的還原方法,如需詳細資訊,請參閱 Timescale 文件

使用 timescaledb-backup 還原 Timescale 資料庫

執行上述 SELECT timescaledb_post_restore() 程序時,可能發生關於更新 timescaledb.restoring 旗標的權限遭拒錯誤。 這是因為在 Cloud PaaS 資料庫服務中,ALTER DATABASE 權限受限。 在此情況下,您可以採取另一種作法,使用 timescaledb-backup 工具來備份和還原 Timescale 資料庫。 Timescaledb-backup 這個程式可讓您在傾印和還原 TimescaleDB 資料庫時,更輕鬆、更不易出錯也更有效率。 作法如下

  1. 此處所詳述安裝工具
  2. 建立適用於 PostgreSQL 的 Azure 資料庫目標伺服器和資料庫
  3. 如上所示啟用 Timescale 延伸模組
  4. 將 azure_pg_admin 角色授與 ts-restore 使用的使用者
  5. 執行 ts-restore 以還原資料庫

如需這些公用程式的詳細資訊,請參閱此處

注意

使用 timescale-backup 公用程式還原至 Azure 時,因為無彈性「適用於 PostgresQL 的 Azure 資料庫」的資料庫使用者名稱必須使用 <user@db-name> 格式,您必須將 @ 換成 %40 字元編碼。

下一步

如果您未看見想要使用的擴充功能,請讓我們知道。 請在我們的意見反應論壇中投票表決現有的要求,或建立新的意見反應要求。