最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle 數(shù)據(jù)庫 臨時(shí)數(shù)據(jù)的處理方法

 更新時(shí)間:2009年06月25日 00:13:21   作者:  
在Oracle數(shù)據(jù)庫中進(jìn)行排序、分組匯總、索引等到作時(shí),會產(chǎn)生很多的臨時(shí)數(shù)據(jù)。如有一張員工信息表,數(shù)據(jù)庫中是安裝記錄建立的時(shí)間來保存的。
如果用戶查詢時(shí),使用Order BY排序語句指定按員工編號來排序,那么排序后產(chǎn)生的所有記錄就是臨時(shí)數(shù)據(jù)。對于這些臨時(shí)數(shù)據(jù),Oracle數(shù)據(jù)庫是如何處理的呢?
  通常情況下,Oracle數(shù)據(jù)庫會先將這些臨時(shí)數(shù)據(jù)存放到內(nèi)存的PGA(程序全局區(qū))內(nèi)。在這個(gè)程序全局區(qū)中有一個(gè)叫做排序區(qū)的地方,專門用來存放這些因?yàn)榕判虿僮鞫a(chǎn)生的臨時(shí)數(shù)據(jù)。但是這個(gè)分區(qū)的容量是有限的。當(dāng)這個(gè)分區(qū)的大小不足以容納排序后所產(chǎn)生的記錄時(shí),數(shù)據(jù)庫系統(tǒng)就會將臨時(shí)數(shù)據(jù)存放到臨時(shí)表空間中。這就是臨時(shí)表空間的來歷??雌饋砗孟襁@個(gè)臨時(shí)表空間是個(gè)臨時(shí)工,對于數(shù)據(jù)庫的影響不會有多大。其實(shí)大家這是誤解這個(gè)臨時(shí)表空間了。在用戶進(jìn)行數(shù)據(jù)庫操作時(shí),排序、分組匯總、索引這些作業(yè)是少不了,其會產(chǎn)生大量的臨時(shí)數(shù)據(jù)。為此基本上每個(gè)數(shù)據(jù)庫都需要用到臨時(shí)表空間。而如果這個(gè)臨時(shí)表空間設(shè)置不當(dāng)?shù)脑?,則會給數(shù)據(jù)庫性能帶來很大的負(fù)面影響。為此管理員在維護(hù)這個(gè)臨時(shí)表空間的時(shí)候,不能夠掉以輕心。要避免因?yàn)榕R時(shí)表空間設(shè)置不當(dāng)影響數(shù)據(jù)庫的性能。具體來說,主要需要注意如下幾個(gè)方面的內(nèi)容。

  一、創(chuàng)建用戶時(shí)要記得為用戶創(chuàng)建臨時(shí)表空間。

  最好在創(chuàng)建用戶時(shí)為用戶指定臨時(shí)表空間。如可以利用語句default temporary table space語句來為數(shù)據(jù)庫設(shè)置默認(rèn)的臨時(shí)表空間。不過在Oracle數(shù)據(jù)庫中這個(gè)不是強(qiáng)制的。但是筆者強(qiáng)烈建議這么做。因?yàn)槿绻麤]有為用戶指定默認(rèn)臨時(shí)表空間的話,那么當(dāng)這個(gè)用戶因?yàn)榕判虻炔僮餍枰褂玫脚R時(shí)表空間的話,數(shù)據(jù)庫系統(tǒng)就會“自作聰明”的利用系統(tǒng)表空間SYSTEM來創(chuàng)建臨時(shí)段。眾所周知,這是一個(gè)系統(tǒng)表空間。由于在這個(gè)表空間中存放著系統(tǒng)運(yùn)行相關(guān)的數(shù)據(jù),一般的建議是用戶的數(shù)據(jù)不能夠保存在這個(gè)表空間中。那么如果將用戶的臨時(shí)表空間防止在這個(gè)系統(tǒng)表空間之內(nèi),會產(chǎn)生什么負(fù)面影響呢?

  由于臨時(shí)表空間中的數(shù)據(jù)是臨時(shí)的。為此數(shù)據(jù)庫系統(tǒng)需要頻繁的分配和釋放臨時(shí)段。這些頻繁的操作會在系統(tǒng)表空間中產(chǎn)生大量的存儲碎片。當(dāng)這些存儲碎片比較多時(shí),就會影響系統(tǒng)讀取硬盤的效率,從而影響數(shù)據(jù)庫的性能。其次系統(tǒng)表空間的大小往往是有限制的。此時(shí)臨時(shí)段也來插一腳,就會占用系統(tǒng)表空間的大小。

  為此數(shù)據(jù)庫管理員需要注意一點(diǎn),當(dāng)沒有為用戶指定臨時(shí)表空間時(shí),用戶排序等操作仍然需要用到臨時(shí)段。此時(shí)數(shù)據(jù)庫系統(tǒng)就會將臨時(shí)段放入到系統(tǒng)表空間中。為此就會對數(shù)據(jù)庫的性能產(chǎn)生不利的影響。所以筆者建議各位讀者與數(shù)據(jù)庫管理員,在創(chuàng)建用戶的時(shí)候同時(shí)為用戶指定一個(gè)默認(rèn)的表空間,以減少臨時(shí)段對系統(tǒng)表空間的占用。

  二、合理設(shè)置PGA,減少臨時(shí)表空間使用的幾率。
