陳泰宇 劉國成 楊長保
摘要:以吉林省糧食作物宏觀決策支持系統作為Oracle9i數據庫系統的應用實例,對Oracle9i數據庫管理系統的性能調整方法與優化策略進行了介紹和探討,這些實用方法和技術有效地解決了Oracle9i 數據庫管理中的關鍵問題,提高了數據庫的存儲能力和運行速度。
關鍵詞:Oracle9i 吉林省糧食作物宏觀決策支持系統 優化與調整 數據庫內存 邏輯存儲 物理存儲 快照
引言
Oracle數據庫管理系統是當今世界上功能最優秀的數據庫, 它具有強大的數據管理維護功能。作為本次項目成果之一的“吉林省糧食作物宏觀決策支持系統”采用Orarcle9i作為空間數據庫。 本系根據吉林省農業氣候資源研究的現狀以及存在的問題,基于GIS技術的農業適宜區劃分及信息化研究,從積溫、水分、日照、土壤肥力和施肥水平五個方面對吉林省鄉鎮農業氣候資源進行資源的特征分析,對其進行量化分析與評價。所有信息數據均存于Oracli9i數據庫中,如何做好Oracle9i 數據庫的性能調整和優化就成為一個十分關鍵的問題。
一. 吉林省糧食作物宏觀決策支持系統中Oracle9i 數據庫的應用
1.1吉林省糧食作物宏觀決策支持系統的由來
農業生態適宜性評價問題,是一個非常典型的模糊問題。項目組結合生態環境的模糊數學評價模型的基礎上,以吉林省從1990年到1997年的多年的平均降水和5月到9月的積溫作為基礎數據,用1:50萬土壤圖來確定每個鄉鎮的土壤類型。結合專家系統和地理信息系統技術對吉林省做了農業生態適宜度以鄉鎮為最小單位的劃分,從而開發了吉林省糧食作物宏觀決策支持系統。此系統基于Webgis,系統構架采用B/S結構,管理層采用C/S技術開發,同時結合數據庫技術、WWW 技術、地理信息技術和遙感技術, 系統提供了友好的人機界面的數據修改和錄入系統,管理者可以根據需要對分區指標數據進行適時改動,隨時得到分區的最新結果。從全局上、宏觀上對糧食作物給出大范圍的有規律性的多方面的認識的信息,便于各級領導部門、農業技術人員、農民,把握全局,進行決策。
1.2 屬性數據庫
屬性數據庫由農業資源信息等基礎數據組成, 包括以下幾類信息數據表
吉林省熟區分區表 地圖編號、 鄉鎮名稱、 適宜區劃分、 熟期類型編碼、 熟期類型、 最小積溫、 最大積溫 、最小降水量 、最大降水量、 最小無霜期、 最大無霜期、 最小日照時數、 最大日照時數
品種描述表 品種名稱、選育單位、選育人員、品種來源、實驗年限、種子性質、植株性狀、果穗性狀、籽粒性狀、品質分析、抗逆性、生育日數、產量結果、播種期、種植密度、施肥、其他條件、制種技術、適應區域
玉米品種搭配方案表 作物、主推品種、搭配品種、新技術方案主推品種、新技術方案搭配品種、作物、積溫類型描述
玉米品種品質分析表 品種名稱、生育日數、產量結果、適應熟區、粗淀粉含量、粗脂肪含量、粗蛋白含量、平均產量、實驗產量
二. 吉林省糧食作物宏觀決策支持系統中Oracle9i數據庫的系統性能調整和優化
本系統的數據庫中存儲了大量的數據, 當用戶進行圖形信息的查詢檢索和修改時, 如何提高數據的運行速度是數據庫調整的一個關鍵問題。對于數據庫的調整和優化可以從以下四個方面進行: 內存使用優化、數據存儲調整、網絡流量調整、使用索引。
2.1數據庫內存優化
Oracle9i數據庫有其專屬的內存區域, Oracle9i使用機器的內存來存放常用信息和所有運行在該機器上的Oracle9i 程序。Oracle9i占用的內存越多, 速度就越快, 效率就越高, 通過對數據庫內存的監控和內存參數的調整和優化可以提高數據庫的運行速度, 提高數據庫的查詢效率。
2.2數據存儲調整
數據庫如何存儲數據, 對查詢性能也有一定的影響。一般可從物理存儲和邏輯存儲兩方面進行。
2.2.1邏輯存儲調整
Oracle9i數據庫中數據以表的形式存在于表空間中, 一個表空間中可以存放多張表。在數據庫的表空間設計時, 建議每一個表空間對應的數據物理文件的大小應該小于1G大小, 因為許多系統的操作系統不支持大于2G大小的文件。同時, 從數據庫的備份角度考慮, 對小文件的備份不僅可以提高備份的速度, 也可以提高備份的安全性。由于創建表空間要用到數據文件, 如果一個系統很大的話, 就需要許多的數據文件。該數據文件的個數受到初始化參數或操作系統的限制, 因此在創建表空間時, 應該考慮系統的限制, 選擇有效的邏輯參數。
對于一個Oracle9i 數據庫而言, 它的最大數目受三個方面限制, 它們分別是: 操作系統能夠打開的最大文件數目, db files 的數目, 建立數據庫時的參數maxdatafiles 數目。在上述參數中, 以操作系統的限制為主, 其次為maxdataflies , 最后為db files。也就是說如果操作系統允許打開的文件數為32 , 而maxdatafiles 設置為48 的話, 系統認為打開的文件數目最大為32 , 如果操作系統允許最大的打開文件數目為64 , maxdatafiles 數目為32 , db files 數目為48 , 那么系統允許打開的文件最大數目為32 , 而不是48 。只有按適合的邏輯參數創建表空間, 才能提高數據庫的存儲能力。
2.2.2物理存儲調整
在一個數據庫安裝完畢之后, 系統中已存在SYSTEM , TOOLS , RBS , USERS , TEMP 等表空間, 用戶也可根據當時的系統的實際情況進行建立新的用戶表空間, 在進行表空間的劃分時, 應使它們盡可能分離并劃分在不同的磁盤上。在系統安裝時, 還應該考慮控制文件和可重做日志文件等這類數據庫的重要組成文件, 要盡可能的將它們分配在不經常使用的盤上。
2.2.2.1表空間設計的原則
表空間設計的原則為: 把由用戶創建的其余表空間同SYSTEM 表空間進行分離, 把系統的數據表空間同索引表空間分離, 把操作頻繁和不經常操作的表劃分在不同的表空間中。對于表空間的設計來說, 大體上又可細劃分為:
* 把用戶數據與數據字典數據分開;
* 把不同應用組的數據分別放在不同的表空間中;
* 為了減少輸入/ 輸出操作對磁盤的競爭, 把不同表空間的數據文件放在不同的硬盤上;
* 分離用戶數據和回滾段的數據以防止某個磁盤出現故障丟失數據。
2.2.2.2碎片整理
存儲新紀錄時, 自由空間碎片會降低運行性能, 若表空間的自由空間被分成碎片, 數據庫可能必須動態和并相鄰的自由盤區來創建一個單獨區間(extent) , 這個區間要大的足以處理新的空間需求。碎片整理可從兩方面進行。第一方面: 段的碎片整理。當創建一個數據庫
對象(一個表或一個索引) 時, 通過用戶缺省值或特定令來為它指定表空間。在表空間中創建一個段以存儲與對象相關的數據。當用戶進行大量的數據插入操作時, 區間會隨著數據的增多不斷擴展, 這些區間由于不相鄰, 從而形成了數據段的碎片, 這會影響數據的存儲和查詢。由于段的初始化參數(initial) 規定其初始化區間的大小, 所以應把這個初始值設置成大的足以處理該段的全部數據。這樣可以提高數據庫的查詢效率。第二方面: 自由盤區的碎片整理。表空間中的自由盤區是表空間中相連自由塊的集合。當一個段撤銷時, 這個段的盤區被釋放并標記為自由盤區。然而, 這些自由盤區并不是總能與相鄰自由盤區重新結合在一起。如果表空間的缺省pctincrease 值不為零, SMON 后臺進程會定期地將相鄰自由盤區和并; 若pctincrease 值為零, 表空間的相鄰自由空間將不會被數據庫自動合并; 對于相鄰的自由盤區, 可運用命令alter tablespace 表空間名coalesce ;來強制合并。
2.3網絡流量控制
隨著數據庫應用程序程度的增加, 許多用戶會通過網絡對數據庫進行遠程訪問并獲取所需要的數據, 這時支持服務器的網絡就成為發送數據給用戶過程中的一個瓶頸。數據庫要通過自身的調整來減少發送數據的網絡軟件包的數量, 減少網絡流量提高遠程查詢速度。
在一個分布式環境中, 每一個數據段存在于一個位置。當發生數據請求時, 便會通過數據庫鏈接從一個遠程數據庫訪問數據。Oracle9i 數據庫提供了一種方法以提高遠程數據訪問速度, 即快照(snapshot) 方式。快照將主數據庫中的源數據復制到多個目標數據庫中。它同時還提供刷新工具, 按指定時間更新目標數據庫。快照是遠程計算機數據放置在本地數據庫系統上的一個只讀副本, 在遠程服務器上存儲的數據一旦發生變化, 數據變動便會發送給本地計算機。運用快照可以減少網絡流量,提高了遠程查詢速度。
2.4使用索引
使用索引可以極大地提高系統檢索性能, 建立索引主要是對經常出現在索引條件中的數據建立索引, 在數據庫中我們為表建立相關的索引, 并將索引與用戶表所在的表空間分開, 用戶表在crop表空間, 索引在index 表空間上, 這樣可以減少并發次數, 加快查詢速度。
三.結束語
作者本人參與了吉林省糧食作物宏觀決策支持系統的設計與開發工作,對于Oracle9i數據庫的性能調整和優化積累了很多經驗, 認為優化數據庫整體的應用性能是提高系統處理速度的一種行之有效的辦法, 但在實際應用中要根據系統的實際情況具體分析, 對優化的方法反復實驗, 最后再確定最終的優化方法, 這樣才能達到較好的優化效果。另外,不管Oracle9i的性能優化與調整到什么程度,都是有限度的,為了實現查詢優化,可以借助XML技術,為了便于客戶端的動態實時查詢和實時交互處理, 采用分區和分層的數據組織方式, 以避免無用信息的傳輸, 減少通訊量, 提高系統的查詢響應時間。服務器端負責收集客戶端的請求信息, 生成查詢語句, 與相應的Oracle9i數據庫連接, 返回數據查詢結果, 進行數據格式的轉換, 數據的打包, 并將處理的結果返回給客戶端。對傳統的關系數據庫中的數據, 可采用Java Servlet 技術和JSP 技術, 收集客戶的查詢需求, 通過JDBC 在數據庫中搜索到相關的數據, 并將其轉換成符合特定DTD 的XML 文檔。 對XML 文檔的數據, 可利用XQL 查詢語言提取用戶需求的數據。
參考文獻:
[1] 楊志和, 劉細武, 王岳斌, 胡虛懷. ORACLE9i數據庫系統性能優化研究與實踐[J]. 計算機應用與軟件 , 2006,(12)
[2] 陳迪, 陳琴. Oracle9i數據庫的性能優化方法[J]. 廣西科學院學報 , 2005,(S1)
[3] 孟凡密,. ORACLE數據庫服務器性能優化技術[J]. 鞍山科技大學學報 , 2005,(06)
[4] 童有奎. 淺談ORACLE數據庫系統性能優化方案[J]. 上海鐵道科技 , 2005,(03)
作者簡介:陳泰宇(1976- ),男,吉林省農安人,講師,研究生。主要從事軟件設計與開發工作。