適用於 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
,這表示會追蹤用戶端直接發出的所有陳述式。 其他兩個會追蹤層級 none
和 all
。 這項設定是可透過 Azure 入口網站或 Azure CLI 設定的伺服器參數。
pg_stat_statements 提供查詢執行資訊,不過會對於伺服器效能造成影響,因為它會記錄每個 SQL 陳述式。 如果您不主動使用 pg_stat_statements 延伸模組,我們建議您將 pg_stat_statements.track
設定為 none
。 請注意,某些協力廠商監視服務可能會需要 pg_stat_statements 傳遞查詢效能深入解析,因此請確認這是否為您的情況。
dblink and postgres_fdw
dblink 和 postgres_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 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫伺服器。
在提要欄位中,選取 [伺服器參數]。
搜尋
shared_preload_libraries
參數。選取 [TimescaleDB]。
選取 [儲存] 以保留變更。 儲存變更後會通知您。
收到通知後,請重新啟動伺服器,以套用這些變更。 若要了解如何重新啟動伺服器,請參閱重新啟動適用於 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 資料庫時,更輕鬆、更不易出錯也更有效率。
作法如下
- 如此處所詳述安裝工具
- 建立適用於 PostgreSQL 的 Azure 資料庫目標伺服器和資料庫
- 如上所示啟用 Timescale 延伸模組
- 將 azure_pg_admin 角色授與 ts-restore 使用的使用者
- 執行 ts-restore 以還原資料庫
如需這些公用程式的詳細資訊,請參閱此處。
注意
使用 timescale-backup
公用程式還原至 Azure 時,因為無彈性「適用於 PostgresQL 的 Azure 資料庫」的資料庫使用者名稱必須使用 <user@db-name>
格式,您必須將 @
換成 %40
字元編碼。
下一步
如果您未看見想要使用的擴充功能,請讓我們知道。 請在我們的意見反應論壇中投票表決現有的要求,或建立新的意見反應要求。