使用Oracle功能特性提高應用執行效率 (1)
Oracle提供了不少方法用於資料空間的使用、監控和維護,同時也在各版本中陸續對這方面的功能進行了增強,目的在於簡化這方面工作的複雜度,提高應用的執行效率。
一、相關概念
資料庫的空間在邏輯上分為多個表空間,每個表空間則由系統中的一個或多個物理資料檔案構成;Oracle儲存資料的基本單位是塊,其大小在建庫時由DB_BLOCK_SIZE引數確定,一個或多個連續的塊構成一個區片(EXTENT),它作為資料物件儲存的基本單位來使用。在Oracle中,每個基本資料物件使用的空間稱為段(Segment),段存放在唯一的表空間上,每個段實際上是一系列區片(更為準確地是資料塊)的集合。每個簡單資料物件對應一個段;對於分割槽物件如分割槽表、索引,則每個(子)分割槽對應一個段,由各個(子)分割槽共同構成一個完整的資料物件。因此,可以把表空間看作桶,裡面放著許多段;一個段只能放在一個桶中,而不能跨越多個桶。
二、表空間的使用
表空間碎片的產生
由於同一個表空間中存放有多個資料段,各個資料段可以有不同的區片尺寸,不同段的區片可以交叉存放;當這些段中的區片經過分配(如建立表)、釋放(如刪除表)後,就可能使表空間中原本連續的空閒資料塊變成不連續,而區片必須由連續的資料塊構成,這時,當某一段需要分配新的區片時,就有可能出現雖然表空間空閒資料塊的總和大於所需區片的大小,但卻無法找到一串連續的塊來供此區片分配使用。這種情況就稱為表空間的Extent Fragmentation。我們經常會遇到這種情況,明明從DBA_FREE_SPACE中計算表空間還有幾百MB,但其中的某一個表卻無法再擴充套件幾個MB的空間。
消除表空間碎片
Oracle在段的區片分配上為使用者提供了很大的靈活性,然而如果未能正確使用建立表空間和資料物件的各個可選擇引數,則在最後將不可避免的要面對區片碎片的問題。Oracle 的Bhaskar Himatsingka 和 Juan Loaiza,為此提出了SAFE(Simple Algorithm for Fragmentation Elimination.)配製規則,通過遵循這套規則,區片級碎片可以完全的避免。而實際上,Oracle8i引入的新特性:Local Managed Tablespace就是SAFE規則在Oracle Server的內建實現。SAFE原則概括起來包括:
1. 對每個表空間上的段使用相同的區片尺寸;段引數INITIAL=NEXT,PCTINCREASE=0;可以通過使用Create Tablespace 的‘ MINIMUM EXTENT’ 子句來確保分配的區片是此引數的倍數;
2. 僅在表空間級指定INITIAL、NEXT引數,在建立資料段時不要指定這些引數;
3. 區片的大小根據段大小來確定,原則是均衡順序掃描的效率和空間的利用率,同時確保段的區片數目控制在1024之下;根據此原則,在進行相應測試之後,確定以下區片選取規則:
段大小(Oracle7) 區片大小(Oracle7) 段大小(Oracle8) 區片大小(Oracle8) &160M 160K &128M 128K 160M-5G 5M 128M-4G 4M &5G 160M &4G 128M |
有此資料庫中可以只使用三種區片大小的表空間;在物件建立之前需對其大小進行評估,並放到相應的表空間中;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-238992/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle提高SQL執行效率的三種方法ITOracleSQL
- 提高程式碼的執行效率(1)
- 【SQL】Oracle避免動態SQL,提高過程執行效率SQLOracle
- 在Oracle裡提高SQL執行效率的三種方法NQOracleSQL
- 提高codeing執行時間效率
- Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和執行效率WindowsLVMSpring Boot編譯
- 提高Python執行效率的5個技巧!Python
- 提高Python執行效率的5個小技巧!Python
- kubernetes執行應用1之Deployment
- Python使用.NET開發的類庫來提高你的程式執行效率Python
- 手把手提高基礎程式碼執行效率
- 使用SAP BSP應用執行VueVue
- Java效能優化:教你提高程式碼執行的效率Java優化
- 教育RPA在教育行業的應用:切實提高教務人員效率行業
- 用 FutureBuilder 提高開發效率Rebuild
- 雲原生應用程式執行時 Kyma 的主要特性介紹
- 爬蟲筆記:提高資料採集效率!代理池和執行緒池的使用爬蟲筆記執行緒
- 使用 Traefik 提高 WebSocket 應用效能Web
- 如何使用iMazing在M1 Mac上執行iOS或iPadOS應用?MaciOSiPad
- switch執行效率
- 提高企業產品交付效率系列(1)—— 企業應用一鍵安裝和升級
- 如何提高使用Java反射的效率?Java反射
- 使用多執行緒提高rest服務效能執行緒REST
- HarmonyOS:使用本地真機執行應用/服務
- MySQL8.0.27 新特性-提高二級索引的建立效率MySql索引
- 一通騷操作,我把SQL執行效率提高了10000000倍!SQL
- 測試人員如何提高API功能測試效率?API
- 有效利用Vim分屏功能提高工作效率
- Java新特性中的Preview功能如何執行和除錯JavaView除錯
- 【譯】使用 Source Link 提高除錯效率除錯
- 多執行緒應用執行緒
- 人人都應該知道的CPU快取執行效率快取
- 用行雲管家實現IT統一運維管理,提高運維效率運維
- 專案經理必備:如何透過管理工具提高執行效率?
- 提高 MongoDB 運維效率的實用技巧MongoDB運維
- 【SQL】Oracle sql語句 minus函式執行效率與join對比SQLOracle函式
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python
- Oracle執行計劃Explain Plan 如何使用OracleAI
- oracle使用outline固定執行計劃事例Oracle