天天看點

炮灰到精英的必備神器-PGSQL快速導入表新特性

因為不知道postgresql 9.5 import foreign schema的新特性,堅守傳統方法,小明在職場上成為了同僚小強的炮灰。今天高強老師為你具體介紹如何運用postgresql 9.5快速導入外部表的新特性,趕緊來看看吧,不知道你就out了。

炮灰到精英的必備神器-PGSQL快速導入表新特性

在一個風和日麗,沒有霧霾的早上,技術部上司把小明叫到了辦公室,問:“兄弟,我想在新的系統上查詢一下在用的生産系統的資料,有沒有比較快速、友善的方法?新的用的pg的資料庫有這種方案嗎?”

小明:“上司,把資料從生産系統中導出,然後導入到新系統不就ok?”

上司:“比較快速、友善的方法有沒有?”

小明:“上司,把資料從生産系統中導出,然後導入到新系統就很快。”

上司:“更快速、友善的方法有沒有?”

小明:“上司,把資料從生産系統中導出,然後導入新系統就已經很快了!”

上司對于小明複讀機似的回答有些惱火,按耐住心中的不耐煩,問了一句:“導入外部表需要做什麼準備工作嗎?”

炮灰到精英的必備神器-PGSQL快速導入表新特性

小明胸有成竹的講:“上司,就是實作建立好ddl就行。”

上司認真的問到:“一共多少張表?”

小明有些不确定:“200張?”

上司有些驚訝:“這麼多?!”

小明突然又想起了些什麼,小聲的說:“上司... ...我剛想起來...還有一個使用者,裡面大概有300張表...”( -__-|||)(聲音小的連他自己都快聽不到了)

上司有點沉不住氣了:“滾出去!”

小明紅着臉說:“上司!你聽我說...”

上司這次徹底的被點燃了:“滾出去!!!”

炮灰到精英的必備神器-PGSQL快速導入表新特性

小明默默的在外面幫上司關上了門... ...

上司已經氣的不行,此時老闆的電話已打過來:“怎麼樣?搞定沒?”

上司:“沒問題,老闆,稍等片刻!”

老闆:“好的,搞好了說一聲,好跟客戶介紹咱們新開發的系統,起碼有個查詢體驗,等你消息!抓緊。”

上司此時想起了公司新來的同僚小強,雖然小強平時看起來比較逗逼和活潑,但是小強已經是公司為數不多做資料庫的員工了。上司想好了如何跟老闆解釋系統開發進度慢,拖延體驗時間的解釋。抱着試試看的心态,傳召了小強,表達了在此情景下的需求。

小強:“上司,這個問題,我不敢保證能做好,我盡力。”

上司:“平時看你活潑誇張,今天說話有所保留;說說看,你有什麼思路?”

小強:“上司,不動資料庫什麼玩笑我都敢開,真刀真槍幹事兒了,不來那些沒用的話。我前段時間看到postgresql 9.5有個新特性,可以簡單的導入外部表,按模式導入,我覺得可以嘗試一下。”

上司:“好,去做吧,注意操作謹慎,别粗心。”

小強:“知道了,半個小時内給您回消息,不論成功還是失敗,都即時彙報給您。”

小強出門後,上司點了一顆煙,靜待平時看起來“不靠譜”的小強。

同時,上司也在想,小強說的方法理論上聽起來确實不錯,不知道放在實踐中如何,他對比了一下兩位員工的方案:

小明的方案:

炮灰到精英的必備神器-PGSQL快速導入表新特性

小強的方案:

炮灰到精英的必備神器-PGSQL快速導入表新特性

小強回到工位上,倒了杯水,心理有一些壓力,盡管自己剛測試過新功能(導入外部模式),但是心理還是很緊張,因為他覺得要對上司的信任負責任,要對生産系統的穩定運作負責任,這絕對不是平時打打鬧鬧、說說笑笑之類的胡鬧。

他打開筆記本,深吸了一口氣,謹慎的進行了操作:

1.确定一下新環境的資料庫版本:

炮灰到精英的必備神器-PGSQL快速導入表新特性

2.建立基于使用者的模式:

炮灰到精英的必備神器-PGSQL快速導入表新特性

3.安裝postgres_fdw插件:

炮灰到精英的必備神器-PGSQL快速導入表新特性

4.建立外部伺服器對象:

炮灰到精英的必備神器-PGSQL快速導入表新特性

5.建立使用者映射對象:

炮灰到精英的必備神器-PGSQL快速導入表新特性

連接配接到生産庫看一下生産庫的表資訊:

炮灰到精英的必備神器-PGSQL快速導入表新特性

6.遠端導入整個schema:

炮灰到精英的必備神器-PGSQL快速導入表新特性

7.檢視新系統表狀态:

炮灰到精英的必備神器-PGSQL快速導入表新特性

8.調整屬主和權限:

炮灰到精英的必備神器-PGSQL快速導入表新特性

9.驗證資料量:

炮灰到精英的必備神器-PGSQL快速導入表新特性

資料已經導入到了新的系統中,小強立刻給上司打電話通報。

上司:“不錯,小強,如果上面要求屏蔽掉某些敏感的表或者是隻提供基礎資料好實作嗎?”

小強:“沒問題,我給你我的測試報告吧,最近剛做的。”

測試報告:

在源端建立2個新的表:

炮灰到精英的必備神器-PGSQL快速導入表新特性

排除某個表:

炮灰到精英的必備神器-PGSQL快速導入表新特性

檢視一下導入效果:

炮灰到精英的必備神器-PGSQL快速導入表新特性

已經排除表summary。

删掉目标庫的表,再測試一下包含某個表的用法:

炮灰到精英的必備神器-PGSQL快速導入表新特性

上司:“謝謝你,小強,回去工作吧”

說着,上司撥通了小明的電話,心想還是要維系好同僚關系,多一份人脈,多很多機會,再說小明也是老員工了,剛才對他發火也有些沖動。

小明進了辦公司,上司微笑着,說:“小明,剛才事出緊急,有些急躁,抱歉。”

小明:“上司,沒關系,确實是我技術不精,以後多多學習!”

上司:“剛才小強把表都整過來了,我看查詢有些慢,你給看一下原因。”

小明:“好的上司,我收集一下資訊,完事兒立刻給你彙報!”

小明回到工位執行了幾條指令,收集了一下性能方面的資訊:

在新系統上:

炮灰到精英的必備神器-PGSQL快速導入表新特性

在生産系統的伺服器看:

炮灰到精英的必備神器-PGSQL快速導入表新特性

小明把以上資訊送出給了上司,解釋說:”上司,你看收集到的資訊顯示,遠端的表查詢起來就是慢,看來這功能還是不靠譜啊,我建議還是用我的方案,導資料,或者可以買第三方軟體進行同步資料,把資料實時同步到本地。”

上司:”小明...老師...公司花錢請你來是讓你給個報告然後告訴老闆要花錢買新産品的嗎?那還用你做啥?同步資料可以用hotstandby,還用第三方軟體?你一個導資料的方案想通吃所有項目?!目前這查詢速度客戶是可以接受的,并不是相對速度慢就是不可以好嗎?!!想要查遠端資料并且提升一下性能可以用物化視圖好嗎?!!!“

小明:”上司,不好意思...物化視圖是...什麼?“

上司:”滾出去!!!“

炮灰到精英的必備神器-PGSQL快速導入表新特性

外部表在查詢速度上還是有一定的延遲的,如果在項目中可以接受實際的查詢速度就ok。如果接受不了,可以嘗試使用物化視圖,當然還有很多方案,方法總比困難多~~~

作者介紹:高強

【dba+社群】聯合發起人

sdoug核心成員,itpub 名人堂嘉賓。

oracle使用者組年輕專家。chinaunix 社群 oracle 闆塊版主,chinaunix 社群部落格專家。

優酷網認證音樂牛人:ericguitar。

<b></b>

<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2016-01-19</b>