久久av免费看/97国产精品一区二区/911成人网/精品免费久久久 - 偷窥自拍亚洲

當前位置: fuhua-pet->培訓 > PostgreSQL技術大講堂 - 第26講:PG-FDW部署

PostgreSQL技術大講堂 - 第26講:PG-FDW部署

2023-08-30作者:fuhua-pet來源:www.taishanhotelbeijing.com

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色權限、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。


第26講:PG-FDW部署


內容1 : Foreign Data Wrappers(FDW)簡介與特性

內容2 : Postgres_FDW部署

內容3 : FDW執行原理

內容4 : 本地外部表操作


Foreign Data Wrappers

Foreign Data Wrappers (FDW)




FDW部署

部署FDW(在客戶端部署)

1、編譯postgres_fdw

cd /soft/postgresql-12.2/contrib/postgres_fdw

make

make install

2、安裝postgres_fdw (哪個database上使用,就在哪個database上安裝)

create extension postgres_fdw;

3、創建fdw服務器

CREATE SERVER pgdb FOREIGN DATA WRAPPER postgres_fdw

OPTIONS (host 'pg2',port '1922',dbname 'testdb');

Host:遠程主機名、ip地址

Port:遠程數據庫監聽端口

Dbname:遠程服務器名字

4、授權

GRANT USAGE ON FOREIGN SERVER pgdb TO pg_fdw1;

5、創建用戶映射(本地用戶與遠程用戶映射)

CREATE USER MAPPING FOR pg_fdw1 SERVER pgdb

OPTIONS (user 'scott', password 'tiger');

user:遠程數據庫用戶

password:用戶密碼

6、創建FDW表(以pg_fdw1用戶創建)

GRANT USAGE ON FOREIGN SERVER pgdb TO scott_pg;

6、創建FDW表(以pg_fdw1用戶創建)

CREATE FOREIGN TABLE emp_fdw (

EMPNO int ,

ENAME VARCHAR(10),

JOB VARCHAR(9),

MGR int,

HIREDATE date,

SAL float4,

COMM float4,

DEPTNO int

) SERVER pgdb OPTIONS (schema_name 'public', table_name 'emp');

Schema_name:public,特定schema用戶創建的表,則寫該schema名字

Table_name:需要訪問的表表名

7、創建FDW表(以pg_fdw1用戶創建)

