溫馨提示×

溫馨提示×

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

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

ORACLE表空間、段、區(qū)的管理方式

發(fā)布時間:2020-08-15 04:53:37 來源:ITPUB博客 閱讀:302 作者:大鯊魚o0O 欄目:關(guān)系型數(shù)據(jù)庫

一、 ORACLE表空間管理

        ORACLE通過表空間為數(shù)據(jù)庫提供使用空間。由于區(qū)(extent)是ORACLE創(chuàng)建對象時的最小分配單元, 所以表空間的管理實際上就是針對于區(qū)間的管理。 

        ORACLE表空間的管理方式分為:

         1.1 字典管理方式(DMT):

               使用數(shù)據(jù)字典管理存儲空間的分配, 當(dāng)表空間分配新的區(qū), 或者回收已分配的區(qū)時, ORACLE會對數(shù)據(jù)字典對應(yīng)的表進(jìn)行查詢、更新, 且使用單線程, 速度慢, 并且產(chǎn)生回退和重做信息。

         1.2 本地管理方式(LMT):

               表空間中區(qū)分配和區(qū)回收的管理信息都被存儲在表空間的數(shù)據(jù)文件中, 而與數(shù)據(jù)字典無關(guān)。表空間為每個數(shù)據(jù)文件維護(hù)一個位圖結(jié)構(gòu), 用于記錄表空間的區(qū)分配情況。 當(dāng)表空間分配新的區(qū), 或者回收已分配的區(qū)時, ORACLE會對文件中的位圖進(jìn)行更新, 所以不會產(chǎn)生回滾和重做信息。

               優(yōu)點(diǎn):  a) 提高存儲管理的速度和并發(fā)性。 b) 不產(chǎn)生磁盤碎片。 c) 不產(chǎn)生遞歸管理。 d) 沒有系統(tǒng)回滾段。

二、 ORACLE段管理

        ORACLE以區(qū)為單位將空間分配給對象段, 而段內(nèi)則是以BLOCK為單位進(jìn)行空間使用和管理。

        ORACLE段的管理分為:

         2.1 手動段空間管理(Manual Segment Space Management):

               手動設(shè)置FressLists、FreeList Groups、PctUsed、其它參數(shù)來控制如何分配、使用、重用段空間。 許多版本都支持MSSM。

         2.2 自動段空間管理(Automatic Segment Space Management)

               只需要控制與空間使用相關(guān)的PctFree, 其它參數(shù)被忽略。 ASSM只有在9i版本后才被引入, 用于減少M(fèi)SSM中的太多參數(shù)的管理。

                應(yīng)用于ASSM段的存儲設(shè)置只有Buffer_Pool、PctFree、IniTrans、MaxTrans(10g后的版本都會忽略這個參數(shù)), 其它存儲和物理屬性參數(shù)都不適用于ASSM段。

         2.3 HWM高水平線

               HWM是隨著表數(shù)據(jù)的增長而增長的, 只有重建、截除、收縮對象時, HWM才會降低。 HWM很重要, 因為在ORACLE進(jìn)行全表掃描時會掃描HWM下的所有塊, 即使這張數(shù)據(jù)庫表不包含任何數(shù)據(jù)。

               TRUNCATE會把表的HWM重新置為0, 還會截除表上的相關(guān)索引, 而DELETE整張表時沒有修改HWM, 所以如果打算刪除表的所有行, 應(yīng)盡量使用TRUNCATE。

               在MSSM表空間中, 段只有一個HWM。 但在ASSM表空間中, 除了HWM外, 還有一個低HWM。 這是因為在ASSM中, HWM推進(jìn)時, ORACLE并沒有立即格式化所有的物理塊, 而是只在第一次使用時才會完成格式化, 以便安全讀取(這里有些疑問???)。

          2.4 freelists

                freelists 是使用MSSM表空間時, ORACLE使用塊時,需要把塊放在freelist或從fresslist中刪除, fresslists可能對性能有很大的提升或有很大的影響。

                而在ASSM中, 沒有也不用去設(shè)置freelist參數(shù)。

                create tablespace assm datafile size 10m autoextend on next 1m segment space management auto ;

                create table xxx tablespace assm ;

          2.5 pctfree與pctused(同樣存在疑問???)

                PctFree告訴ORACLE應(yīng)該在塊上保留多少空間來完成將來的更新, 默認(rèn)值是10%, 如果自由空間的百分比高于PctFree指定值, 這個塊就稱為自由的。

                PctUsed告訴ORACLE當(dāng)前不自由的塊上自由空間的百分比需要達(dá)到多大時, 才能使它再次變?yōu)樽杂傻? 默認(rèn)值為40%。

                使用MSSM時, 這兩個參數(shù)設(shè)置控制著塊何時放入freelist中, 以及何時從freelist中取出。 如果使用默認(rèn)值,PctFree為10, PctUsed為40, 那么在塊到達(dá)90%之前(有10%以上的自由空間), 這個塊會一直在freelist上。 一旦到底90%, 就會從freelist中取出, 而且直到塊上的自由空間超過了塊的60%, 才會重新回到freelist上, 在此之前, 這個塊一直不在freelist上。

                使用ASSM時, PctFree仍然會限制能否將一個新行插入到一個塊中, 但是它不會控制一個塊是否在freelist上, 因為ASSM根本不使用freelist。在ASSM中, PCTUSED參數(shù)將被忽略。

                 如果PctFree設(shè)置的太小, 更新行時就會導(dǎo)致行遷移。

 

三、 ORACLE區(qū)管理

         ORACLE區(qū)的管理分為:

        3.1 自動分配

              ORACLE會按照遞增算法來分配空間。會容易造成磁盤碎片。

        3.2 統(tǒng)一尺寸

向AI問一下細(xì)節(jié)

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

AI