您可以將 SQL 物件組合為套件,並以套件為單元使用,藉此擴充 PostgreSQL。本頁面說明如何設定 Cloud SQL 支援的 PostgreSQL 擴充功能。
使用 PostgreSQL 擴充功能
您只能安裝 Cloud SQL 支援的擴充功能。詳情請參閱「Cloud SQL 支援的 PostgreSQL 擴充功能」。
安裝擴充功能
使用擴充功能前,請先安裝:
- 在 psql 工具中,執行 CREATE EXTENSION 指令。
更新擴充功能
雖然 PostgreSQL 適用的 Cloud SQL 維護作業會自動在執行個體的基礎軟體上安裝最新的擴充功能二進位檔,但不會自動更新擴充功能的資料庫目錄。您必須手動更新擴充功能,確保使用的是最新支援版本。
如要判斷哪些擴充功能需要更新,請將已安裝的版本與Cloud SQL 支援的 PostgreSQL 擴充功能表格中列出的最新支援版本進行比較。
連線至資料庫,然後執行下列指令,查看已安裝的版本:
SELECT * FROM pg_extension;
如要將擴充功能更新至執行個體可用的最新版本,請使用 ALTER EXTENSION 指令。
使用您選擇的用戶端 (例如 Cloud SQL Studio 或 psql 用戶端) 連線至主要執行個體,然後針對要更新的每個擴充功能執行下列指令:
ALTER EXTENSION EXTENSION_NAME UPDATE;
如要更新至特定版本,請使用以下語法:
ALTER EXTENSION EXTENSION_NAME
UPDATE TO 'VERSION_NUMBER';
超級使用者權限規定
在 Cloud SQL 中,只有屬於 cloudsqlsuperuser 角色的使用者才能建立擴充功能。建立新的 PostgreSQL 執行個體時,系統會為您建立預設的 postgres 使用者 (但您必須設定使用者密碼)。預設的 postgres 使用者屬於 cloudsqlsuperuser 角色。詳情請參閱「關於 PostgreSQL 使用者」。
資料庫間連線
連線的目標執行個體必須與連線執行個體位於相同的虛擬私有雲網路。
如果是叢集執行個體,您無法在Google Cloud 控制台中選擇「Require trusted client certificates」(需要信任的用戶端憑證) 選項。此外,如要連線至同一執行個體中的資料庫,您無法將主機設為 localhost 或 127.0.0.1。請改用 Google Cloud 控制台中顯示的執行個體 IP 位址。
要求支援新擴充功能
您無法在 Cloud SQL 中建立自己的擴充功能。
如要要求支援擴充功能,請在未解決的問題上按一下「+1」,或建立新問題。如要查看待處理的 Cloud SQL 問題清單,以及建立新問題的相關資訊,請參閱「搜尋或建立問題和功能要求 (按產品劃分)」。
Cloud SQL 支援的 PostgreSQL 擴充功能
如要瞭解如何使用特定擴充功能,請參閱下方表格中的說明文件連結。
Cloud SQL 支援的 PostgreSQL 擴充功能可分為下列類別:
PostGIS
PostgreSQL 適用的 Cloud SQL 支援所有主要版本的 PostGIS 擴充功能。
下表列出各 PostgreSQL 適用的 Cloud SQL 版本的 PostGIS 擴充功能版本:
| PostgreSQL 適用的 Cloud SQL 版本 | PostGIS 擴充功能 |
| PostgreSQL 9.6 | 3.2.5 |
| PostgreSQL 10 | 3.2.5 |
| PostgreSQL 11 | 3.2.5 |
| PostgreSQL 12 | 3.4.4 |
| PostgreSQL 13 | 3.5.2 |
| PostgreSQL 14 | 3.5.2 |
| PostgreSQL 15 | 3.5.2 |
| PostgreSQL 16 | 3.5.2 |
| PostgreSQL 17 | 3.5.2 |
| PostgreSQL 18 | 3.6.0 |
針對特定 PostgreSQL 主要版本,您可以在 CREATE EXTENSION 指令中使用 VERSION 子句,指定 PostGIS 擴充功能版本。
PostGIS 擴充功能包含下列項目:
postgispostgis_rasterpostgis_sfcgalpostgis_tiger_geocoderpostgis_topologyaddress_standardizeraddress_standardizer_data_us
詳情請參閱「PostGIS 安裝」。
此外,PostgreSQL 適用的 Cloud SQL 包含 3.6.2 版的 pgRouting 擴充功能,可擴充 PostGIS。pgRouting 擴充功能可透過網路轉送和分析,強化地理空間處理。
您可以手動將 PostGIS 和相關擴充功能升級至最新版本。如要進一步瞭解如何升級 PostGIS 擴充功能,請參閱「升級 PostGIS」。
資料類型擴充功能
| 擴充功能 | 說明 |
| btree_gin | 提供實作 B-tree 對等行為的範例 GIN 運算子類別。 PostgreSQL 9.6 使用 1.0 版。PostgreSQL 10 則使用 1.2 版。PostgreSQL 11 以上版本使用 1.3 版。 |
| btree_gist | 提供 GiST 索引運算子類別,可實作與 B-tree 相同的行為。 PostgreSQL 9.6 使用 1.2 版。PostgreSQL 10、11、12 和 13 使用 1.5 版。PostgreSQL 14 則使用 1.6 版。PostgreSQL 15、16 和 17 則使用 1.7 版。PostgreSQL 18 則使用 1.8 版。 |
| chkpass | 實作專為儲存加密密碼而設計的資料類型 chkpass。PostgreSQL 9.6 和 10 使用 1.0 版。其他版本不支援。 |
| citext | 提供不區分大小寫的字元字串類型 citext。PostgreSQL 9.6 使用 1.3 版。PostgreSQL 10 則使用 1.4 版。PostgreSQL 11 使用 1.5 版。PostgreSQL 12、13、14、15、16 和 17 使用 1.6 版。PostgreSQL 18 則使用 1.8 版。 |
| cube | 實作資料類型 cube,用於表示多維度立方體。PostgreSQL 9.6 和 10 使用 1.2 版。PostgreSQL 11 則使用 1.3 版。PostgreSQL 12 和 13 使用 1.4 版。PostgreSQL 14 以上版本則使用 1.5 版。 |
| hstore | 實作 hstore 資料類型,在單一 PostgreSQL 值中儲存多組鍵/值組合。PostgreSQL 9.6 和 10 使用 1.4 版。PostgreSQL 11 使用 1.5 版。PostgreSQL 12 則使用 1.6 版。PostgreSQL 13 使用 1.7 版。PostgreSQL 14 以上版本則使用 1.8 版。 |
| ip4r | 提供 IPv4/v6 位址和位址範圍的資料類型,以及索引支援。 PostgreSQL 適用的 Cloud SQL 使用 2.4.2 版。 |
| isn | 提供部分國際產品編號標準的資料類型。 PostgreSQL 9.6 和 10 使用 1.1 版。PostgreSQL 11、12、13、14、15、16 和 17 則使用 1.2 版。PostgreSQL 18 則使用 1.3 版。 |
| lo | 支援管理大型物件 (也稱為 LO 或 BLOB)。 PostgreSQL 適用的 Cloud SQL 使用 1.1 版。 |
| ltree | 實作資料類型 ltree,代表以階層式樹狀結構儲存的資料標籤。PostgreSQL 9.6、10、11 和 12 使用 1.1 版。PostgreSQL 13、14、15 和 16 使用 1.2 版。PostgreSQL 17 則使用 1.3 版。 |
| postgresql-hll | 推出新的資料類型 hll,這是 HyperLogLog 資料結構。另請參閱本文中的 postgresql-hll。PostgreSQL 適用的 Cloud SQL 使用 2.18 版。 |
| prefix | 提供前置字元比對和索引支援。 PostgreSQL 適用的 Cloud SQL 使用 1.2.0 版。 |
語言擴充功能
| 擴充功能 | 說明 |
| plpgsql | 可載入的程序語言,用於建立函式、程序和觸發條件。您也可以使用這種語言,直接在 DO 區塊中執行程式碼。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| plv8 | 提供程序語言,可啟用 JavaScript。 PostgreSQL 適用的 Cloud SQL 使用 3.2.2 版,而該版本使用 V8 JavaScript 引擎 11.5 版。 |
其他擴充功能
| 擴充功能 | 說明 |
| amcheck | 提供函式來驗證關係結構的邏輯一致性,讓 pg_amcheck 應用程式檢查是否有損毀。 |
| auto_explain | 啟用這項功能後,系統會自動記錄執行緩慢陳述式的執行計畫,以便進行疑難排解等作業。提供自動化方式,執行 EXPLAIN 指令的功能。另請參閱本文件中的 auto_explain。 |
| autoinc | 提供自動遞增欄位的功能。這個觸發條件會將序列的下一個值儲存到整數欄位。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| bloom | 提供方法,可根據布隆篩選器存取索引。布隆篩選器是一種節省空間的資料結構,可用來測試元素是否為集合的成員。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| dblink | 提供函式,可從資料庫工作階段連線至 PostgreSQL 資料庫。另請參閱本文中的
dblink。 PostgreSQL 適用的 Cloud SQL 使用 1.2 版。 |
| decoderbufs | PostgreSQL 邏輯解碼器,可將輸出資料做為通訊協定緩衝區提供,適用於 Debezium。 |
| dict_int | 全文搜尋的附加字典範本,可控制整數的索引。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| earthdistance | 提供兩種方法,用於計算地球表面的大圓距離。 PostgreSQL 9.6、10、11、12、13、14、15 和 16 使用 1.1 版。PostgreSQL 17 和 18 則使用 1.2 版。 |
| fuzzystrmatch | 提供多個函式,用於判斷字串之間的相似度和距離。 PostgreSQL 9.6、10、11、12、13、14 和 15 使用 1.1 版。PostgreSQL 16 以上版本使用 1.2 版 |
| google_ml_integration | 生成向量嵌入:使用大型語言模型 (LLM),將文字提示詞轉譯為數值向量。 PostgreSQL 12 以上版本使用 1.4.3 版。其他版本不支援。 |
| google_read_only_session | 如果工作階段期間,寫入權限因 cloudsql_session_read_only 旗標而暫時或永久受限,google_read_only_session 擴充功能會將下列項目加入許可清單:
|
| insert_username | 提供將目前使用者名稱儲存至文字欄位的功能。您可以使用這項功能,追蹤上次修改資料庫資料表中資料列的使用者。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| intagg | 提供整數匯集器與列舉程式。 PostgreSQL 適用的 Cloud SQL 使用 1.1 版。 |
| intarray | 提供一組函式和運算子,用於操控不含空值的整數陣列,並對這些陣列執行索引搜尋。 PostgreSQL 9.6、10、11 和 12 使用 1.2 版。PostgreSQL 13 則使用 1.3 版。PostgreSQL 14 以上版本則使用 1.5 版。 |
| moddatetime | 提供將目前時間儲存至 timestamp 欄位的函式。您可以使用這個欄位,追蹤資料庫資料表中資料列上次修改的時間。PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| oracle_fdw | 提供外部資料包裝函式 (fdw),可輕鬆有效率地存取 Oracle 資料庫。 PostgreSQL 適用的 Cloud SQL 使用 1.2 版。 如要透過 Private Service Connect 連線至 Cloud SQL 執行個體,則須啟用 Private Service Connect 傳出連線,才能使用這項擴充功能。 |
| orafce | 提供函式和運算子,可模擬 Oracle 資料庫的部分函式和套件。使用這些函式,將 Oracle 應用程式移植到 PostgreSQL。 PostgreSQL 9.6 和 10 使用 3.25 版。PostgreSQL 11 以上版本則使用 4.13 版。 |
| pageinspect | 在低層級檢查資料庫頁面的內容。另請參閱本文件中的 pageinspect。 PostgreSQL 9.6 使用 1.5 版。PostgreSQL 10 則使用 1.6 版。PostgreSQL 11 和 12 則使用 1.7 版。PostgreSQL 13 和 14 使用 1.8 版。PostgreSQL 15 則使用 1.11 版。PostgreSQL 16 和 17 則使用 1.12 版。PostgreSQL 18 則使用 1.13 版。 |
| pgAudit | 收集稽核資料。
所有 pgAudit 版本的稽核記錄檔可設定的值包括 如要進一步瞭解如何搭配 Cloud SQL 使用這項擴充功能,請參閱「 使用 pgAudit 稽核 PostgreSQL」。 |
| pg_background | 可讓您在背景 worker 中執行任意指令。 PostgreSQL 17 和更早版本使用 1.3 版。 PostgreSQL 18 則使用 1.4 版。 |
| pg_bigm | 啟用全文搜尋,並允許使用雙字母 (bigram) 索引,加快全文搜尋速度。另請參閱本文件中的 pg_bigm。 |
| pg_buffercache | 提供一種方法,可即時檢查共用緩衝區快取中發生的情況。 PostgreSQL 9.6 使用 1.2 版。PostgreSQL 10、11、12、13、14 和 15 使用 1.3 版。PostgreSQL 16 則使用 1.4 版。PostgreSQL 17 以上版本則使用 1.5 版。 |
| pg_cron | 提供以 Cron 為基礎的工作排程器。這項擴充功能可讓您使用 cron 語法,直接從資料庫排定 PostgreSQL 指令。如要進一步瞭解這項擴充功能,請參閱本文中的 pg_cron。 PostgreSQL 10 以上版本使用 1.6.4 版。 |
| pgcrypto | 提供 PostgreSQL 的密碼編譯函式。 PostgreSQL 適用的 Cloud SQL 使用 1.3 版。 |
| pglogical | 提供 PostgreSQL 的邏輯複製功能。請參閱「
設定邏輯複製和解碼」。 PostgreSQL 17 以下版本使用 2.4.5 版。 PostgreSQL 18 則使用 2.4.6 版。 |
| pgfincore | 一組函式,用於管理 PostgreSQL 作業系統磁碟快取記憶體中的頁面。另請參閱本文件中的 pgfincore。 PostgreSQL 適用的 Cloud SQL 使用 1.4 版。 |
| pg_freespacemap | 檢查可用空間對應表 (FSM)。
另請參閱本文件中的 pg_freespacemap。 PostgreSQL 17 以下版本使用 1.2 版。 PostgreSQL 18 則使用 1.3 版。 |
| pg_hint_plan | 可讓您使用提示 (SQL 註解中的簡單說明) 改善 PostgreSQL 執行計畫。另請參閱本文件中的 pg_hint_plan。 |
| pgoutput | 邏輯複製功能會使用這個外掛程式,擷取變更資料。
pgoutput 是預設外掛程式,因此所有 PostgreSQL 適用的 Cloud SQL 版本都支援。 |
| pg_ivm | 可讓您將 materialized view 更新至最新狀態,系統只會計算並套用檢視表的增量變更,而非從頭重新計算內容。 PostgreSQL 13 以上版本支援 1.9 版。 |
| pg_partman | 協助您建立及管理以時間和序號為基礎的資料表分區集。另請參閱本文件中的 pg_partman。 PostgreSQL 14 以上版本支援 5.4.3 版,而 14 之前的 PostgreSQL 版本僅支援 4.7.4 版。 |
| pg_prewarm | 提供便利的方式,將關聯資料載入作業系統緩衝區快取或 PostgreSQL 緩衝區快取。 PostgreSQL 9.6 和 10 使用 1.1 版。PostgreSQL 11 以上版本則使用 1.2 版。 |
| pg_qualstats | 收集述詞的統計資料,協助您找出缺少的索引。 PostgreSQL 適用的 Cloud SQL 使用 2.1.2 版。 |
| plpgsql_check | PL/pgSQL 的靜態分析 Linter 工具,PL/pgSQL 是 PostgreSQL 的原生預存程序語言。 PostgreSQL 適用的 Cloud SQL 使用 2.8 版。 這項擴充功能適用於 PostgreSQL 14 以上版本。 |
| pg_proctab | 可讓您搭配使用 pg_top 與 PostgreSQL 適用的 Cloud SQL,並從作業系統程序資料表產生報表。另請參閱本文件中的 pg_proctab。 |
| pg_repack | 可讓您從資料表和索引中移除膨脹。可讓您執行線上 CLUSTER (依叢集索引排序資料表)。另請參閱本文中的 pg_repack。 PostgreSQL 適用的 Cloud SQL 使用 1.5.2 版。 |
| pg_roaringbitmap | pg_roaringbitmap 擴充功能會導入 Roaring Bitmap 資料類型,可針對大型整數集合,提供高效率的儲存空間和快速的集合運算。這項技術會根據整數的密度,以壓縮形式 (陣列、點陣圖或執行容器) 動態儲存整數,大幅減少儲存空間占用量,並加快聯集、交集和基數計算等常見作業。適用於 PostgreSQL 12 以上版本。 PostgreSQL 適用的 Cloud SQL 使用 0.5 版的 pg_roaringbitmap。 |
| pgrowlocks | 提供指定表格的列鎖定資訊。 PostgreSQL 適用的 Cloud SQL 使用 1.2 版。 |
| pgstattuple | 提供多種函式,可取得元組層級統計資料。 PostgreSQL 9.6 使用 1.4 版。所有其他版本均使用 1.5 版。 |
| pg_similarity | 支援 PostgreSQL 的相似度查詢。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| pg_squeeze | 從資料表中移除未使用的空間,並視需要使用索引來排序資料表的記錄或資料列 (元組)。如要進一步瞭解這項擴充功能,請參閱本文中的 pg_squeeze。 PostgreSQL 11 使用 1.5 版的擴充功能。 PostgreSQL 12、13、14、15、16 和 17 使用 1.8 版的擴充功能。 PostgreSQL 18 使用 1.9 版的擴充功能。 |
| pg_textsearch | 提供全文搜尋功能,並採用業界標準的 BM25 (Best Matching 25) 評分演算法,提供高度準確的關聯性評分。如要進一步瞭解這項擴充功能,請參閱「使用 pg_textsearch 進行全文搜尋」一文。須使用 PostgreSQL 17 以上版本。 |
| pg_stat_statements | 提供追蹤所有已執行 SQL 陳述式執行統計資料的方法。 PostgreSQL 9.6 使用 1.4 版。PostgreSQL 10 和 11 則使用 1.6 版。PostgreSQL 12 則使用 1.7。PostgreSQL 13 則使用 1.8。PostgreSQL 14 則使用 1.9。PostgreSQL 15 和 16 則使用 1.10。PostgreSQL 17 則使用 1.11。PostgreSQL 18 則使用 1.12。 |
| pgTAP | 提供 PostgreSQL 的單元測試架構,以 PL/pgSQL 和 PL/SQL 編寫。 PostgreSQL 適用的 Cloud SQL 使用 1.3.0 版。 |
| pg_trgm | 提供函式和運算子,可根據三元組比對判斷英數字元文字的相似度,以及支援快速搜尋相似字串的索引運算子類別。 PostgreSQL 9.6 和 10 使用 1.3 版。PostgreSQL 11 和 12 則使用 1.4 版。PostgreSQL 13 則使用 1.5。PostgreSQL 14 以上版本則使用 1.6 版。 |
| pgtt | 在 PostgreSQL 資料庫中建立及管理 DB2 或 Oracle 樣式的全域暫存資料表。 |
| pgvector |
開放原始碼擴充功能,可在 PostgreSQL 資料庫中儲存及搜尋向量嵌入。 |
| pg_visibility | 提供一種方法,可檢查資料表的瀏覽權限對應 (VM) 和頁面層級瀏覽權限資訊。另請參閱本文件中的 pg_visibility。 PostgreSQL 適用的 Cloud SQL 使用 1.2 版。 |
| pg_wait_sampling | 收集等待事件的取樣統計資料,提供伺服器上程序的等待事件資料。PostgreSQL 適用的 Cloud SQL 使用 1.1.5 版。 |
| PL/Proxy | 程序語言處理常式,可在 PostgreSQL 資料庫之間執行遠端程序呼叫,並可選擇是否要進行資料分割。另請參閱本文件中的「PL/Proxy」一節。 PostgreSQL 適用的 Cloud SQL 使用 2.11.0 版。 |
| postgres_fdw | 允許在執行個體內或跨執行個體建立外部資料包裝函式。另請參閱本文件中的 postgres_fdw。 PostgreSQL 9.6、10、11、12 和 13 使用 1.0 版。 PostgreSQL 14 以上版本則使用 1.1 版。 |
| postgresql_anonymizer | 遮蓋或取代 PostgreSQL 資料庫中的個人識別資訊 (PII) 或機密資料。詳情請參閱 postgresql_anonymizer 一節。 PostgreSQL 適用的 Cloud SQL 使用 1.0.0 版。 |
| postgresql_hll | 提供 HyperLogLog ( PostgreSQL 適用的 Cloud SQL 使用 2.18 版。 |
| rdkit | 化學資訊學和機器學習軟體集合。您可以使用這項擴充功能比較、操控及識別分子結構。 PostgreSQL 適用的 Cloud SQL 使用 4.6.1 版。 |
| refint | 包含檢查外鍵限制、參照資料表和參照資料表的函式。這項擴充功能也示範了 伺服器程式設計介面 (SPI)。PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| sslinfo | 提供目前用戶端連線至執行個體時,所提供的 SSL 憑證相關資訊。 PostgreSQL 適用的 Cloud SQL 使用 1.2 版。 |
| tablefunc | 包含傳回表格 (多列) 的各種函式。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| tcn | 提供觸發函式,在資料庫資料表內容變更時通知監聽器。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| tds_fdw | 提供外部資料包裝函式 (fdw),用於存取使用表格型資料串流 (TDS) 通訊協定的資料庫,例如 Microsoft SQL Server 和 Sybase。PostgreSQL 適用的 Cloud SQL 使用 2.0.4 版。Postgres 用戶端可使用 SSL 加密連線至 SQL Server 來源。不過,系統不會強制執行伺服器憑證驗證。 |
| temporal_tables | 支援時態資料表。時態資料表會記錄資料列在資料庫中的有效時間。 PostgreSQL 適用的 Cloud SQL 使用 1.2.2 版。 |
| tsm_system_rows | 提供資料表取樣方法 SYSTEM_ROWS,可用於 SELECT 指令的 TABLESAMPLE 子句。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| tsm_system_time | 提供資料表取樣方法 SYSTEM_TIME,可用於 SELECT 指令的 TABLESAMPLE 子句。 PostgreSQL 適用的 Cloud SQL 使用 1.0 版。 |
| unaccent | 文字搜尋字典,可從詞素中移除重音符號 (變音符號)。 PostgreSQL 適用的 Cloud SQL 使用 1.1 版。 |
| uuid-ossp | 提供函式,可使用多種標準演算法之一產生通用專屬 ID (UUID)。 PostgreSQL 適用的 Cloud SQL 使用 1.1 版。 |
進一步瞭解部分 PostgreSQL 擴充功能
本節將進一步說明上表支援的部分 PostgreSQL 擴充功能。
auto_explain
如要在執行個體上使用這項擴充功能,請將 cloudsql.enable_auto_explain 旗標設為 on。如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
如要查看與這項擴充功能啟用的執行計畫記錄相關聯的記錄資料和事件,請參閱 Cloud Logging 說明文件。
或者,如果使用者 (僅) 具有 cloudsqlsuperuser 角色,您可以使用 load 指令,在一個工作階段中載入這項擴充功能。
dblink
在資料庫工作階段中,您可以使用這項擴充功能連線至 PostgreSQL 資料庫並執行查詢。
這項擴充功能目前適用於同一個虛擬私有雲網路中的兩個 Cloud SQL 私人 IP 執行個體,或同一個執行個體中的跨資料庫。
詳情請參閱 PostgreSQL 說明文件中的 dblink。
使用 dblink 搭配密碼連線
如要連線至資料庫,或連線至與其他使用者相同的執行個體,您必須指定密碼。以下程式碼片段僅供參考 (請勿用於正式環境):
SELECT * FROM dblink (
'dbname=name port=1234 host=host user=user password=password',
'select id, name from table' \
) AS t(id int, name text);
或者,如果只想設定連線,請參考以下程式碼片段 (僅供參考,請勿用於實際工作環境):
SELECT dblink_connect('dbname=dblinktest user=postgres host=name_or_ip password=xxx');
使用 dblink 連線,不需密碼
如要以相同使用者身分連線至相同執行個體,可以不使用密碼連線。例如:
設定下列資料庫旗標,即可啟用本機連線,不需密碼
cloudsql.allow_passwordless_local_connections連線時不指定主機,這表示連線至同一個執行個體。範例如下:
SELECT * FROM dblink('dbname=finance user=alice', 'select income from revenue') AS revenue(income integer);結果大致如下:
income -------- 1000 (1 row)
如要連線至同一執行個體中的資料庫,主機不得設為 localhost 或 127.0.0.1。請改用 Google Cloud 控制台中顯示的執行個體 IP 位址。
另請參閱本文件中的 postgres_fdw 和 PL/Proxy。
pageinspect
這個擴充功能會檢查資料庫頁面的低層級內容。 詳情請參閱 PostgreSQL 說明文件中的 pageinspect。
pg_bigm
這項擴充功能可啟用全文搜尋,並允許使用雙字母 (bigram) 索引,加快全文搜尋速度。
如要在執行個體上使用這項擴充功能,請將 cloudsql.enable_pg_bigm 旗標設為 on。系統也支援下列旗標:
pg_bigm.enable_recheckpg_bigm.gin_key_limitpg_bigm.similarity_limit
如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
pg_cron
如要開始在執行個體上使用 pg_cron,請將 cloudsql.enable_pg_cron 旗標設為 on。如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
工作會設為背景工作站,因此您可能需要使用標準 PostgreSQL 技術 (例如 max_worker_processes 旗標) 調整這些背景工作站的數量。
Cloud SQL 支援這項擴充功能的背景工作站模式,但不支援 libpq 介面。因此,不需要直接涉及這項擴充功能的信任驗證。
pgfincore
這項擴充功能包含多項函式,可從 PostgreSQL 管理作業系統磁碟快取記憶體中的頁面。詳情請參閱 pgfincore 說明文件。
pg_freespacemap
這項擴充功能會檢查可用空間對應表 (FSM)。詳情請參閱 PostgreSQL 說明文件中的 pg_freespacemap。
pg_hint_plan
如要在執行個體上使用這項擴充功能,請將 cloudsql.enable_pg_hint_plan 旗標設為 on。如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
或者,如果只有具備 cloudsqlsuperuser 角色的使用者,您可以使用 load 指令,為一個工作階段載入這項擴充功能。
pg_partman
這項擴充功能可協助您建立及管理以時間和序列為基礎的資料表分區集。
在 Cloud SQL 中,這項擴充功能不包含用於自動維護分區的背景工作站 (pg_partman_bgw)。您可以改用 pg_cron,或搭配 Cloud Run functions 使用 Cloud Scheduler,定期呼叫pg_partman維護函式或程序來執行維護作業。
舉例來說,如要使用 pg_cron 排定分區維護作業,請按照下列步驟操作:
- 將
cloudsql.enable_pg_cron旗標設為on,在執行個體上啟用pg_cron。根據預設,pg_cron會在postgres資料庫中執行。如要使用其他資料庫,請將cron.database_name旗標設為該資料庫的名稱。詳情請參閱「設定資料庫旗標」。 連線至資料庫,並建立
pg_partman和pg_cron擴充功能:CREATE SCHEMA IF NOT EXISTS partman; CREATE EXTENSION pg_partman SCHEMA partman; CREATE EXTENSION pg_cron;使用
pg_partman設定分區資料表後,請排定pg_cron工作,定期執行分區維護作業 (例如每小時一次):SELECT cron.schedule('@hourly', $$CALL partman.run_maintenance_proc()$$);
pg_proctab
以下是使用 pg_proctab 擴充功能啟用 pg_top 公用程式的步驟:
- 在 psql 工具中,執行 pg_proctab 的 CREATE EXTENSION 指令。
- 下載並執行 pg_top。
- 連線至 PostgreSQL 適用的 Cloud SQL 執行個體時,請新增
-r選項,連線至遠端資料庫以取得指標。
輸出內容包含下列執行個體層級指標,包括執行個體中其他支援代理和服務的使用量:
- 平均負載
- CPU 狀態 (% 使用者、nice、系統、閒置和 iowait)
- 記憶體 (已使用、可用和快取)
pg_repack
這項擴充功能可讓您移除資料表和索引中的膨脹資料。您也可以視需要使用這項擴充功能,執行線上 CLUSTER (依叢集索引排序資料表)。詳情請參閱 pg_repack 說明文件。此外,如要在 Cloud SQL 中使用這項擴充功能,必須採取特殊程序,才能為使用者新增權限。
如果 cloudsqlsuperuser 角色以外的使用者想使用擴充功能,您必須授予該使用者 cloudsqlsuperuser 權限。詳情請參閱本文「超級使用者權限規定」一節。下列範例使用 GRANT 指令新增必要權限。
新增權限範例
在以下範例中,csuper1 是 cloudsqlsuperuser,testdb 則是 testuser 擁有的資料庫。如要在 testdb 中建立 pg_repack 擴充功能,請先執行下列指令:
以
cloudsqlsuperuser身分連線至testdb:psql -U csuper1 -d testdb;將資料庫擁有者 (
testuser,) 授予csuper1:GRANT testuser TO csuper1;建立擴充功能:
CREATE EXTENSION pg_repack;在資料表上執行
pg_repack指令,例如testdb中的t1,如csuper1:pg_repack -h <hostname> -d testdb -U csuper1 -k -t t1pg_repack 工作完成後,請撤銷您在步驟 2 授予的權限:
REVOKE testuser FROM csuper1;
pg_repack 指令可能會失敗,並顯示下列錯誤:
"ERROR: query failed: SSL SYSCALL error: EOF detected"
如果發生這項錯誤,請嘗試將 TCP 保持運作設定為較小的值,然後執行 pg_repack 指令。詳情請參閱「連線逾時 (來自 Compute Engine)」。
pg_squeeze
這項擴充功能會移除資料表中未使用的空間,並可選擇使用索引來排序資料表的元組。如要在執行個體上使用擴充功能,請將 cloudsql.enable_pg_squeeze 旗標設為 on。
這項擴充功能也支援邏輯解碼,方法是將額外資訊寫入預寫記錄檔 (WAL)。如要為擴充功能啟用這項功能,請將 cloudsql.logical_decoding 旗標設為 on,將 wal_level 設定參數設為 logical 以上。
擴充功能需要為 max_replication_slots 旗標設定值。如未指定這個旗標的值,請將值設為 1。否則,請將旗標設定的值加 1。
如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
pg_textsearch
pg_textsearch 擴充功能使用業界標準的 BM25 (Best Matching 25) 評分演算法,提供全文搜尋功能,可提供高度準確的關聯性評分。這項擴充功能是 GitHub 上的開放原始碼專案。
pg_textsearch 擴充功能需要 PostgreSQL 17 以上版本。
pg_textsearch 擴充功能支援逆向文件頻率 (td-idf)、詞彙頻率飽和度和文件長度正規化,因此可產生比 PostgreSQL 內建 ts_rank 函式更相關的結果。此外,由於這項功能直接在標準 PostgreSQL 儲存頁面上運作,因此您不必安裝 Elasticsearch 等第三方引擎,也不必擔心雙叢集維護和資料同步問題。使用 pg_textsearch,您就能建構強大、可擴充且高度相關的搜尋體驗,不必離開 PostgreSQL 生態系統。
詳情請參閱「使用 pg_textsearch 進行全文搜尋」。
pgtt
如要在執行個體上使用這項擴充功能,請將 pgtt.enabled 旗標設為 on。如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
pg_visibility
這項擴充功能可讓您檢查資料表的瀏覽權限對應 (VM) 和頁面層級瀏覽權限資訊。詳情請參閱 PostgreSQL 說明文件中的 pg_visibility。
PL/Proxy
這項擴充功能是程序語言處理常式,可讓 PostgreSQL 資料庫之間進行遠端程序呼叫,並可選擇是否要進行資料分割。
詳情請參閱 PL/Proxy 說明文件。
連線的目標執行個體必須與連線執行個體位於相同的虛擬私有雲網路。此外,您無法在Google Cloud 控制台中,為叢集執行個體選擇「Allow only SSL connections」(僅允許 SSL 連線) 按鈕。
如要連線至同一執行個體中的資料庫,主機不得設為 localhost 或 127.0.0.1。請改用 Google Cloud 控制台中顯示的執行個體 IP 位址。
另請參閱本文中的 postgres_fdw 和 dblink。
postgresql_anonymizer
如要在執行個體上使用這項擴充功能,請將 cloudsql.enable_anon 旗標設為 on。如要瞭解如何設定旗標,以及查看這項擴充功能支援的旗標,請參閱「設定資料庫旗標」。
postgres_fdw
這項擴充功能可讓其他 (「外部」) PostgreSQL 資料庫中的資料表,在目前資料庫中公開為「外部」資料表。這些資料表隨即可供使用,幾乎就像本機資料表一樣。詳情請參閱 PostgreSQL 說明文件中的 postgres_fdw。
這項擴充功能適用於同一虛擬私有雲網路中的兩個 Cloud SQL 私人 IP 執行個體,或同一執行個體中的跨資料庫。
如要連線至同一執行個體中的資料庫,請勿將主機設為 localhost 或 127.0.0.1。請改用 Google Cloud 控制台中顯示的執行個體 IP 位址。
此外,如果執行個體儲存了外部資料,您可以在 Google Cloud 控制台中選擇「Allow only SSL connections」(僅允許 SSL 連線) 選項。您無法選擇「Require trusted client certificates」選項。只有 cloudsqlsuperuser 可以是 postgres_fdw 外部資料包裝函式的擁有者。
postgresql-hll
這項擴充功能會導入新的資料類型 hll,也就是 HyperLogLog 資料結構。詳情請參閱 postgresql-hll 說明文件。