劉宏志
(中國(guó)東方電氣集團(tuán)有限公司,四川 成都 611731)
SAP架構(gòu)下Oracle數(shù)據(jù)庫(kù)的性能優(yōu)化研究
劉宏志
(中國(guó)東方電氣集團(tuán)有限公司,四川 成都 611731)
隨著信息技術(shù)的不斷發(fā)展,SAP系統(tǒng)被越來(lái)越多的企業(yè)運(yùn)用。Oracle作為SAP系統(tǒng)使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),其性能對(duì)SAP系統(tǒng)有著重要影響。文章主要對(duì)SAP架構(gòu)下Oracle數(shù)據(jù)庫(kù)的主要性能進(jìn)行了研究,并提出了調(diào)整和優(yōu)化的措施。
SAP架構(gòu);Oracle數(shù)據(jù)庫(kù);系統(tǒng)性能;優(yōu)化
SAP R/3系統(tǒng)是一種典型的3層架構(gòu)的系統(tǒng),除了應(yīng)用服務(wù)器和展現(xiàn)層外,數(shù)據(jù)庫(kù)對(duì)其性能有著重要影響。Oracle作為業(yè)界最主流的數(shù)據(jù)庫(kù)系統(tǒng)之一,在SAP R/3系統(tǒng)中應(yīng)用廣泛。但我國(guó)的數(shù)據(jù)庫(kù)規(guī)模呈逐年上升趨勢(shì),并且連接數(shù)量也有增無(wú)減,導(dǎo)致Oracle數(shù)據(jù)庫(kù)的功能不能很好地發(fā)揮以往性能。為使Oracle數(shù)據(jù)庫(kù)能夠繼續(xù)發(fā)揮作用,需要對(duì)系統(tǒng)進(jìn)行優(yōu)化升級(jí),主要從服務(wù)器以及應(yīng)用程序和網(wǎng)絡(luò)3方面入手,對(duì)服務(wù)器進(jìn)行調(diào)整,使之在有限的硬件資源條件下,達(dá)到性能最優(yōu)[1]。
服務(wù)器對(duì)Oracle數(shù)據(jù)庫(kù)性能有著直接影響。服務(wù)器設(shè)置不合理將會(huì)直接降低Oracle的運(yùn)行效率,也就是說(shuō)服務(wù)器是整個(gè)系統(tǒng)的基礎(chǔ),如果基礎(chǔ)沒(méi)有打好,整個(gè)數(shù)據(jù)庫(kù)就不能真正發(fā)揮作用,那么系統(tǒng)再怎樣優(yōu)化也無(wú)濟(jì)于事。
首先,要知道Oracle數(shù)據(jù)庫(kù)按照什么樣的原則為指導(dǎo),對(duì)服務(wù)器資源進(jìn)行科學(xué)合理的分配:盡量使Oracle可使用的資源最大化。如果有條件,盡量不使Oracle數(shù)據(jù)庫(kù)和SAP系統(tǒng)同時(shí)使用同一個(gè)服務(wù)器,盡可能使Oracle占有本服務(wù)器最多的資源。
其次,對(duì)服務(wù)器里的內(nèi)存加以優(yōu)化,對(duì)其進(jìn)行調(diào)整,盡量減少虛擬內(nèi)存的使用。當(dāng)物理內(nèi)存不能滿足Oracle的要求時(shí),操作系統(tǒng)會(huì)調(diào)用虛擬內(nèi)存對(duì)物理內(nèi)存中的信息進(jìn)行頁(yè)面替換,這將引起大量的磁盤I/O操作,使整個(gè)服務(wù)器的性能下降。只有使服務(wù)器中的內(nèi)存增大了,才能減少虛擬內(nèi)存對(duì)物力內(nèi)存的占用。
第三,對(duì)Oracle進(jìn)程進(jìn)行參數(shù)調(diào)整,使優(yōu)先級(jí)統(tǒng)一為相同參數(shù)。因?yàn)樵贠racle數(shù)據(jù)庫(kù)系統(tǒng)中,所有的后臺(tái)和前臺(tái)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程執(zhí)行的都是同等重要的工作,需要同等的優(yōu)先級(jí)。
內(nèi)存參數(shù)的調(diào)整主要是指Oracle數(shù)據(jù)庫(kù)的系統(tǒng)全局區(qū)(System Global Area,SGA)的調(diào)整。作為Oracle數(shù)據(jù)庫(kù)的核心部分,SGA是對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行快速訪問(wèn)的一個(gè)系統(tǒng)區(qū)域,可以被服務(wù)器和用戶共享[2]。共享池以及數(shù)據(jù)和日志緩沖區(qū)域組成了SGA。SGA在日常運(yùn)行中須不停地對(duì)數(shù)據(jù)進(jìn)行釋放和配置,只有把SGA設(shè)置在服務(wù)器的物力內(nèi)存之中,才能盡可能快地對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)使用。內(nèi)存的調(diào)整主要是指調(diào)整組成SGA的內(nèi)存區(qū)域的大小來(lái)提高系統(tǒng)性能,具體由SGA_MAX_SIZE,DB_CASHE_SIZE,PGA_ AGGREGATF_TARGET,SHARRED_POOL_SIZE 4個(gè)參數(shù)控制。在對(duì)SGA進(jìn)行物理內(nèi)存設(shè)置時(shí),只要按照一般原則設(shè)置即可:通常SGA占據(jù)物理內(nèi)存的50%~70%左右。服務(wù)器物理內(nèi)存越大,給SGA的比例也可以越高一些。共享池主要存儲(chǔ)如SQL,PL/SQL存儲(chǔ)過(guò)程及包、數(shù)據(jù)字典等,對(duì)于SAP系統(tǒng)較為固定,設(shè)置時(shí)不需超過(guò)20 G,富余的內(nèi)存可以分配給數(shù)據(jù)緩沖區(qū)。
數(shù)據(jù)庫(kù)的數(shù)據(jù)最終要存儲(chǔ)在物理磁盤上。磁盤I/O操作是數(shù)據(jù)庫(kù)性能最重要的方面,它是系統(tǒng)消耗最大的Oracle數(shù)據(jù)庫(kù)操作。為了避免與I/O相關(guān)的性能瓶頸,監(jiān)控磁盤I/O并對(duì)其進(jìn)行調(diào)整非常重要。影響磁盤I/O的性能的主要原因有磁盤競(jìng)爭(zhēng)、I/O次數(shù)過(guò)多和數(shù)據(jù)塊空間的分配管理[3]。磁盤I/O的調(diào)優(yōu)主要包括文件獨(dú)立放置、使用磁盤陣列、使用分區(qū)、應(yīng)用裸設(shè)備4個(gè)方法[4]。除了裸設(shè)備外,前3個(gè)方法的核心思想都是將數(shù)據(jù)文件放置在不同的物理磁盤上,從而利用并行訪問(wèn)提升磁盤讀寫的速度,減少不同進(jìn)程對(duì)磁盤競(jìng)爭(zhēng)的幾率。而裸設(shè)備指的是未經(jīng)格式化的磁盤分區(qū),Oracle可以對(duì)其進(jìn)行讀和寫操作,而沒(méi)有緩沖開(kāi)銷。裸設(shè)備可以用于寫操作頻繁、順序訪問(wèn)的數(shù)據(jù)和回滾日志文件,但不能用在備份程序中。
通常Oracle在回滾段將數(shù)據(jù)修改前的值保存在內(nèi)?;貪L段包括3個(gè)作用:其一是事務(wù)回滾作用:數(shù)據(jù)庫(kù)可以從回滾段找回?cái)?shù)據(jù)改變前的數(shù)據(jù)記錄,也就是說(shuō)回滾段具有原始數(shù)據(jù)讀取功能;事務(wù)恢復(fù)作用:如果對(duì)數(shù)據(jù)的后期操作失敗,那么可以在下次打開(kāi)Oracle時(shí)將未提交的原始數(shù)據(jù)利用回滾段中的重做日志文件對(duì)其進(jìn)行恢復(fù);讀一致性功能:如果回話未對(duì)修改過(guò)的數(shù)據(jù)提交保存,那么其他會(huì)話不會(huì)進(jìn)行改變,但是其他會(huì)話如果修改了查詢所需的數(shù)據(jù)資源,那么這個(gè)會(huì)話在進(jìn)行查詢操作時(shí)數(shù)據(jù)就會(huì)改變,Oracle將利用回滾段的數(shù)據(jù)前影像來(lái)構(gòu)造一個(gè)讀一致性視圖。由此可見(jiàn)回滾段在數(shù)據(jù)庫(kù)中起著關(guān)鍵性的作用,如果設(shè)計(jì)得不合理,不管多好的剩余部件設(shè)計(jì),都會(huì)使SAP系統(tǒng)不能發(fā)揮其應(yīng)有的功能、作用。因此,在開(kāi)展回滾段的優(yōu)化調(diào)整時(shí)應(yīng)遵循以下原則。
(1)回滾段獨(dú)立放置。為了發(fā)揮回滾段應(yīng)有的性能,應(yīng)將回滾段同其他諸如索引、數(shù)據(jù)字典等的數(shù)據(jù)分開(kāi)放置,此時(shí)應(yīng)為回滾段創(chuàng)建一個(gè)或一個(gè)以上的獨(dú)立表空間。
(2)構(gòu)建回滾段群。為了使回滾段在面對(duì)不同類型數(shù)據(jù)時(shí)能夠快速作出反應(yīng),應(yīng)該構(gòu)建較小、較大、特大3種大小不同的回滾段群,須注意的是不要將這3種回滾段群放置在同一個(gè)表空間上,應(yīng)分開(kāi)放置。并且每個(gè)群的內(nèi)部大小相同,以滿足該組事務(wù)處理的最大要求。
(3)回滾段的建立數(shù)量應(yīng)科學(xué)合理。并不是回滾段的數(shù)量越多越好,而應(yīng)該參照SAP的并發(fā)事務(wù)數(shù)量建立,SAP的并發(fā)事務(wù)少于16個(gè),則設(shè)置4個(gè)回滾段;當(dāng)并發(fā)事務(wù)多余16個(gè)少于32個(gè)時(shí),設(shè)置8個(gè)回滾段;并發(fā)事務(wù)多余32個(gè)時(shí),則設(shè)置并發(fā)事務(wù)數(shù)量/4的回滾段。
ABAP開(kāi)發(fā)語(yǔ)言是SAP公司為SAP軟件專門開(kāi)發(fā)的一種編程語(yǔ)言,是為從事二次開(kāi)發(fā)推出的一種面向?qū)ο蟮恼Z(yǔ)言[5]。ABAP采用Open SQL來(lái)訪問(wèn)和操作數(shù)據(jù)庫(kù)。優(yōu)化ABAP中的SQL語(yǔ)句,可以有效降低數(shù)據(jù)庫(kù)的負(fù)載,提升數(shù)據(jù)庫(kù)的系能。ABAP的SQL語(yǔ)句的優(yōu)化原則是盡量減少數(shù)據(jù)庫(kù)中的IO操作,有以下4個(gè)要求。
避免使用SELECT … ENDSELECT語(yǔ)句。SELECT ENDSELECT語(yǔ)句其實(shí)是一個(gè)循環(huán)體,因此如果使用TABLE賦值,將會(huì)大大降低循環(huán)體的使用,提高性能。
盡可能減少SELECT *的使用頻率,盡量使用需要讀取的字段來(lái)做檢索。
使用FOR ALL ENTRIES IN語(yǔ)句用來(lái)把內(nèi)表以及數(shù)據(jù)表相連,能夠大大減少數(shù)據(jù)的提取頻率,優(yōu)化數(shù)據(jù)。
如果Where子句中含有選擇性條件,如Where N=20,則將最具有選擇性部分放在表達(dá)式最后。
為使用戶能夠快速便捷地使用應(yīng)用程序,在設(shè)計(jì)系統(tǒng)時(shí)可以利用視圖對(duì)數(shù)據(jù)進(jìn)行隱藏、刪減,同時(shí)能夠?qū)⑸婕岸鄠€(gè)表的復(fù)雜查詢以視圖的方式給出。這樣能夠通過(guò)索引快速查找數(shù)據(jù),同時(shí)還可減少磁盤I/O,優(yōu)化對(duì)數(shù)據(jù)表的查詢,加速SQL語(yǔ)句的執(zhí)行。除此之外,構(gòu)建索引提高系統(tǒng)性能,應(yīng)從以下方面入手:該表常用來(lái)在索引列上查詢,該表不常更新、插入、刪除等操作,查詢出來(lái)的結(jié)果記錄數(shù)應(yīng)控制在原表的2%~4%。
綜上所述,隨著SAP系統(tǒng)的應(yīng)用深入,對(duì)Oracle數(shù)據(jù)庫(kù)的性能提出了越來(lái)越高的要求。對(duì)Oracle數(shù)據(jù)庫(kù)性能進(jìn)行調(diào)優(yōu),根本目的在于提升SAP系統(tǒng)的效率和功能。但影響Oracle數(shù)據(jù)庫(kù)性能的因素非常多,優(yōu)化與調(diào)整是需要不斷摸索和總結(jié)的過(guò)程。必須對(duì)影響Oracle性能的因素進(jìn)行分析,針對(duì)每一個(gè)因素都作出科學(xué)合理的調(diào)整和優(yōu)化,才能夠保證最終Oracle數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)性能達(dá)到SAP系統(tǒng)的要求。
[1]鄒俊. 基于Oracle數(shù)據(jù)庫(kù)系統(tǒng)性能調(diào)整與優(yōu)化研究[D].南昌:江西財(cái)經(jīng)大學(xué),2006.
[2]魏亞楠,宋義秋. Oracle數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能優(yōu)化[J].制造業(yè)自動(dòng)化,2010(8):204-206.
[3]劉哲. 基于Oracle數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)化與性能調(diào)整研究[J].綠色科技,2012(5):283-284.
[4]王雷,曾蘊(yùn)波,王璐. Oracle數(shù)據(jù)庫(kù)的性能調(diào)整與優(yōu)化方法探析[J].航天器工程,2008(6):129-133.
[5]孫勤.淺談SAP中ABAP程序的優(yōu)化方法[J].電腦知識(shí)與技術(shù),2012(19):4757-4758.
Research on performance optimization of Oracle database under SAP architecture
Liu Hongzhi
(China Dongfang Electric Corporation, Chengdu 611731, China)
With the continuous development of information technology, SAP system has been used by more and more enterprises. As the most widely used database system of SAP system, Oracle’s performance has an important influence on the SAP system. The main performance of the Oracle database under the SAP architecture is studied, and the adjustment and optimization measures are put forward in this paper.
SAP architecture; Oracle database; system performance; optimization
劉宏志(1984— ),男,四川德陽(yáng),碩士,工程師;研究方向:數(shù)據(jù)挖掘,模式識(shí)別。