程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle平台應用數據庫系統的設計與開發

Oracle平台應用數據庫系統的設計與開發

編輯:關於Oracle數據庫

  Oracle是目前應用最廣泛的數據庫系統。一個完整的數據庫系統包括系統硬件、操作系統、網絡層、DBMS(數據庫管理系統)、應用程序與數據,各部分之間是互相依賴的,對每個部分都必須進行合理的配置、設計和優化才能實現高性能的數據庫系統。本文討論筆者使用Oracle開發局域網中、小型數據庫應用中,系統硬件的選擇與使用、應用數據庫系統設計與開發方面的一些心得和建議。應用數據庫系統包含應用數據庫和應用兩方面的內容,應用數據庫就是生產數據庫,與系統數據庫相對。

  系統硬件的選擇與使用

  與數據庫系統密切相關的硬件主要有CPU、內存、集群、存儲設備等,這裡不對集群進行討論。

  1、CPU

  CPU的數目和速度直接影響數據庫操作的速度,Oracle數據庫提供並行查詢選項,允許SQL操作以協同方式在多個CPU上執行,可以很大程度的發揮多CPU的性能。為系統添加CPU前,首先要對應用程序的SQL代碼做優化,提高應用程序的效率,質量低劣的應用可能會引起CPU資源的無謂的消耗;其次,要了解操作系統對CPU數目的限制及系統的可擴展性。在系統CPU資源已定的情況下,要對各類應用進行分析,在保證關鍵應用正常運行的前提下,盡可能將大量占用CPU資源的應用放在系統相對空閒的時候進行。良好的工作調度可以有效減少對CPU的競爭使用,加快系統的響應時間。

  2、內存

  數據庫系統中,應保證有足夠大的內存。在UNIX系統中,如果系統的物理內存小於1GB,可將交換區的大小設為內存的4倍,否則,可設為內存的2倍,交換區要放在磁盤速度最快的硬盤上。Oracle 的SGA區大小直接關系到數據庫操作的性能,一般來說,SGA區的大小可設為系統可用內存的55%到57%,SGA區過多占用系統內存反而會降低性能。在應用系統運行中,應定期監測系統的內存使用情況,對關鍵應用進行分析,根據應用適時調整SGA區各部分的大小。Oracle9i可在不重新啟動數據庫的情況下修改SGA區的參數,實時改變SGA區的大小。

  3、存儲設備

  在網絡時代,信息資源的積累和廣泛應用對數據存儲技術的發展提出了更大的挑戰,數據存儲模式從傳統的總線連接模式進入了網絡存儲模式。但存儲設備依然是硬盤、磁帶(帶庫)、磁盤陣列,在中、小型數據庫應用中傳統存儲模式仍占主導地位。

  磁盤I/O是數據庫操作的瓶頸之一,磁盤的合理選擇和使用在數據庫系統中顯得尤為重要。在最初做數據庫系統規劃時,應充分考慮到系統的容量和預期的增長,盡可能為以後的擴展留足空間。在硬盤和磁盤陣列的選擇與使用中,應注意以下幾點:

  ·選擇支持熱插拔功能的硬盤,這樣在出現硬盤Oracle 平台應用數據庫系統的設計與開發失敗時,可以在系統正常運行的情況下更換硬盤;

  ·不要選擇太大的硬盤,切記對Oracle 應用程序,1~4GB大小的硬盤是比較合適的,最好購買大量的中小型硬盤,這樣在配置RAID時可提供更大的靈活性;

  ·如果選用了磁盤陣列,對於Oracle數據庫應用,如果經費能夠支持,RAID 0+1是最佳的配置方法。在RAID 5中,讀操作性能得到了一定的改善,但寫性能損失很大,如果某個硬盤失敗,硬盤重建的工作量非常大,RAID 5 適用於DSS(決策支持系統)應用,對OLTP(聯機事物處理)應用不太合適;

  ·在實現RAID時,要正確地選擇分條的大小,決定分條大小的三個主要因素是:應用程序的特性(DSS、OLTP、批處理)、操作系統與數據庫的數據塊大小、磁盤陣列中的硬盤數目。數據庫的數據塊大小應是操作系統數據塊大小的整數倍,同樣分條大小也必須是操作系統數據塊大小的整數倍。如果使用裸設備,分條大小應是操作系統物理數據塊的大小。分條可按照水平方向進行,也可按照垂直方向進行。水平分條跨越每個硬盤控制器進行,垂直分條跨越整個硬盤集合進行,分條集合中的成員數應不大於硬盤控制器數。OLTP應用程序,數據訪問的數據量不大,一般可選擇32KB 或64KB 的分條大小,而DSS應用程序訪問的數據量大,可考慮使用64KB、128KB或256KB的分條大小。

  應用數據庫的設計與開發

  Oracle數據庫軟件安裝和配置完成後,就進入了應用數據庫的設計階段,應用數據庫設計包括邏輯設計與物理設計。合理的邏輯設計會大大提高數據庫的性能,增強數據庫的可維護性。在設計中根據應用,抽象出實體關系模型,將實體關系圖映射為標准化(數據完整、與應用無關、存儲優化)的關系模型(數據庫對象),當前有一些輔助工具(Oracle Designer等)來實現實體關系圖到SQL代碼的映射;數據庫的物理設計就是數據庫對象的存儲設計,即如何為數據庫對象分配存儲空間。

  在進行數據庫對象的設計前,數據庫的管理和開發人員對應用和應用的數據及其應用關系要有一個詳盡的理解,根據應用進行數據庫對象的規劃和設計,大概包含以下幾個方面:

  ·確定需建立的數據庫用戶,明確用戶的系統權限和表空間限額,為用戶設計資源限制profile;

  ·確定應用數據應分多少個表進行設計,各表分別屬於的用戶,各用戶對各個表的操作權限;

  ·明確各表的結構,確定表的主鍵及約束;

  ·明確哪些表是應用運行的關鍵表,哪些是事務表;

  ·分析哪些表是主表,哪些表是從表,確定表和表之間的外鍵約束,選擇合適的表作為表連接的驅動表;

  ·根據應用,確定在哪些表上對哪些列建立合適的索引;

  ·根據表和索引的設計,確定要創建的表空間和回滾段,為表空間和回滾段選擇合適的磁盤,盡可能創建本地管理的表空間,減少數據庫空間管理方面的工作;

  ·明確需要編寫的觸發器及過程;

  ·為數據庫對象選擇備份和恢復策略。

  在數據庫設計階段,有時未必能完全確定合適的數據庫對象的特征,應用設計和開發中還可能發現不合適的地方,需要回過頭來進行調整和修改。但設計階段的工作越細致,出現問題的可能性就越小,工作的效率就越高。

  創建數據庫對象時,要根據數據庫對象的特點,結合存儲設備的大小、數量及速度等,對數據庫對象分類進行存儲,最大限度地消除或減少資源競爭。在數據庫對象創建時主要應遵循以下原則:

  ·應用數據應放在單獨的表空間,不要將應用數據放在系統表空間,為防止無意的使用系統表空間,將應用用戶的系統表空間限額設為0。

  ·索引和表應放在位於不同硬盤上的不同的表空間,這樣會提高數據庫操作的速度。

  ·需要同時被訪問的表要分開存放,利於並發訪問的實施。

  ·如果磁盤數量有限,可把不常聯合訪問的表放在相同的磁盤上。

  ·預分配的原則。創建數據庫對象(表空間、回滾段、表、索引等)時,根據對象的情況設置合適的storage參數非常重要。創建對象設計時,對對象的容量和預期的增長有一個估計,這樣才能確定存儲參數的大小。一般來說,應預先給表和索引等數據庫對象分配足夠的空間,數據庫段不要太多地做動態擴展,因為會影響數據庫性能。一個段(segment)由一個區(extent)構成是最理想的,initial 參數可以稍大一點,如果可能,可設為最大容量的大小,initial必須是db_block_size的整數倍;next參數的設置比較靈活,根據應用進行相應的設置,但也必須是db_block_size的整數倍;為了減少數據庫碎片的產生,pctincrease參數應該盡量設為0;更新操作比較少的段,pctfree要設置得小一點,更新操作很多的段要設置得大一些;inittrans和freelists的值要相等,大小與並發事務數相關。

  ·分而治之的原則。大的數據庫表和索引可考慮進行分區存放,不同的分區可位於不同的磁盤上,更好地均衡I/O。Oracle可以只對表的某些分區進行查詢,這樣會提高查詢的速度;可對分區進行數據的刪除、裝載,還可以移動分區,對表的管理和控制具有更大的靈活性;可以有更多的策略選擇,更好地執行備份和恢復操作。注意,對某些分區進行操作後,在Oracle8i下必須重建全局索引。

  ·大小和增長趨勢類似的表最好放在相同的表空間,可以有效控制硬盤碎片的產生,提高空閒塊的可重用性。

  ·相同備份和恢復策略的表最好放在同一個表空間,這樣有助於備份和恢復工作的完成。

  ·對響應時間要求苛刻的應用所訪問的對象放在速度快的磁盤上。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved