溫馨提示×

溫馨提示×

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

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

oracle 臨時表 應用場景

發(fā)布時間:2020-04-01 23:57:07 來源:網(wǎng)絡 閱讀:2777 作者:lych528 欄目:關系型數(shù)據(jù)庫

ORACLE數(shù)據(jù)庫除了可以保存永久表外,還可以建立臨時表temporary tables。這些臨時表用來保存一個會話SESSION的數(shù)據(jù),或者保存在一個事務中需要的數(shù)據(jù)。當會話退出或者用戶提交commit和回滾rollback事務的時候,臨時表的數(shù)據(jù)自動清空,但臨時表的結構以及元數(shù)據(jù)還存儲在用戶的數(shù)據(jù)字典中。

1.會話級臨時表
會話級臨時表是指臨時表中的數(shù)據(jù)只在會話生命周期之中存在,當會話結束的時候,Oracle自動清除臨時表中數(shù)據(jù)。所以這里有一個常用的知識點,就是各自會話的數(shù)據(jù)只有自己才能看到,不同的會話看到的數(shù)據(jù)自己的(不同的數(shù)據(jù)),這個知識點在優(yōu)化場景下利用很多。

格式:

Create Global Temporary Table Table_Name
(xxx int ) On Commit Preserve Rows;

2.事務級臨時表
事務級臨時表是指臨時表中的數(shù)據(jù)只在事務生命周期中存在。

Create Global Temporary Table Table_Name
(xxx int )
On Commit Delete Rows;

當一個事務結束(commit or rollback),Oracle自動清除臨時表中數(shù)據(jù)。同樣的事務級臨時表的數(shù)據(jù)在各會話之間也是獨立的

業(yè)務優(yōu)化最常見的情景如下:

1 用戶在特定時間批量沖刷數(shù)據(jù)入庫
2 數(shù)據(jù)庫后臺通過一個中轉表(XXX)先對用戶數(shù)據(jù)落地
3 依據(jù)各種邏輯,把XXX表的數(shù)據(jù)insert into 各種業(yè)務表

問題1:很多開發(fā)人員把XXX設計成普通表,而開發(fā)者理念又認為這其實只是一個中轉臨時表,索引的設計自然很多人也忽略了。

問題2 : 這個XXX通過多用戶刷數(shù)據(jù)進來,涉及的數(shù)據(jù)量應該很大,如果設計成普通表,肯定適當?shù)貙σ恍┨幚磉^的數(shù)據(jù)要進行delete,這樣明顯又影響了業(yè)務效率。

利用臨時表的特性就可大量提升此業(yè)務的性能問題。

向AI問一下細節(jié)

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

AI