中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL如何實現臨時表

發布時間:2021-11-26 09:22:02 來源:億速云 閱讀:1774 作者:小新 欄目:大數據

小編給大家分享一下PostgreSQL如何實現臨時表,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

說到臨時表,使用MYSQL的同學可能不是很常用,尤其是互聯網領域的,臨時表在MYSQL 的主從復制環境中使用臨時表本身是有缺陷的(這還的扯到程序當中去,解釋起來比較復雜)。今天的主題是Postgresql 的臨時表,Postgresql 的臨時表本身是事帶有隔離性的,與ORACLE 不同的是,PostgreSQL的臨時表本身更徹底,在SESSION失效后,表的定義都會消失,ORACLE 則不是,表的定義不會消失。這也是兩種數據庫在臨時表上的區別。

我們可以下載做一個測試,我們開兩個窗口

PostgreSQL如何實現臨時表

PostgreSQL如何實現臨時表

在此之外,我們在開一個窗口

PostgreSQL如何實現臨時表

首先證明了每個session 中的臨時表都是獨立的,在別的SESSION 中是看不到的。

另外PostgreSQL 中的臨時表還有一些相關方便的設置,在創建時指定臨時表的在什么時候消失或者清理數據。

相關postgresql 可以在 commit 中進行設置例如

ON COMMIT DELETE ROWS;
ON COMMIT DROP;
ON COMMIT PRESERVE ROWS;

這三種分別代表不同的含義,一個是在SESSION內,如果COMMIT 就直接將臨時表中的行刪除 , DROP 是直接commit 后就將表刪除,最后是即使commit 也保留表,直到session結束。

另外POSTGRESQL 中的并行掃描,對臨時表是無效的。還有一個有意思的事情時,如果你在同一個事務中創建了同名的臨時表 和 實體表,則你訪問的和操作的都是臨時表優先。

PostgreSQL如何實現臨時表

另外有一個地方需要討論的是,臨時表在復雜事務中到底幫了我們多少,

 臨時表可以降低多表進行關聯造成的查詢復雜性和性能的問題

例如:臨時表可以在程序快速調用存儲過程中,分解對大表的訪問和查詢,將中間的結果存儲在臨時表中,而不是多個大表進行關聯,如果我們僅僅需要查詢大表中1%的記錄,同時可以通過條件來現將大表1%的數據或更少的數據存儲在臨時表里面,在進行相關的連接,聚合,等操作,會大大減少例如鎖等待,死鎖,等可能性。

另外和有些數據庫不同,PG的臨時表會創建在你當前操作的數據庫中,并且以t 開頭進行命名(這里指的是在臨時表的物理存儲空間的名字)

所以更好的利用歷史表,能讓你的例如存儲過程,乃至是程序設計都能提升一個層次,當然如果濫用歷史表,在不恰當的場景進行使用,則會事倍功半的結果。

PostgreSQL如何實現臨時表

PostgreSQL如何實現臨時表

看完了這篇文章,相信你對“PostgreSQL如何實現臨時表”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吐鲁番市| 深州市| 宁晋县| 瑞金市| 邓州市| 合江县| 丰台区| 定结县| 马山县| 灌云县| 哈密市| 康定县| 五河县| 任丘市| 望谟县| 隆尧县| 泰和县| 镇远县| 镇沅| 崇义县| 涟源市| 崇文区| 石城县| 天门市| 阿勒泰市| 金塔县| 浑源县| 渝中区| 雷山县| 合川市| 宜兴市| 蒙城县| 乌兰县| 米林县| 盱眙县| 准格尔旗| 墨竹工卡县| 资中县| 贵州省| 罗甸县| 海淀区|