CREATE FOREIGN TABLE dept_fdw (

deptno integer,

dname character varying(14),

loc character varying(13)

)SERVER pgdb OPTIONS (schema_name ‘public', table_name 'dept');;

Schema_name:public,特定schema用戶創建的表,則寫該schema名字

Table_name:需要訪問的表表名

8、訪問FDW表(以pg_fdw1用戶訪問)

SELECT * FROM emp_fdw;

SELECT * FROM dept_fdw;

*訪問FDW表的語法與訪問本地表一樣。


FDW原理

FDW執行流程

FDW執行流程

1、Creating a Query Tree(訪問pg_catalog.pg_class和pg_catalog.pg_foreign_table)

2、Connecting to the Remote Server(使用libpq庫)

3、Creating a Plan Tree Using EXPLAIN Commands (Optional)(訪問pg_catalog.pg_user_mapping和pg_catalog.pg_foreign_server)

4、Deparesing(postgres_fdw從通過解析和分析創建的查詢樹中重新創建一個純文本文件,在PostgreSQL中稱為deparsing。)

5、Sending SQL Statements and Receiving Result

FDW執行流程(PG-PG)

在遠程服務器端打開日志,可以查看到訪問流程:

log_destination = 'csvlog'

logging_collector = on

log_directory = 'pg_log

log_filename = 'postgresql-%Y-%m-%d'

log_truncate_on_rotation = off

log_rotation_age = 1d

log_rotation_size = 0

log_error_verbosity = verbose

log_statement = all


各個版本功能演進

執行DML操作(PG-PG支持DML操作,其它不支持)

PostgreSQL_FDW不會檢測死鎖

localdb=# -- Client A

localdb=# BEGIN;

BEGIN

localdb=# UPDATE tbl_local SET data = 0 WHERE id = 1;

UPDATE 1

localdb=# UPDATE tbl_remote SET data = 0 WHERE id = 1;

UPDATE 1


localdb=# -- Client B

localdb=# BEGIN;

BEGIN

localdb=# UPDATE tbl_remote SET data = 0 WHERE id = 1;

UPDATE 1

localdb=# UPDATE tbl_local SET data = 0 WHERE id = 1;

UPDATE 1

多表查詢

Version 9.6以前版本

localdb=# EXPLAIN SELECT * FROM tbl_a AS a, tbl_b AS b WHERE a.id = b.id AND a.id < 200;

QUERY PLAN

------------------------------------------------------------------------------

Merge Join (cost=532.31..700.34 rows=10918 width=16)

Merge Cond: (a.id = b.id)

-> Sort (cost=200.59..202.72 rows=853 width=8)

Sort Key: a.id

-> Foreign Scan on tbl_a a (cost=100.00..159.06 rows=853 width=8)

-> Sort (cost=331.72..338.12 rows=2560 width=8)

Sort Key: b.id

-> Foreign Scan on tbl_b b (cost=100.00..186.80 rows=2560 width=8)

(8 rows)

多表查詢

(PG-PG)如果使用ALTER SERVER命令將use_remote_estimate選項設置為on,則計劃器將通過執行EXPLAIN命令向遠程服務器查詢計劃的成本,此時連接操作在遠程進行,提高性能。

ALTER SERVER pgdb OPTIONS (use_remote_estimate 'on');

\des+

localdb=# EXPLAIN SELECT * FROM tbl_a AS a, tbl_b AS b WHERE a.id = b.id AND a.id < 200;

QUERY PLAN

-----------------------------------------------------------

Foreign Scan (cost=134.35..244.45 rows=80 width=16)

Relations: (public.tbl_a a) INNER JOIN (public.tbl_b b)

(2 rows)

排序操作

在9.5或更早版本中:

localdb=# EXPLAIN SELECT * FROM tbl_a AS a WHERE a.id < 200 ORDER BY a.id;

QUERY PLAN

-----------------------------------------------------------------------

Sort (cost=200.59..202.72 rows=853 width=8)

Sort Key: id

-> Foreign Scan on tbl_a a (cost=100.00..159.06 rows=853 width=8)

(3 rows)

排序操作

在9.6或以后版本中:

localdb=# EXPLAIN SELECT * FROM tbl_a AS a WHERE a.id < 200 ORDER BY a.id;

QUERY PLAN

-----------------------------------------------------------------

Foreign Scan on tbl_a a (cost=100.00..167.46 rows=853 width=8)

(1 row)

聚組函數操作

在9.6或更早版本中:

localdb=# EXPLAIN SELECT AVG(data) FROM tbl_a AS a WHERE a.id < 200;

QUERY PLAN

-----------------------------------------------------------------------

Aggregate (cost=168.50..168.51 rows=1 width=4)

-> Foreign Scan on tbl_a a (cost=100.00..166.06 rows=975 width=4)

(2 rows)

聚組函數操作

在10或以后版本中:

localdb=# EXPLAIN SELECT AVG(data) FROM tbl_a AS a WHERE a.id < 200;

QUERY PLAN

-----------------------------------------------------

Foreign Scan (cost=102.44..149.03 rows=1 width=32)

Relations: Aggregate on (public.tbl_a a)

(2 rows)


本地外部表

本地外部表

1、--添加擴展

CREATE EXTENSION file_fdw;

2、--創建SERVER FOR file

create server pg_file_server foreign data wrapper file_fdw;

3、--創建外部表,與外部文件結構一致

create foreign table emp_file_fdw

(EMPNO int,

ENAME varchar(10),

JOB varchar(9),

MGR int,

HIREDATE DATE,

SAL int,

COMM int,

DEPTNO int)

server pg_file_server

options(filename '/home/postgres/emp.csv',format 'csv',header 'true',delimiter ',');

以上就是【PostgreSQL從小白到專家】第26講 - PG-FDW部署  的內容,歡迎一起探討交流釘釘交流群:35,82,24,60,往期視頻及文檔內容聯系CUUG

  • PostgreSQL 17.5、16.9、15.13、14.18 和 13.21 發布!
  • PostgreSQL 18 測試版Beta 1 發布,新功能新特性!
  • PostgreSQL技術大講堂 - 第89講:重講數據庫完全恢復
  • PostgreSQL技術大講堂 - 第90講:重講數據庫不完全恢復
  • PostgreSQL證書有效期是幾年
  • 學PostgreSQL技術,考工信部人才交流中心PG認證證書
  • OCM考試多少分及格?看看CUUG 張同學Oracle 19c OCM成績單
  • OCP認證指南:學什么內容、考什么內容
  • 2025年5月30日證書,恭喜CUUG張同學通過OCM19c認證
  • CUUG入選2025年首批IITC工信人才崗位能力評價業務信息技術應用創新領域合作機構
  • PostgreSQL技術大講堂 - 第92講:重講流復制原理
  • 河北建筑工程學院與北京優技教育(CUUG)達成產教整合校企合作
  • 推薦哪一家PostgreSQL認證?來看看工信部直屬人才交流中心的PG認證
  • 信創PostgreSQL培訓考試認證中心 -- 工信部人才交流中心唯一指定
  • 6月6日證書 - 工信部人才交流中心PostgreSQL中級PGCP高級PGCM認證
  • PostgreSQL從入門到精通教程- 第93講:重講pg流復制安裝部署
  • PostgreSQL認證怎么選?PGCP中級認證PGCM高級認證
  • PostgreSQL數據庫培訓+認證+考試 - 工業和信息化部人才交流中心
  • 【開源PostgreSQL】PG認證考試費用
  • PostgreSQL技術大講堂 - 第94講:重講PG流復制管理利器repmgr應用實踐
  • PostgreSQL技術大講堂 - 第95講:postgreSQL 鎖沖突處理
  • PostgreSQL認證:PGCP中級認證發證機關、PG培訓內容及考試維度
  • PostgreSQL認證考試中心 》》工信部人才交流中心
  • 難者不會,會者不難!Oracle OCP認證考試難度分析
  • 騰訊云認證,2025年最新報名和考試指引
  • 騰訊云認證:“職業認證”與“專項認證”
  • 騰訊云認證考試報名 - TDSQL數據庫交付運維專家(TCCE MySQL版)
  • 騰訊云認證考試報名 - TDSQL數據庫交付運維專家(TCCE PostgreSQL版)
  • 新形式、新要求!2025年全新改版的騰訊云tdsql認證考試指南
  • 準備考OCP中級認證,需要不需要先考初級OCA?
  • Apache HBase數據庫
  • IBM Informix數據庫
  • MySQL 8.0 OCP認證考試題庫持續更新
  • 2025年5月安同學PostgreSQL PGCP中級認證證書
  • 2025年5月陳同學PostgreSQL PGCP中級認證證書
  • 2025年5月份工信部人才交流中心PostgreSQL認證證書
  • 2025年5月胡同學PostgreSQL PGCP中級認證證書
  • 2025年5月李同學PostgreSQL PGCM高級認證證書
  • 2025年5月李同學PostgreSQL PGCP中級認證證書
  • 2025年5月王同學PostgreSQL PGCP中級認證證書
  • 2025年5月趙同學PostgreSQL PGCM高級認證證書
  • PostgreSQL技術大講堂 - 第91講:重講表空間恢復
  • PostgreSQL認證培訓考試中心,及證書查詢網址
  • PostgreSQL相比Oracle有哪些優勢
  • 高校信創數據庫人才培養創新與變革暨天職師大數據庫教學平臺國產化替代院長峰會
  • 六六大順!2025年6月6日李同學OCP 19c認證證書
  • 騰訊云TCCA認證考試報名 - TDSQL數據庫交付運維工程師(MySQL版)
  • 騰訊云TCCA認證考試報名 - TDSQL數據庫交付運維工程師(PostgreSQL版)
  • 騰訊云TCCP認證考試報名 - TDSQL數據庫交付運維高級工程師(MySQL版)
  • 騰訊云TCCP認證考試報名 - TDSQL數據庫交付運維高級工程師(PostgreSQL版)