總之,如果臨時(shí)段被頻繁使用的話,由于內(nèi)存與硬盤在性能上的差異,從而會降低數(shù)據(jù)庫的性能。為此在平時(shí)工作中,數(shù)據(jù)庫管理員還需要監(jiān)控臨時(shí)表空間的使用情況,以判斷是否需要采取措施來減少臨時(shí)表空間的使用來提高數(shù)據(jù)庫的查詢性能。為了實(shí)現(xiàn)這個(gè)目的,筆者建議數(shù)據(jù)庫管理員可以查看v$sort_segment這張動態(tài)性能視圖。通過這張動態(tài)性能視圖可以查看系統(tǒng)排序段(臨時(shí)段的一種)的使用情況。另外通過動態(tài)性能視圖v$sort_usage還可以查詢使用排序段的用戶與會話信息。從而為數(shù)據(jù)庫管理員優(yōu)化數(shù)據(jù)庫性能提供數(shù)據(jù)上的支持。對于這個(gè)排序段,筆者還要說明一點(diǎn)。對于排序段來說,同一個(gè)例程的所有SQL語句(如果需要排序操作的話)都將共享同一個(gè)排序段。并且排序段在第一次需要用到時(shí)被創(chuàng)建。排序完成后這個(gè)排序段不會被釋放,只有在這個(gè)歷程關(guān)閉后排序段才會被釋放。為此以上兩張視圖要綜合起來分析,才能夠得到數(shù)據(jù)庫管理員想要的信息。

  三、要為臨時(shí)表空間保留足夠的硬盤空間。

  其他表空間對應(yīng)的數(shù)據(jù)文件,在其創(chuàng)建時(shí)就會被完全分配和初始化,即在其創(chuàng)建時(shí)就會被分配存儲空間。但是臨時(shí)表空間對應(yīng)的臨時(shí)文件則不同。如在Linux操作系統(tǒng)中,臨時(shí)表空間創(chuàng)建時(shí)系統(tǒng)是不會分配和初始化臨時(shí)文件的。也就是說,不會為臨時(shí)文件分配存儲空間。只有臨時(shí)數(shù)據(jù)出現(xiàn)需要用到臨時(shí)文件的時(shí)候,系統(tǒng)才會在硬盤上分配一塊地方用來保存臨時(shí)文件。此時(shí)就可能會產(chǎn)生一個(gè)問題,即當(dāng)需要用到臨時(shí)文件系統(tǒng)為其分配空間的時(shí)候,才會先系統(tǒng)分區(qū)中沒有足夠的存儲空間了。此時(shí)就會產(chǎn)生一些難以預(yù)料的后果。

  為此對于這些臨時(shí)文件,數(shù)據(jù)庫管理員最好能夠預(yù)先為其保留足夠的空間。如在Linux操作系統(tǒng)中,可以將其防止在一個(gè)獨(dú)立的分區(qū)內(nèi),不允許其他應(yīng)用程序使用。如此的話,就不用擔(dān)心臨時(shí)文件沒有地方存儲了。另外由于臨時(shí)表空間主要用來存放一些排序用的臨時(shí)文件。為此如果能夠?qū)⑦@個(gè)臨時(shí)表空間存放在性能比較好的分區(qū)中,還可以提高數(shù)據(jù)庫系統(tǒng)讀取臨時(shí)表空間中數(shù)據(jù)的速度。另外由于系統(tǒng)需要頻繁分配臨時(shí)表空間中的數(shù)據(jù),為此臨時(shí)表空間所在的分區(qū)會出現(xiàn)比較多的碎片。此時(shí)如果將臨時(shí)表空間存放在一個(gè)獨(dú)立的分區(qū)內(nèi),那么數(shù)據(jù)庫管理員就可以單獨(dú)對這個(gè)分區(qū)進(jìn)行碎片整理,從而提高這個(gè)分區(qū)的性能。所以無論出于什么原因,將臨時(shí)表空間防止在一個(gè)獨(dú)立的分區(qū)內(nèi),是一個(gè)不錯(cuò)的想法。不僅可以保證臨時(shí)文件有存儲的空間,而且還可以提高數(shù)據(jù)庫的性能。

  對于臨時(shí)表空間最后需要說明的是,默認(rèn)情況下這個(gè)臨時(shí)表空間對各個(gè)用戶都是共享的。也就是說每個(gè)連接到數(shù)據(jù)庫的用戶都可以使用默認(rèn)的臨時(shí)表空間。數(shù)據(jù)庫管理員可以為其指定其他的臨時(shí)表空間。一般來說,只需要一個(gè)臨時(shí)表空間即可

  當(dāng)排序操作產(chǎn)生臨時(shí)數(shù)據(jù)時(shí),數(shù)據(jù)庫并不是馬上將其存儲在臨時(shí)表空間中。通常情況下,會先將這些臨時(shí)數(shù)據(jù)存儲在內(nèi)存的PGA程序全局區(qū)內(nèi)。只有當(dāng)這個(gè)程序全局區(qū)無法容納全部數(shù)據(jù)時(shí),數(shù)據(jù)庫系統(tǒng)才會啟用臨時(shí)表空間中的臨時(shí)段來保存這些數(shù)據(jù)。但是眾所周知,操作系統(tǒng)從內(nèi)存中讀取數(shù)據(jù)要比從硬盤中讀取數(shù)據(jù)塊幾千倍。為此比較理想的情況是,這個(gè)程序全局區(qū)足夠的大,可以容納所有的臨時(shí)數(shù)據(jù)。此時(shí)數(shù)據(jù)庫系統(tǒng)就永遠(yuǎn)用不到臨時(shí)表空間了。從而可以提高數(shù)據(jù)庫的性能。

  但是這畢竟只是一個(gè)理想。由于內(nèi)存大小等多方面的限制,這個(gè)PGA程序區(qū)的大小往往是有限制的。所以在進(jìn)行一些大型的排序操作時(shí),這個(gè)臨時(shí)表空間仍然少不了?,F(xiàn)在數(shù)據(jù)庫管理員可以做的就是合理設(shè)置這個(gè)PGA程序全局區(qū)的大小,盡量減少臨時(shí)表空間使用的幾率。如在實(shí)際工作中,數(shù)據(jù)庫管理員可以根據(jù)需要來設(shè)置初始化參數(shù)SORT_AREA_SIZE參數(shù)。這個(gè)參數(shù)主要控制這個(gè)PGA程序全局區(qū)內(nèi)排序區(qū)的大小。通常情況下,如果這個(gè)數(shù)據(jù)庫系統(tǒng)主要用來查詢并且需要大量的排序、分組匯總、索引等操作時(shí),那么可以適當(dāng)調(diào)整這個(gè)參數(shù),來擴(kuò)大PGA分區(qū)的大小。相反,如果這個(gè)系統(tǒng)主要用于更新操作,或者在這個(gè)數(shù)據(jù)庫服務(wù)器上還部署由其他的應(yīng)用程序,那么這個(gè)PGA分區(qū)就不能夠占用太多的內(nèi)存,以防止對其他應(yīng)用程序產(chǎn)生不利的影響。所以說,數(shù)據(jù)庫官員不能夠一刀切,需要根據(jù)實(shí)際情況來調(diào)整。在必要的情況下,可以增加系統(tǒng)內(nèi)存來增加PGA分區(qū)的大小,從而降低臨時(shí)表空間的使用幾率,以提高數(shù)據(jù)庫的排序、分組匯總等操作的性能。

