張偉偉,高 峰,樂(lè) 恒
(1.寧波市規(guī)劃與地理信息中心,浙江 寧波 315042)
地理空間數(shù)據(jù)庫(kù)性能優(yōu)化原則研究
張偉偉1,高 峰1,樂(lè) 恒1
(1.寧波市規(guī)劃與地理信息中心,浙江 寧波 315042)
以提高企業(yè)級(jí)地理空間數(shù)據(jù)庫(kù)效率為出發(fā)點(diǎn),總結(jié)了Oracle數(shù)據(jù)庫(kù)與ArcSDE軟件性能優(yōu)化的原則,結(jié)合實(shí)際給出了數(shù)據(jù)庫(kù)性能優(yōu)化的一些建議,并將上述原則應(yīng)用于海量地理空間數(shù)據(jù)庫(kù)的優(yōu)化,有效提升了數(shù)據(jù)庫(kù)性能。
地理空間數(shù)據(jù)庫(kù);Oracle性能優(yōu)化;ArcSDE性能優(yōu)化
地理信息系統(tǒng)是當(dāng)前智慧城市建設(shè)的核心技術(shù),其應(yīng)用已延伸到城市建設(shè)與管理的各個(gè)角落,范圍覆蓋了規(guī)劃、國(guó)土、交通、電力、水利等領(lǐng)域。隨著智慧城市建設(shè)的逐步推進(jìn),積累的空間數(shù)據(jù)種類日益豐富,數(shù)據(jù)規(guī)模也直線上升,如何高效管理和使用海量空間數(shù)據(jù),實(shí)現(xiàn)空間數(shù)據(jù)庫(kù)的高性能部署與安全運(yùn)維管理是項(xiàng)目設(shè)計(jì)與運(yùn)維人員關(guān)注的熱點(diǎn)。由于空間數(shù)據(jù)的復(fù)雜性與非結(jié)構(gòu)化特征,使得地理空間數(shù)據(jù)庫(kù)的存儲(chǔ)與管理也相對(duì)復(fù)雜。圍繞著空間數(shù)據(jù)庫(kù)技術(shù)的研究主要從空間數(shù)據(jù)庫(kù)的理論、設(shè)計(jì)、應(yīng)用及性能優(yōu)化4個(gè)方面開(kāi)展。文獻(xiàn)[1,2]從空間數(shù)據(jù)庫(kù)的理論角度描述了空間數(shù)據(jù)庫(kù)的基本特征、結(jié)構(gòu)及內(nèi)容;文獻(xiàn)[1,3,4]從空間數(shù)據(jù)庫(kù)設(shè)計(jì)方面論述了空間數(shù)據(jù)庫(kù)管理系統(tǒng)的技術(shù)革新歷程及空間數(shù)據(jù)庫(kù)的常用模型;文獻(xiàn)[3,5-8]描述了使用空間數(shù)據(jù)庫(kù)技術(shù)解決特定領(lǐng)域問(wèn)題的典型案例;文獻(xiàn)[9,10]從空間數(shù)據(jù)庫(kù)的存儲(chǔ)、運(yùn)維角度總結(jié)了數(shù)據(jù)庫(kù)性能提升的方法。
地理空間數(shù)據(jù)的管理經(jīng)歷了由傳統(tǒng)的文件系統(tǒng)方式到對(duì)象關(guān)系數(shù)據(jù)庫(kù)方式的過(guò)程,在數(shù)據(jù)管理能力上,從小數(shù)據(jù)量管理向海量數(shù)據(jù)管理發(fā)展[3]。在當(dāng)前大數(shù)據(jù)背景下,針對(duì)空間圖形數(shù)據(jù)與屬性數(shù)據(jù)統(tǒng)一存儲(chǔ)與管理的應(yīng)用需求,常用的兩種解決方案是:①空間數(shù)據(jù)庫(kù)擴(kuò)展技術(shù),如Oracle數(shù)據(jù)庫(kù)的Oracle Spatial和Informix數(shù)據(jù)庫(kù)的Spatial DataBlade技術(shù);②中間件技術(shù),如ESRI公司的ArcSDE和MapInfo公司的SpatialWare等產(chǎn)品。數(shù)據(jù)庫(kù)+中間件(空間數(shù)據(jù)引擎)的空間數(shù)據(jù)存儲(chǔ)與管理解決方案占據(jù)主流,其中以O(shè)racle數(shù)據(jù)庫(kù)+ArcSDE中間件模式最為常用,本文也以此為例,總結(jié)了地理空間數(shù)據(jù)庫(kù)性能優(yōu)化的主要技術(shù)原則。
商業(yè)數(shù)據(jù)庫(kù)與GIS中間件技術(shù)相結(jié)合改變了傳統(tǒng)GIS的應(yīng)用模式,為空間數(shù)據(jù)一體化管理提供了高效、穩(wěn)定的解決方案,較好地解決了多用戶在線編輯、數(shù)據(jù)完整性和數(shù)據(jù)安全等核心問(wèn)題。在Oracle+ArcSDE的存儲(chǔ)模式下,Oracle數(shù)據(jù)庫(kù)是數(shù)據(jù)存儲(chǔ)的容器,ArcSDE中間件則是空間數(shù)據(jù)的存取通道。圖1是Oracle數(shù)據(jù)庫(kù)+ArcSDE中間件的體系結(jié)構(gòu)[11]。
圖1 ArcSDE軟件體系結(jié)構(gòu)
Oracle數(shù)據(jù)庫(kù)系統(tǒng)由實(shí)例和數(shù)據(jù)庫(kù)兩大部分組成[12],如圖2所示。數(shù)據(jù)庫(kù)實(shí)例優(yōu)化的出發(fā)點(diǎn)是減少磁盤(pán)讀寫(xiě)次數(shù),數(shù)據(jù)庫(kù)文件優(yōu)化的出發(fā)點(diǎn)是平衡磁盤(pán)讀寫(xiě)壓力。
圖2 Oracle數(shù)據(jù)庫(kù)體系結(jié)構(gòu)
2.1 數(shù)據(jù)庫(kù)實(shí)例優(yōu)化
數(shù)據(jù)庫(kù)實(shí)例由共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)等組成[12],其優(yōu)化方法重點(diǎn)有以下幾個(gè)方面。
1)共享池優(yōu)化。共享池由兩個(gè)緩沖區(qū)組成,分別是庫(kù)緩沖區(qū)和數(shù)據(jù)字典緩沖區(qū),其作用是存放頻繁使用的SQL語(yǔ)句和數(shù)據(jù)字典對(duì)象。要提高共享池命中率需遵循以下原則:①SQL語(yǔ)句類型較多,適當(dāng)增加共享池容量,以減少SQL語(yǔ)句硬解析。②將重用率高的SQL語(yǔ)句保留在庫(kù)緩存中,以提高庫(kù)緩存命中率。③ 為大規(guī)模PL/SQL程序?qū)ο箢A(yù)留空間,增大共享池保留區(qū)大小,將這些較大對(duì)象放入其中。④將一些常用的數(shù)據(jù)字典保留在數(shù)據(jù)字典緩沖區(qū)。
2)數(shù)據(jù)緩沖區(qū)優(yōu)化。數(shù)據(jù)緩沖區(qū)是用于存儲(chǔ)用戶請(qǐng)求的數(shù)據(jù),如果請(qǐng)求的數(shù)據(jù)已經(jīng)在緩沖區(qū)中,Oracle數(shù)據(jù)庫(kù)會(huì)直接從緩沖區(qū)讀取該數(shù)據(jù)返回給用戶,而不需要重新從磁盤(pán)文件讀取,因此,在這種機(jī)制下,數(shù)據(jù)查詢所需時(shí)間將以幾個(gè)數(shù)量級(jí)減少。其優(yōu)化主要遵循以下幾個(gè)原則:①對(duì)讀寫(xiě)較為頻繁的數(shù)據(jù)庫(kù)適當(dāng)增加其緩沖區(qū)容量。②使用多個(gè)緩沖池,并將不同訪問(wèn)模式的數(shù)據(jù)對(duì)象放到不同緩沖池中,例如將規(guī)模較大的表存放在recycle pool,以免將部分熱塊從default pool中移除。③將一些常用且規(guī)模較小的表保留在內(nèi)存中。
3)日志緩沖區(qū)優(yōu)化。日志緩沖區(qū)用于記錄數(shù)據(jù)塊的修改信息。數(shù)據(jù)編輯操作會(huì)產(chǎn)生重做記錄,Oracle數(shù)據(jù)庫(kù)系統(tǒng)默認(rèn)先將這些重做記錄寫(xiě)入日志緩沖區(qū),在日志緩沖區(qū)達(dá)到一定大小或發(fā)生檢查點(diǎn)時(shí),再將其內(nèi)容寫(xiě)入磁盤(pán)上的日志文件。其優(yōu)化主要遵循以下兩個(gè)原則:①增加讀寫(xiě)較為頻繁的數(shù)據(jù)庫(kù)日志緩沖區(qū)大小。②降低檢查點(diǎn)發(fā)生的頻率,減少寫(xiě)日志文件的次數(shù)。
4)Java池。當(dāng)應(yīng)用程序需要在數(shù)據(jù)庫(kù)中運(yùn)行Java存儲(chǔ)過(guò)程時(shí)需要使用Java池,此池用作實(shí)例化Java對(duì)象所需的堆空間。因此,對(duì)于用到Java語(yǔ)言編寫(xiě)存儲(chǔ)過(guò)程的數(shù)據(jù)庫(kù)則需要適當(dāng)調(diào)整其容量。
5)大型池。如果使用的數(shù)據(jù)庫(kù)服務(wù)器是共享模式或并行模式,或者將數(shù)據(jù)備份到磁帶設(shè)備時(shí),需要對(duì)大型池進(jìn)行適當(dāng)調(diào)整。
2.2 數(shù)據(jù)庫(kù)文件優(yōu)化
Oracle數(shù)據(jù)庫(kù)文件由數(shù)據(jù)文件、控制文件、日志文件3大文件系統(tǒng)組成,具體優(yōu)化原則如下:
1)數(shù)據(jù)文件存儲(chǔ)優(yōu)化。數(shù)據(jù)文件存儲(chǔ)優(yōu)化的出發(fā)點(diǎn)是通過(guò)重新組織數(shù)據(jù)文件,實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)壓力分流,提升數(shù)據(jù)庫(kù)并發(fā)訪問(wèn)效率。數(shù)據(jù)文件存儲(chǔ)優(yōu)化可以將大數(shù)據(jù)文件拆分,并將熱點(diǎn)數(shù)據(jù)文件存放在不同磁盤(pán)來(lái)實(shí)現(xiàn)。有效的數(shù)據(jù)文件拆分與分開(kāi)存儲(chǔ)需要從整體上考慮兩個(gè)因素:數(shù)據(jù)量和訪問(wèn)頻率,訪問(wèn)頻率高且規(guī)模大的數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)文件中,并存放在不同的物理硬盤(pán)。
2)重做日志文件存儲(chǔ)優(yōu)化。重做日志文件存儲(chǔ)優(yōu)化的出發(fā)點(diǎn)是提高寫(xiě)日志的效率,并保障數(shù)據(jù)庫(kù)的安全穩(wěn)定。寫(xiě)日志效率可以通過(guò)創(chuàng)建多組重做日志并保證日志文件容量足夠大來(lái)提高,這樣可避免頻繁的日志切換;提高數(shù)據(jù)庫(kù)安全性可以通過(guò)在日志文件組中增加組成員,并將這些成員存放在不同物理磁盤(pán)來(lái)實(shí)現(xiàn),組成員的數(shù)據(jù)內(nèi)容完全相同,當(dāng)一塊物理磁盤(pán)的日志文件損壞后,數(shù)據(jù)庫(kù)實(shí)例仍能夠訪問(wèn)其他物理磁盤(pán)的日志文件,從而保證數(shù)據(jù)庫(kù)正常運(yùn)行。
重做日志文件組數(shù)和組成員數(shù)過(guò)多會(huì)造成寫(xiě)日志耗費(fèi)較多系統(tǒng)資源,一般情況下,重做日志文件組數(shù)為3組且每組成員個(gè)數(shù)為3個(gè)較為合適。
3)控制文件存儲(chǔ)優(yōu)化??刂莆募鎯?chǔ)調(diào)整的出發(fā)點(diǎn)是保障其安全,可以通過(guò)復(fù)制多個(gè)控制文件到不同物理磁盤(pán)來(lái)實(shí)現(xiàn),當(dāng)一個(gè)物理磁盤(pán)的控制文件損壞時(shí),數(shù)據(jù)庫(kù)實(shí)例仍能夠訪問(wèn)其他磁盤(pán)的控制文件,從而保證數(shù)據(jù)庫(kù)正常運(yùn)行。
理論上控制文件個(gè)數(shù)最多為8個(gè),但并不是越多越好,因?yàn)楫?dāng) Oracle 更新控制文件時(shí),會(huì)將所有控制文件全部進(jìn)行更新,影響數(shù)據(jù)庫(kù)性能,建議控制文件復(fù)制3份并存放在不同的物理磁盤(pán)。
基于Oracle+ArcSDE模式存儲(chǔ)的空間數(shù)據(jù)在數(shù)據(jù)庫(kù)中由一系列數(shù)據(jù)表共同組成,在默認(rèn)情況下,所有系統(tǒng)表和數(shù)據(jù)表都統(tǒng)一存儲(chǔ)在一個(gè)表空間。空間索引、數(shù)據(jù)庫(kù)版本編輯等因素也會(huì)影響數(shù)據(jù)庫(kù)并發(fā)訪問(wèn)性能。
1)表存儲(chǔ)優(yōu)化。通過(guò)ArcSDE存儲(chǔ)的空間數(shù)據(jù)由 B表(Business Table)、F表(Feature Table)、S表(Spatial Index Table)和Oracle索引表共同組成[12],默認(rèn)情況下這些表存儲(chǔ)在同一個(gè)數(shù)據(jù)文件,這樣會(huì)導(dǎo)致數(shù)據(jù)讀寫(xiě)過(guò)程中會(huì)出現(xiàn)較多等待事件,降低讀寫(xiě)效率。ArcSDE數(shù)據(jù)存儲(chǔ)遵循減少I/O沖突原則,具體解決方法是將空間數(shù)據(jù)的B表、F表、S表和Oracle索引分配到不同的數(shù)據(jù)文件,并按照讀寫(xiě)頻率分不同物理磁盤(pán)組合存放。
2)空間索引優(yōu)化。ArcSDE空間數(shù)據(jù)庫(kù)體系使用空間索引機(jī)制,這樣能夠有效提高數(shù)據(jù)訪問(wèn)效率,對(duì)于更新較為頻繁的數(shù)據(jù),需要定期更新空間索引,對(duì)一些數(shù)據(jù)量較大的要素類建立二級(jí)索引。
3)版本管理優(yōu)化。版本數(shù)據(jù)庫(kù)在不斷編輯過(guò)程中會(huì)產(chǎn)生較多的冗余信息,影響數(shù)據(jù)庫(kù)查詢、編輯效率,需要使用版本壓縮技術(shù)清除冗余信息。
地理空間數(shù)據(jù)庫(kù)性能直接影響著各應(yīng)用系統(tǒng)的數(shù)據(jù)讀寫(xiě)效率,默認(rèn)的軟件配置在性能表現(xiàn)方面并不理想,必須對(duì)其進(jìn)行優(yōu)化才能發(fā)揮其最大作用。筆者以O(shè)racle數(shù)據(jù)庫(kù)和ArcSDE中間件的體系結(jié)構(gòu)為基礎(chǔ),以減少磁盤(pán)讀寫(xiě)次數(shù)和平衡磁盤(pán)讀寫(xiě)壓力為原則,分析了各組成部分對(duì)地理空間數(shù)據(jù)庫(kù)性能的影響,并結(jié)合實(shí)踐經(jīng)驗(yàn)提出了整體的性能優(yōu)化原則。
地理空間數(shù)據(jù)庫(kù)規(guī)模不斷擴(kuò)大,其應(yīng)用需求也在不斷變化,這就決定了地理空間數(shù)據(jù)庫(kù)的性能優(yōu)化將是一項(xiàng)系統(tǒng)的、長(zhǎng)期的工程。本文給出的這些方法只是一些指導(dǎo)性的原則,并沒(méi)有給出各參數(shù)的具體數(shù)值,應(yīng)用時(shí)需要根據(jù)各階段的數(shù)據(jù)資源特點(diǎn)及其訪問(wèn)情況進(jìn)行調(diào)整。
[1] 龔健雅.空間數(shù)據(jù)庫(kù)管理系統(tǒng)的概念與發(fā)展趨勢(shì)[J].測(cè)繪科學(xué), 2001,26(3):4-9
[2] 東凱,方裕.空間數(shù)據(jù)庫(kù)模型概念與結(jié)構(gòu)研究[J].地理信息世界, 2004,2(2): 8-16
[3] 李德仁,彭明軍,邵振峰.基于空間數(shù)據(jù)庫(kù)的城市網(wǎng)格化管理與服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2006,31(6):471-475
[4] 龔建雅,朱欣焰.面向?qū)ο蠹煽臻g數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].武漢測(cè)繪科技大學(xué)學(xué)報(bào),2000,25(4):289-293
[5] 譚德寶,程學(xué)軍.基于ArcSDE+ Oracle 9i 的防洪減災(zāi)綜合數(shù)據(jù)庫(kù)的構(gòu)建及應(yīng)用[J]. 武漢大學(xué)學(xué)報(bào)(信息科學(xué)版), 2006, 31(1): 90-93
[6] 張旭晴,于小平,楊國(guó)東,等.基于 ArcSDE的空間基礎(chǔ)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2008,30(6):79-81
[7] 熊麗華,楊峰.基于ArcSDE的空間數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2004, 24(3):90-91
[8] 楊金玲,曹先革,劉璐璐.基于ArcSDE的數(shù)字城市規(guī)劃空間數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2010,33(4):16-18
[9] 鄧中亮,馬英?。贠racle 數(shù)據(jù)庫(kù)與ArcSDE的空間數(shù)據(jù)存取優(yōu)化[J].軟件,2011, 32(2):78-80
[10] 馬妮,李維功.ArcSDE for Oracle優(yōu)化實(shí)踐[J].測(cè)繪通報(bào),2007(10):50-53
[11] WEST R.Understanding ArcSDE: GIS by ESRI[M].Esri Press,2001
[12] 蓋國(guó)強(qiáng),馮春培,葉梁,等.Oracle 數(shù)據(jù)庫(kù)性能優(yōu)化[M].北京:人民郵電出版社, 2005
本 刊 聲 明
為適應(yīng)我國(guó)信息化建設(shè),擴(kuò)大本刊及作者知識(shí)信息交流渠道,本刊數(shù)據(jù)已被《中國(guó)核心期刊(遴選)數(shù)據(jù)庫(kù)》《CNKI 中國(guó)期刊全文數(shù)據(jù)庫(kù)》和《中文科技期刊數(shù)據(jù)庫(kù)(全文版)》等收錄。在《地理空間信息》發(fā)表的論文均默認(rèn)將其在著作權(quán)保護(hù)期內(nèi)的復(fù)制權(quán)、發(fā)行權(quán)、匯編權(quán)、翻譯權(quán)以及網(wǎng)絡(luò)傳播權(quán)授權(quán)給《地理空間信息》編輯部,編輯部可將上述權(quán)利轉(zhuǎn)授給第三方使用。作者不再許可他人以任何形式使用該篇論文,但可以在其后續(xù)作品中引用(或翻譯)該論文中部分內(nèi)容或?qū)⑵鋮R編在作者的非期刊類文集中。如不同意,請(qǐng)事先聲明,本刊另作處理。其文章的著作權(quán)使用費(fèi)與本刊稿酬一次性給付(已在收取發(fā)表費(fèi)時(shí)折減和換算為雜志贈(zèng)閱)。
(本刊編輯部)
P208
B
1672-4623(2016)12-0021-03
10.3969/j.issn.1672-4623.2016.12.008
張偉偉,工程師,研究方向?yàn)榈乩砜臻g數(shù)據(jù)管理、空間數(shù)據(jù)挖掘與應(yīng)用。
2015-01-21。
項(xiàng)目來(lái)源:寧波市規(guī)劃局2012年基礎(chǔ)測(cè)繪指令性項(xiàng)目。