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