相關(guān)文章

  • windows系統(tǒng)下Oracle?11g完整安裝教程

    windows系統(tǒng)下Oracle?11g完整安裝教程

    Oracle?11g?是Orcale公司推出的一款數(shù)據(jù)庫管理系統(tǒng),受廣泛應(yīng)用于企業(yè)級應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)下Oracle?11g完整安裝的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • 解決Hibernate JPA中insert插入數(shù)據(jù)后自動執(zhí)行select last_insert_id()

    解決Hibernate JPA中insert插入數(shù)據(jù)后自動執(zhí)行select last_insert_id()

    這篇文章主要介紹了Hibernate JPA中insert插入數(shù)據(jù)后自動執(zhí)行select last_insert_id()的解決方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • oracle常用函數(shù)匯總(分享)

    oracle常用函數(shù)匯總(分享)

    以下是對oracle中的常用函數(shù)進(jìn)行了匯總介紹,需要的朋友可以過來參考下
    2013-08-08
  • Oracle中轉(zhuǎn)義字符的詳細(xì)介紹

    Oracle中轉(zhuǎn)義字符的詳細(xì)介紹

    在ORACLE中,單引號有兩個(gè)作用: 字符串是由單引號引用和轉(zhuǎn)義。最近就遇到了轉(zhuǎn)義的問題,下面這篇文章就給大家主要介紹了關(guān)于Oracle中轉(zhuǎn)義字符的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Oracle建表與創(chuàng)建序列詳細(xì)實(shí)例

    Oracle建表與創(chuàng)建序列詳細(xì)實(shí)例

    在oracle中sequence就是所謂的序列號,每次取的時(shí)候它會自動增長,通常用在須要按序列號排序的地方,下面這篇文章主要給大家介紹了關(guān)于Oracle建表與創(chuàng)建序列的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • oracle 提示登錄密碼過期完美解決方法

    oracle 提示登錄密碼過期完美解決方法

    這篇文章主要介紹了oracle 提示登錄密碼過期完美解決方法,在文中給大家補(bǔ)充介紹了Oracle使用scott用戶登錄提示密碼過期問題,需要的朋友參考下
    2018-04-04
  • oracle使用索引與不使用索引的性能詳析

    oracle使用索引與不使用索引的性能詳析

    索引是建立在表的一列或多個(gè)列上的輔助對象,目的是加快訪問表中的數(shù)據(jù),下面這篇文章主要給大家分析介紹了關(guān)于oracle使用索引與不使用索引的性能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-10-10
  • oracle 觸發(fā)器 學(xué)習(xí)筆記

    oracle 觸發(fā)器 學(xué)習(xí)筆記

    觸發(fā)器 是特定事件出現(xiàn)的時(shí)候,自動執(zhí)行的代碼塊。類似于存儲過程,但是用戶不能直接調(diào)用他們。
    2009-05-05
  • Oracle數(shù)據(jù)庫基本操作及Spring整合Oracle數(shù)據(jù)庫詳解

    Oracle數(shù)據(jù)庫基本操作及Spring整合Oracle數(shù)據(jù)庫詳解

    這篇文章主要介紹了Oracle數(shù)據(jù)庫的基本概念、特點(diǎn)和操作權(quán)限,以及如何在Spring?Boot中整合Oracle數(shù)據(jù)庫,包括導(dǎo)入依賴、配置文件設(shè)置、實(shí)體類、Dao層和測試,需要的朋友可以參考下
    2025-02-02
  • Oracle 配置連接遠(yuǎn)程數(shù)據(jù)庫的教程

    Oracle 配置連接遠(yuǎn)程數(shù)據(jù)庫的教程

    這篇文章主要介紹了Oracle 配置連接遠(yuǎn)程數(shù)據(jù)庫的教程,即oracle配置tnsnames.ora文件實(shí)例,感興趣的朋友一起看看吧
    2018-03-03

最新評論

金门县| 宁强县| 德庆县| 永宁县| 崇文区| 台江县| 株洲市| 北碚区| 呼和浩特市| 周宁县| 晋江市| 昭苏县| 南开区| 呼和浩特市| 常熟市| 洪湖市| 九龙县| 且末县| 海林市| 乐山市| 浪卡子县| 宜城市| 重庆市| 山东| 怀柔区| 台东市| 阿荣旗| 桦甸市| 厦门市| 宁安市| 陇南市| 和政县| 安义县| 鄯善县| 东乌珠穆沁旗| 日土县| 井冈山市| 晋江市| 太保市| 大悟县| 瓮安县|