適用於 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 地址標準化美國數據集範例
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 密碼編譯函式
剪除 2.6.2 pgRouting 擴充功能
pgrowlocks 1.2 顯示數據列層級鎖定資訊
pgstattuple 1.5 顯示 Tuple 層級統計數據
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 geocoder and reverse geocoder
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 產生通用唯一識別碼 (UUIDs)

Postgres 10 延伸模組

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

副檔名 擴充功能版本 說明
address_standardizer 2.5.1 用來將位址剖析為組成項目。
address_standardizer_data_us 2.5.1 地址標準化美國數據集範例
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 密碼編譯函式
剪除 2.5.2 pgRouting 擴充功能
pgrowlocks 1.2 顯示數據列層級鎖定資訊
pgstattuple 1.5 顯示 Tuple 層級統計數據
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 geocoder and reverse geocoder
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 產生通用唯一識別碼 (UUIDs)

Postgres 9.6 延伸模組

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

副檔名 擴充功能版本 說明
address_standardizer 2.3.2 用來將位址剖析為組成項目。
address_standardizer_data_us 2.3.2 地址標準化美國數據集範例
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 密碼編譯函式
剪除 2.3.2 pgRouting 擴充功能
pgrowlocks 1.2 顯示數據列層級鎖定資訊
pgstattuple 1.4 顯示 Tuple 層級統計數據
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 geocoder and reverse geocoder
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 產生通用唯一識別碼 (UUIDs)

Postgres 9.5 延伸模組

注意

PostgreSQL 9.5 版已淘汰。

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

副檔名 擴充功能版本 說明
address_standardizer 2.3.0 用來將位址剖析為組成項目。
address_standardizer_data_us 2.3.0 地址標準化美國數據集範例
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 密碼編譯函式
剪除 2.3.0 pgRouting 擴充功能
pgrowlocks 1.1 顯示數據列層級鎖定資訊
pgstattuple 1.3 顯示 Tuple 層級統計數據
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 geocoder and reverse geocoder
postgis_topology 2.3.0 PostGIS 拓撲空間類型和函式
postgres_fdw 1.0 遠端 PostgreSQL 伺服器的外數據包裝函式
tablefunc 1.0 操作整個數據表的函式,包括交叉表
unaccent 1.0 拿掉輔色的文字搜尋字典
uuid-ossp 1.0 產生通用唯一識別碼 (UUIDs)

pg_stat_statements

pg_stat_statements擴充功能會在每部 適用於 PostgreSQL 的 Azure 資料庫 伺服器上預先載入,以提供追蹤 SQL 語句的執行統計數據的方法。 設定 pg_stat_statements.track會控制擴充功能計算哪些語句,預設為 top,這表示會追蹤用戶端直接發出的所有語句。 其他兩個會追蹤層級 noneall。 此設定可透過 Azure 入口網站Azure CLI 設定為伺服器參數。

pg_stat_statements 提供查詢執行資訊,不過會對於伺服器效能造成影響,因為它會記錄每個 SQL 陳述式。 如果您未主動使用 pg_stat_statements 擴充功能,建議您將 設定 pg_stat_statements.tracknone。 請注意,某些第三方監視服務可能依賴pg_stat_statements來提供查詢效能深入解析,因此請確認這是否適合您。

dblinkpostgres_fdw 可讓您從一部 PostgreSQL 伺服器連線到另一部伺服器,或連線到相同伺服器中的另一個資料庫。 接收端伺服器必須允許來自傳送端伺服器通過其防火牆的連線。 使用這些擴充功能在 適用於 PostgreSQL 的 Azure 資料庫 伺服器之間連線時,您可以將 [允許存取 Azure 服務] 設定為 ON 來完成。 如果您想要使用擴充功能來回送至相同的伺服器,也需要這樣做。 您可以在 Postgres 伺服器的 [Azure 入口網站] 頁面中,於 [連線 ion Security] 底下找到 [允許存取 Azure 服務] 設定。 開啟 [允許存取 Azure 服務] 時,會將所有 Azure IP 放在允許清單中。

注意

目前,除了連線到相同 Azure 區域中其他 適用於 PostgreSQL 的 Azure 資料庫 伺服器之外 適用於 PostgreSQL 的 Azure 資料庫,不支援透過外部數據包裝函式延伸模組,例如postgres_fdw的輸出連線。

uuid

如果您打算從 uuid-ossp 擴充功能使用uuid_generate_v4(),請考慮從 gen_random_uuid()pgcrypto 擴充功能比較以取得效能優點。

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,您必須將它包含在伺服器的共用預先載入連結庫中。 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 超數據表,或在 PostgreSQL 中移轉現有的時間序列數據。

使用pg_dump和pg_restore還原時幅資料庫

若要使用 pg_dump 和 pg_restore 還原時幅資料庫,您必須在目的地資料庫中執行兩個協助程式程式: 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();

如需還原方法 wiith Timescale 已啟用資料庫的詳細資訊,請參閱 時幅檔

使用 timescaledb-backup 還原 Timescale 資料庫

SELECT timescaledb_post_restore()在執行上述程式時,您可能會收到更新 timescaledb.restoring 旗標時遭到拒絕的許可權。 這是因為 Cloud PaaS 資料庫服務中的 ALTER DATABASE 許可權有限。 在此情況下,您可以使用工具來備份和還原時幅資料庫,執行替代方法 timescaledb-backup 。 Timescaledb-backup 是一個程式,可讓傾印和還原 TimescaleDB 資料庫更簡單、容易出錯且效能更高。 若要這樣做,您應該執行下列動作

  1. 如這裡所述 安裝工具
  2. 建立目標 適用於 PostgreSQL 的 Azure 資料庫 伺服器和資料庫
  3. 啟用時幅擴充功能,如上所示
  4. 將azure_pg_admin 角色 授與 ts-restore 將使用 的使用者
  5. 執行 ts-restore 以還原 資料庫

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

注意

使用 timescale-backup 公用程式還原至 Azure 時,因為適用於 PostgresQL 的非彈性 Azure 資料庫的資料庫使用者名稱必須使用 <user@db-name> 格式,因此您必須以字元編碼取代 @%40

下一步

如果您沒有看到想要使用的延伸模組,請告訴我們。 投票給現有的要求,或在意見 反應論壇中建立新的意見反應要求。