使用Oracle功能特性提高應用執行效率 (2)
4. Oracle815引入了本地管理表空間,它在管理和效能上都優於傳統的字典管理表空間,它已融合了規則1、2、3 ;要使用此特性,在CREATE TABLESPACE語句中指定EXTENT MANAGEMENT LOCAL子句;
5. 段的區片數目上限應在4096之下,DML操作在此區片數目範圍內不會有明顯的效能差異;但某些DDL操作的速度則與區片的數目關係較大;因此合理的區片數目應保持在1024之下;對於持續不斷擴充套件的段,應監控區片數目,在必要時移至其它表空間;
6. 對於特別大的資料段應控制在4G-128G(Oracle7為5G-160G)之間,它們應存放到單獨的表空間上,同時對於這些特大段應考慮使用分割槽拉提高效能;
7. 使用者的臨時表空間應使用TEMPORARY型別;
8. 當系統的事務規模比較均衡時可以對回滾段使用OPTIMAL引數,否則應避免制定OPTIMAL引數,而定期監控回滾段的大小,並在必要時重建;
9. 臨時段和回滾段絕對不要將使用者資料存放到SYSTEM表空間,它是專為永遠不會Drop和Truncate的系統資料物件而設計的;
10. 建立表空間時指定資料檔案的大小應=區片整數倍+1資料塊,對於Local Managed Tablespace則為區片整數倍+64K;
11. 當表空間使用統一的區片大小時,不要對其進行空間整理,重整的結果不僅耗費精力而且可能會使效能變差;對於未使用統一的區片尺寸的表空間應通過Export/Import重整;
12. 8i 提供了Alter Table …Move [Tablespace…]命令可用於快速重整表,Alter Index …Rebuild…[Tablespace…] 命令可用於快速重建索引。
有關使用單個區片的誤導
在許多關於碎片整理的文件中建議在Export時使用Compress=Y選項,將表中的所有資料調整到一個區片中,期望在Import後獲得良好效能。由此讓許多人產生一個觀點,認為當表中資料全部存放到一個區片中時,可以獲得良好效能。實際上單區片段只在以下條件成立時,才具有優越性。
資料主要以(全段)掃描方式訪問;
段所對應的資料塊在物理磁碟上連續存放,Oracle可以釋出較大的順序磁碟讀操作;
通過對這兩條進行分析可以發現,一方面資料庫中大部分表是通過索引來訪問,另一方面現在的資料庫檔案一般在物理上使用了RAID5或RAID0+1技術,資料以條帶化方式分佈到多個物理磁碟上,邏輯上的單個區片和多區片在物理上並無本質上的區別;另外,從Oracle的角度來看,管理幾百個區片的段是非常輕鬆的並不會有效能的下降。由此可見將整個段放到一個區片中並無明顯好處,而這種做法卻會導致表空間碎片的產生。
三、表資料段的使用
表空間的組織
Heap表的空間由一系列區片連結而成,每個資料塊除塊頭外其餘部分可用於存放資料,在建立表時可以指定以下引數:
PCTFREE:塊中保留用於UPDATE操作的空間百分比,當資料佔用的空間達到此上限時,新的資料將不能再插入到此塊中;
PCTUSED:指定塊中資料使用空間的最低百分比;當一個塊在達到PCTFREE,之後經歷了一些DELETE操作,在其空間使用下降到PCTUSED後便可以重新被用於INSERT資料;這就是PCTFREE/PCTUSED引數的含義;
調整PCTFREE、PCTUSED引數的目標一方面是提高效能,另一方面則主要是提高空間使用效率,避免出現塊中存在有許多未用的空間,但卻無法找到一個塊可以被用於插入新資料行的情況發生。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-238993/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Oracle功能特性提高應用執行效率 (3)Oracle
- 使用Oracle功能特性提高應用執行效率 (1)Oracle
- Oracle提高SQL執行效率的三種方法ITOracleSQL
- 【SQL】Oracle避免動態SQL,提高過程執行效率SQLOracle
- 利用並行提高sql執行效率(轉)並行SQL
- 提高python執行效率的方法Python
- 在Oracle裡提高SQL執行效率的三種方法NQOracleSQL
- oracle使用profiler分析語句執行效率Oracle
- 應用時間管理提高工作效率 2(轉)
- 提高程式碼的執行效率(1)
- 提高codeing執行時間效率
- 使用Bulk Collect提高Oracle查詢效率Oracle
- 提高Python執行效率的5個技巧!Python
- 提高js執行效率的幾個常用技巧JS
- 提高jQuery執行效率的一些措施jQuery
- 解析提高PHP執行效率的50個技巧PHP
- Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和執行效率WindowsLVMSpring Boot編譯
- 使用Integration Developer中的Claim Check模式提高應用程式效率(一)DeveloperAI模式
- 使用Integration Developer中的Claim Check模式提高應用程式效率(二)DeveloperAI模式
- 提高Python執行效率的5個小技巧!Python
- 提高Python執行效率的六個竅門Python
- 提高開發效率的 Eclipse 實用操作(2)Eclipse
- 手把手提高基礎程式碼執行效率
- 提高程式執行效率的10個簡單方法
- 30個提高Web程式執行效率的好經驗Web
- ORACLE優化SQL語句,提高效率(2)Oracle優化SQL
- Oracle資料庫學習之儲存過程--提高程式執行的效率Oracle資料庫儲存過程
- Python使用.NET開發的類庫來提高你的程式執行效率Python
- 【edobnet】利用.Net 執行緒池提高應用程式效能.執行緒
- 使用SAP BSP應用執行VueVue
- 用 FutureBuilder 提高開發效率Rebuild
- Java效能優化:教你提高程式碼執行的效率Java優化
- 提高資料庫系統的執行效率的辦法資料庫
- 10款提高效率的iPhone應用程式iPhone
- 應用時間管理提高工作效率 (轉)
- Oracle中SQL語句執行效率的查詢與解決 (2)OracleSQL
- Oracle提高查詢效率的方法Oracle
- 全面學習和應用ORACLE ASM特性--(2)管理asm磁碟OracleASM