Oracle 自動段空間管理(ASSM)
從oracle 9i開始,管理段空間有兩種方法:手動段空間管理和自動段空間管理(Auto Segment Space Management,ASSM);
ASSM用點陣圖來跟蹤或管理每個分配到物件的塊,每個塊有多少剩餘空間根據點陣圖的狀態來確定,如>75%,50%-75%,25%-50%和<25%,也就是說點陣圖其實採用了四個狀態位來代替以前的PCTUSED,什麼時候該利用該資料塊則由設定的PCTFREE來確定。
對於ASSM,只需控制與空間使用相關的一個引數:PCTFREE.建立段時也可以接受其他引數,但是這些引數將被忽略。
在儲存/段 特徵這方面,應用於ASSM段的儲存設定只有:BUFFER_POOL PCTFREE INITRANS MAXTRANS(僅用於9i,在10g及以上版本中,所有段都會忽略這個引數。)
BUFFER_POOL : 可以將表放到keep或其它中,如: ALTERTABLE Table_Name STORAGE ( BUFFER_POOL KEEP) ;PCTFREE:該引數用於告訴oracle應該在塊上保留多少空間來完成將來的更新,預設10%.如果自由空間百分比高於PCTFREE中指定的值,這個塊就被認為是自由的。
使用ASSM時,PCTFREE會限制能否將一個新行插入到一個塊中,但是它不會控制一個塊是否在FRRELIST上,因為ASSM根本不會使用FREELIST,在ASSM中PCTUSED也被忽略。
PCTFREE有3種設定:太高、太低、剛剛好。如果把塊的PCTFREE設定的太高,就會浪費空間。如果把PCTFREE設定為50%,而你從未更新資料,那麼每個塊都會浪費50%的空間。不過,在另一個表上,可能50%非常合理。如果行最初很小,現在想將行的大小加倍,但是倘若 PCTFREE設定太小,更新行時就會導致行遷移。
行遷移是指(rowmigration)是指由於某一行變得太大,無法再與其餘的行一同放在建立這一行的塊中,而放到其它的塊中。
如果這種行遷移所佔的比例相當大,而且有大量使用者在訪問這些行,訪問這些資料的速度就會開始變慢,因為額外的i/o以及與i/o相關的閂定都會增加訪問時間,緩衝區快取的效率開始下降,因為需要快取兩個塊,而如果沒有行遷移只需要快取一個塊。另外表的大小和複雜性都有所增加。
如何設定PCTFREE(ASSM):如果你插入了將要更新的大量資料,而且這些更新會頻繁地增加行的大小,此時可以設定比較高的PCTFREE原始碼天空,因為這可以在插入後在塊上預留大量空間。
如果只想對錶完成INSERT或DELETE,或者UPDATE只是對行大小影響比較小,此時可以設定比較低的PCTFREE.
相關資訊可參考:Oracle 自動段空間管理(ASSM:autosegment space management)
http://blog.csdn.net/tianlesoftware/article/details/4958989 Oracle ASSM三級點陣圖塊結構 http://www.itpub.net/thread-99486-1-1.html
詳細請參考:
ASSM用點陣圖來跟蹤或管理每個分配到物件的塊,每個塊有多少剩餘空間根據點陣圖的狀態來確定,如>75%,50%-75%,25%-50%和<25%,也就是說點陣圖其實採用了四個狀態位來代替以前的PCTUSED,什麼時候該利用該資料塊則由設定的PCTFREE來確定。
對於ASSM,只需控制與空間使用相關的一個引數:PCTFREE.建立段時也可以接受其他引數,但是這些引數將被忽略。
在儲存/段 特徵這方面,應用於ASSM段的儲存設定只有:BUFFER_POOL PCTFREE INITRANS MAXTRANS(僅用於9i,在10g及以上版本中,所有段都會忽略這個引數。)
BUFFER_POOL : 可以將表放到keep或其它中,如: ALTERTABLE Table_Name STORAGE ( BUFFER_POOL KEEP) ;PCTFREE:該引數用於告訴oracle應該在塊上保留多少空間來完成將來的更新,預設10%.如果自由空間百分比高於PCTFREE中指定的值,這個塊就被認為是自由的。
使用ASSM時,PCTFREE會限制能否將一個新行插入到一個塊中,但是它不會控制一個塊是否在FRRELIST上,因為ASSM根本不會使用FREELIST,在ASSM中PCTUSED也被忽略。
PCTFREE有3種設定:太高、太低、剛剛好。如果把塊的PCTFREE設定的太高,就會浪費空間。如果把PCTFREE設定為50%,而你從未更新資料,那麼每個塊都會浪費50%的空間。不過,在另一個表上,可能50%非常合理。如果行最初很小,現在想將行的大小加倍,但是倘若 PCTFREE設定太小,更新行時就會導致行遷移。
行遷移是指(rowmigration)是指由於某一行變得太大,無法再與其餘的行一同放在建立這一行的塊中,而放到其它的塊中。
如果這種行遷移所佔的比例相當大,而且有大量使用者在訪問這些行,訪問這些資料的速度就會開始變慢,因為額外的i/o以及與i/o相關的閂定都會增加訪問時間,緩衝區快取的效率開始下降,因為需要快取兩個塊,而如果沒有行遷移只需要快取一個塊。另外表的大小和複雜性都有所增加。
如何設定PCTFREE(ASSM):如果你插入了將要更新的大量資料,而且這些更新會頻繁地增加行的大小,此時可以設定比較高的PCTFREE原始碼天空,因為這可以在插入後在塊上預留大量空間。
如果只想對錶完成INSERT或DELETE,或者UPDATE只是對行大小影響比較小,此時可以設定比較低的PCTFREE.
相關資訊可參考:Oracle 自動段空間管理(ASSM:autosegment space management)
http://blog.csdn.net/tianlesoftware/article/details/4958989 Oracle ASSM三級點陣圖塊結構 http://www.itpub.net/thread-99486-1-1.html
詳細請參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/223653/viewspace-1254577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- assm:Oracle 10g的自動段空間管理SSMOracle 10g
- Oracle 10g的自動段空間管理(ASSM)Oracle 10gSSM
- oracle 段空間管理問題Oracle
- 建立ASSM/MSSM管理表空間及建立表、分割槽表、大物件段等示例SSM物件
- ORACLE空間管理實驗4:塊管理之ASSM三級點陣圖結構OracleSSM
- Oracle9i自動分段空間管理改善分段儲存Oracle
- Linux 自動增加oracle 表空間LinuxOracle
- ORACLE空間管理實驗5:塊管理之ASSM下高水位的影響--刪除和查詢OracleSSM
- oracle回滾段 undo 表空間Oracle
- Oracle表空間管理Oracle
- Oracle 表空間管理Oracle
- Oracle 本地表空間管理與字典表空間管理Oracle
- Oracle的邏輯結構(表空間、段、區間、塊)——表空間Oracle
- Oracle OCP(46):表空間、段、區、塊Oracle
- Oracle undo 表空間管理Oracle
- Oracle 表空間的管理Oracle
- oracle undo表空間管理Oracle
- Oracle的表空間管理Oracle
- 如何計算自動管理的UNDO表空間大小
- 使用oracle procedure儲存過程自動擴充套件表空間空間tablespace_自動化運維Oracle儲存過程套件運維
- Oracle表空間、段、區和塊簡述Oracle
- 華納雲:如何配置oracle表空間自動擴容?Oracle
- Oracle OCP(49):表空間管理Oracle
- oracle表空間日常操作管理Oracle
- oracle本地管理的表空間Oracle
- 淺說Oracle PGA空間管理Oracle
- oracle表空間管理維護Oracle
- oracle 表空間、段、資料擴充和資料塊——來自網路Oracle
- Oracle9i的自動分段空間管理改善了分段儲存的本質Oracle
- 偽造基於ASSM表空間的資料塊SSM
- 儲存管理之段收縮、可恢復空間
- Oracle資料庫管理 版主空間Oracle資料庫
- oracle 表空間的管理方式Oracle
- linux自動增加表空間Linux
- ORACLE空間管理實驗6:塊管理之ASSM下插入操作--高水位的影響及大併發插入的效能問題OracleSSM
- Oracle表移動表空間Oracle
- oracle 表移動表空間Oracle
- 利用可恢復空間分配技術自動分配表空間