真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

POSTGRESQL如何訪問同instance的庫(kù)

這篇文章主要介紹POSTGRESQL如何訪問同instance的庫(kù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)成立10年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、申請(qǐng)域名、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。


其實(shí)說到這個(gè)問題,有些同學(xué)會(huì)有疑問,訪問同instance 的有那么難嗎? 估計(jì)用過SQL SERVER ,MySQL的同學(xué)會(huì)提出這樣的疑問, 而ORACLE的同學(xué)則會(huì)提出什么同一個(gè)instance 多個(gè)庫(kù), really ? 

實(shí)際上SQL SERVER 本身是多個(gè)數(shù)據(jù)庫(kù)和schema 并存的數(shù)據(jù)庫(kù), POSTGRESQL 也是. 這時(shí)估計(jì)SQL SERVER 的同學(xué)會(huì)嘴角上揚(yáng),我們的功能是最全的,哪有訪問同一個(gè)INSTANCE 的多個(gè)數(shù)據(jù)庫(kù)還這么麻煩.

其實(shí)我到是有不同的意見,原因如下

同一個(gè)數(shù)據(jù)庫(kù)的INSTANCE 下多個(gè)數(shù)據(jù)庫(kù)可以無(wú)障礙的訪問,本身是弊大于利還是利大于弊,這不好說, 尤其現(xiàn)在開發(fā)中使用MYSQL時(shí),都已經(jīng)分庫(kù)分表了,同一個(gè)INSTANCE 下多個(gè)數(shù)據(jù)庫(kù)能互訪的方便,當(dāng)然不是壞事,但你見過一個(gè)INSTANCE 下掛了N 個(gè)數(shù)據(jù)庫(kù),然后庫(kù)和庫(kù)互相夸庫(kù)查詢, 等到拆庫(kù)的時(shí)候有多麻煩, 另外從現(xiàn)在軟件開發(fā)的角度來(lái)說,如果還算是一個(gè)項(xiàng)目的話, 這樣的跨庫(kù)訪問的方式應(yīng)該被減少,甚至是禁止.

當(dāng)然不是還有那么多不是項(xiàng)目的項(xiàng)目,PG 也是可以進(jìn)行跨庫(kù)訪問,常用的2中方式

1  dblink

2  postgres_fdw  

以下操作基于PG 11版本及以上

1 dblink

dblink 熟悉這個(gè)名詞是ORACLE SQL SERVER 的同學(xué),一般都是訪問另一個(gè)物理庫(kù)的數(shù)據(jù)表, POSTGRESQL 可以通過這樣方式,訪問本實(shí)例中的另外的數(shù)據(jù)庫(kù)或遠(yuǎn)程的數(shù)據(jù)庫(kù).

1  建立一個(gè)連接

select dblink_connect('test','host=192.168.198.100 port=5432 user=test password=test dbname=test');

POSTGRESQL如何訪問同instance的庫(kù)

2  直接進(jìn)行查詢

select * from dblink('test','select * from actor limit 10') as t ( actor_id int,first_name varchar(45),last_name varchar(45), last_update timestamp);

POSTGRESQL如何訪問同instance的庫(kù)

3  增加條件怎么辦,是寫在里面還是寫在外面

select * from dblink('test','select * from actor limit 10') as t ( actor_id int,first_name varchar(45),last_name varchar(45), last_update timestamp) where first_name = 'Penelope';

POSTGRESQL如何訪問同instance的庫(kù)

上面的例子是寫在外面, 但是有條件的,應(yīng)該是本地庫(kù)的跨庫(kù)查詢

那為什么不寫到里面, 其實(shí)涉及到轉(zhuǎn)移符的問題,撰寫起來(lái)比較麻煩,所以寫到了外面.

大部分文章到底就為止了,實(shí)際上這就完了,怎么查詢我都有多少了dblink

怎么清理dblink ,即使 G 類似的知識(shí)也沒找到說的明白的.

實(shí)際上DBLINK是一套功能集合,下面的看看常用的 DBLINK的功能有哪些

問題

1  建立dblink , 是通過 dblink_connect 來(lái)建立的上面是有的,但如果你建立的dblink太多了,怎么查看當(dāng)前建立了多少dblink 

SELECT dblink_get_connections();

POSTGRESQL如何訪問同instance的庫(kù)

通過上面的方式就可以查看到具體本地庫(kù)已經(jīng)啟用了db_link,的名字和數(shù)量2 

2  解除dblink 

dblink_disconnect();

POSTGRESQL如何訪問同instance的庫(kù)

POSTGRESQL如何訪問同instance的庫(kù)

POSTGRESQL如何訪問同instance的庫(kù)

3 判斷當(dāng)前BDLINK 是否在使用中 

dblink_is_busy

POSTGRESQL如何訪問同instance的庫(kù)

另外DBLINK 還支持異步調(diào)用,將語(yǔ)句發(fā)送給remote  的數(shù)據(jù)庫(kù)再等待后將信息取回. 這點(diǎn)實(shí)際上在其他數(shù)據(jù)庫(kù)上如果找到類比, 可能類似 SQL SERVER  SERVICE BROKE 但也僅僅是類似.

使用上應(yīng)該是類似于句柄,將信息發(fā)送給遠(yuǎn)程的數(shù)據(jù)庫(kù)服務(wù)器,然后,在通過判斷句柄將信息取回. 但返回的信息會(huì)在本地機(jī)的內(nèi)存中保存,所以不建議獲取數(shù)據(jù)量較大的信息. 這里面建議使用標(biāo)準(zhǔn)的方式來(lái)獲取數(shù)據(jù),也就是最上面的方式.

同時(shí)建議提高work_mem 的大小和臨時(shí)表的大小.

上面的訪問的方式應(yīng)該會(huì)有一部分人吐槽,很麻煩,PG 還提供另一種方式 POSTGRES_FDW

其實(shí)POSTGRES_FDW 做起來(lái)并不麻煩 4 步就OK

1  在目的庫(kù)上創(chuàng)建 create extension

2  創(chuàng)建于目的庫(kù)的連接

3  創(chuàng)建本地用戶和遠(yuǎn)程連接之間的賬號(hào)mapping

4  創(chuàng)建外部表

create extension postgres_fdw;

create server foreign_server_t foreign data wrapper postgres_fdw options (host '192.168.198.100',port '5432',dbname 'test');

create user mapping for postgres server foreign_server_t options (user 'test',password 'test');

CREATE FOREIGN TABLE foreign_table (

actor_id integer NOT NULL,

 first_name varchar(45),

last_name varchar(45),

last_update  timestamp

SERVER foreign_server_t       

OPTIONS (schema_name 'public', table_name 'actor');

POSTGRESQL如何訪問同instance的庫(kù)

查詢和在本地庫(kù)是沒有區(qū)別的,這是第二種解決本地庫(kù)中兩個(gè)數(shù)據(jù)庫(kù)中的表進(jìn)行跨庫(kù)訪問的方式.

以上是“POSTGRESQL如何訪問同instance的庫(kù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞名稱:POSTGRESQL如何訪問同instance的庫(kù)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/poosdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部