熊磊
摘 要:每個(gè)大型企業(yè)都會(huì)涉及使用數(shù)據(jù)庫,數(shù)據(jù)的存取修改都是通過數(shù)據(jù)庫完成,一旦數(shù)據(jù)庫出現(xiàn)性能故障,將直接導(dǎo)致企業(yè)業(yè)務(wù)的重大損失,因此數(shù)據(jù)庫對(duì)企業(yè)來說至關(guān)重要。Oracle是目前使用較廣泛的數(shù)據(jù)庫,而Exadata是核心由Database Machine(數(shù)據(jù)庫服務(wù)器)與Exadata Storage Server(存儲(chǔ)服務(wù)器)組成的一體機(jī)硬件平臺(tái),其特點(diǎn)是對(duì)Oracle數(shù)據(jù)庫性能進(jìn)行優(yōu)化和改進(jìn)。文章簡(jiǎn)要介紹了江蘇有線針對(duì)Exadata數(shù)據(jù)庫一體機(jī)進(jìn)行的內(nèi)存擴(kuò)容、業(yè)務(wù)遷移等工作,同時(shí)展示了內(nèi)存優(yōu)化前后的性能提升變化。
關(guān)鍵詞:Oracle Exadata;內(nèi)存擴(kuò)容;數(shù)據(jù)庫性能
0?引言
江蘇有線BOSS系統(tǒng)(Business & Operation Support System,BOSS)是公司營(yíng)業(yè)支撐、賬務(wù)計(jì)費(fèi)的核心系統(tǒng),系統(tǒng)的業(yè)務(wù)數(shù)據(jù)非常重要。隨著江蘇有線全省BOSS系統(tǒng)整合,BOSS系統(tǒng)實(shí)際用戶數(shù)發(fā)展迅猛,IT支撐系統(tǒng)實(shí)際支撐用戶已經(jīng)達(dá)到3 000萬,BOSS核心數(shù)據(jù)庫數(shù)據(jù)也已經(jīng)超過30T。用戶數(shù)的增加、用戶數(shù)據(jù)的快速增長(zhǎng)對(duì)江蘇有線BOSS系統(tǒng)的支撐能力提出了更高的要求,目前江蘇有線BOSS系統(tǒng)的CRM、BILLING核心生產(chǎn)庫由兩臺(tái)Exadata承載,前期運(yùn)行過程中,隨著業(yè)務(wù)量越來越大,BOSS系統(tǒng)生產(chǎn)數(shù)據(jù)庫的內(nèi)存資源消耗越來越嚴(yán)重,一旦內(nèi)存資源耗盡,將導(dǎo)致數(shù)據(jù)庫重啟,影響全省業(yè)務(wù)的正常受理。
通過系統(tǒng)性能評(píng)估及方案確定,目前完成兩套Exadata核心數(shù)據(jù)庫服務(wù)器的內(nèi)存優(yōu)化工作,具體包含內(nèi)存擴(kuò)容和業(yè)務(wù)遷移兩部分。經(jīng)過近2個(gè)月的穩(wěn)定運(yùn)行,與優(yōu)化前相比,目前數(shù)據(jù)庫的緩存命中率均提升到了100%,“物理讀”性能提升了近4倍,其中BILLING數(shù)據(jù)庫的IOPS提升了近25倍,數(shù)據(jù)庫CPU利用率、邏輯讀、gc爭(zhēng)用等方面都有很大的優(yōu)化改善。
1? ? 技術(shù)實(shí)施
針對(duì)江蘇有線核心生產(chǎn)庫內(nèi)存不足的具體問題,通過采購擴(kuò)容,每個(gè)節(jié)點(diǎn)內(nèi)存由原先的256G全部擴(kuò)容到768G。數(shù)據(jù)庫層面同步擴(kuò)大SGA(System Global Area,SGA)、PGA(Program Global Area,PGA)內(nèi)存緩沖區(qū)大小,確保數(shù)據(jù)讀寫的效率,同時(shí)修改操作系統(tǒng)層面HugePage大頁數(shù)量[1],減少數(shù)據(jù)庫的內(nèi)存頁的換頁頻率。
1.1? 擴(kuò)容前后內(nèi)存使用情況比對(duì)
內(nèi)存擴(kuò)容前,數(shù)據(jù)庫節(jié)點(diǎn)內(nèi)存平均使用率約89%,數(shù)據(jù)庫日常使用運(yùn)行緩慢,業(yè)務(wù)量短時(shí)間增加極有可能導(dǎo)致節(jié)點(diǎn)內(nèi)存耗盡,數(shù)據(jù)庫進(jìn)程重啟,影響前端業(yè)務(wù)正常使用。內(nèi)存擴(kuò)容后,操作系統(tǒng)層面的可用內(nèi)存明顯增加,內(nèi)存使用率降到50%以下,數(shù)據(jù)庫SGA,PGA可用內(nèi)存調(diào)大,使得數(shù)據(jù)庫整體查詢、寫入效率較之前明顯改善,數(shù)據(jù)庫運(yùn)行流暢,數(shù)據(jù)庫壓力明顯減小,前端業(yè)務(wù)受理效率提高,系統(tǒng)性能不會(huì)受前端業(yè)務(wù)量的大小而出現(xiàn)巨大波動(dòng),調(diào)整前后操作系統(tǒng)層面的內(nèi)存可用數(shù)量如表1所示。
1.2? 擴(kuò)容前后數(shù)據(jù)庫性能比對(duì)
通過對(duì)擴(kuò)容前后的AWR報(bào)告[2]對(duì)比可以發(fā)現(xiàn),內(nèi)存擴(kuò)容后,數(shù)據(jù)庫較擴(kuò)容前總體性能提升明顯,如圖1AWR報(bào)告所示,邏輯讀、物理讀寫等參數(shù)均有明顯改善。
除了邏輯讀、物理讀外,數(shù)據(jù)庫整體IOPS(Input/Output Operations Per Second,IOPS)等指標(biāo)也提升明顯。以BILLING庫為例,內(nèi)存優(yōu)化前后的數(shù)據(jù)庫性能比對(duì)情況如表2所示。
通過內(nèi)存擴(kuò)容,BILLING數(shù)據(jù)庫的物理讀效率提高了近3倍,IOPS提升了25倍,緩存命中率提高到了100%,CPU利用率提升了將近77%。數(shù)據(jù)庫數(shù)據(jù)的讀寫效率提升較明顯。
1.3? 實(shí)施業(yè)務(wù)遷移,確保數(shù)據(jù)庫內(nèi)存充足
僅僅實(shí)施內(nèi)存擴(kuò)容只是一定程度上緩解問題的發(fā)生時(shí)間,一旦數(shù)據(jù)庫上承載的業(yè)務(wù)模塊增加到一定程度,將會(huì)再次導(dǎo)致系統(tǒng)的內(nèi)存不足直至內(nèi)存耗盡。江蘇有線對(duì)核心生產(chǎn)庫進(jìn)行內(nèi)存擴(kuò)容的同時(shí),還同步詳細(xì)梳理了當(dāng)前環(huán)境的業(yè)務(wù)工作,包括:
(1)遷移數(shù)據(jù)庫同步鏈路。實(shí)施前期,同步鏈路按照具體業(yè)務(wù)類型部署在不同的數(shù)據(jù)庫節(jié)點(diǎn)上,這就導(dǎo)致每個(gè)節(jié)點(diǎn)上都會(huì)存在數(shù)據(jù)同步的壓力。為了確保數(shù)據(jù)庫的穩(wěn)定運(yùn)行,內(nèi)存優(yōu)化過程中對(duì)在用的將近10條同步鏈路進(jìn)行梳理,制定遷移方案并無縫完成了該部分鏈路的遷移,遷移后所有同步鏈路均集中到一臺(tái)數(shù)據(jù)庫節(jié)點(diǎn)上,該節(jié)點(diǎn)僅規(guī)劃為數(shù)據(jù)庫同步專用,同時(shí)將該節(jié)點(diǎn)的數(shù)據(jù)庫實(shí)例從應(yīng)用負(fù)載中剔除,確保同步鏈路和數(shù)據(jù)庫均能正常穩(wěn)定的工作。
(2)梳理前端業(yè)務(wù),實(shí)現(xiàn)讀寫業(yè)務(wù)分離[3]。梳理生產(chǎn)庫上的所有業(yè)務(wù),將部分僅需要查詢的業(yè)務(wù)(如接口讀取、訂購?fù)降饶K)從核心生產(chǎn)庫剝離出來,同時(shí)通過同步鏈路及查詢庫支撐剝離出的相關(guān)業(yè)務(wù)。此外查詢庫與生產(chǎn)庫間的數(shù)據(jù)可通過同步鏈路確保數(shù)據(jù)安全一致,這樣,假如生產(chǎn)庫出現(xiàn)重大故障,查詢庫可作為備份庫,實(shí)時(shí)接管前端業(yè)務(wù),確保業(yè)務(wù)的可持續(xù)性。
通過對(duì)數(shù)據(jù)庫同步鏈路及查詢業(yè)務(wù)的梳理和遷移,數(shù)據(jù)庫外的其他業(yè)務(wù)占用的內(nèi)存被完全釋放出來,同時(shí)明確并減少數(shù)據(jù)庫節(jié)點(diǎn)上的業(yè)務(wù)部署,確保數(shù)據(jù)庫進(jìn)程不會(huì)出現(xiàn)因?yàn)閮?nèi)存被其他業(yè)務(wù)占用導(dǎo)致內(nèi)存不足而重啟的情況。此外,查詢庫的使用也一定程度上確保了生產(chǎn)庫的數(shù)據(jù)安全可用性。
2? ? 結(jié)語
作為江蘇有線BOSS系統(tǒng)的核心生產(chǎn)庫,一旦數(shù)據(jù)庫性能出現(xiàn)瓶頸,將導(dǎo)致全省的有線電視用戶業(yè)務(wù)受理受到影響,通過對(duì)江蘇有線兩臺(tái)Exadata數(shù)據(jù)庫一體機(jī)進(jìn)行內(nèi)存擴(kuò)容和業(yè)務(wù)梳理遷移,進(jìn)一步提升了三套核心數(shù)據(jù)庫的整體性能,具體如下:
(1)內(nèi)存擴(kuò)容后,兩臺(tái)Exadata一體機(jī)上承載的3套數(shù)據(jù)庫運(yùn)行狀態(tài)良好,無性能瓶頸。
(2)內(nèi)存擴(kuò)容且使用大頁內(nèi)存調(diào)優(yōu)后,數(shù)據(jù)庫gc等待事件已大幅降低,大大提升了數(shù)據(jù)庫性能。
(3)因?yàn)閿?shù)據(jù)庫大多數(shù)操作都是讀操作,所以數(shù)據(jù)庫的性能主要也體現(xiàn)在讀操作上。從AWR分析報(bào)告可以得出:經(jīng)過內(nèi)存擴(kuò)容后,數(shù)據(jù)庫在READ讀方面有非常大的提升,同時(shí)BOSS前臺(tái)系統(tǒng)的處理效率也跟著大大提升。
(4)由于內(nèi)存擴(kuò)容,SGA增大,buffer pool,share pool等關(guān)鍵cache命中率均在100%。
(5)由于內(nèi)存擴(kuò)容,很多SQL的執(zhí)行效率得到提升,使得數(shù)據(jù)庫CPU等資源的等待時(shí)間減少,優(yōu)化了數(shù)據(jù)庫層面的資源使用率,大大提升BOSS系統(tǒng)的處理性能。
(6)內(nèi)存擴(kuò)容且完成相關(guān)業(yè)務(wù)遷移后,使得操作系統(tǒng)留有充足的內(nèi)存,可保障數(shù)據(jù)庫不會(huì)出現(xiàn)因內(nèi)存耗盡導(dǎo)致的重啟事故,同時(shí)也滿足日常數(shù)據(jù)導(dǎo)出遷移等需求。
隨著信息技術(shù)的發(fā)展,數(shù)據(jù)帶來的價(jià)值已經(jīng)為各行各業(yè)所認(rèn)可。而作為數(shù)據(jù)的載體,數(shù)據(jù)庫的性能情況對(duì)企業(yè)發(fā)展有著非常重要的意義。數(shù)據(jù)庫的高性能運(yùn)行能為公司全業(yè)務(wù)的開展提供保障,使公司能夠不斷適應(yīng)靈活有效的市場(chǎng)策略變化,促進(jìn)公司支撐不斷出現(xiàn)的新的需求,從而能夠使公司形成強(qiáng)大的競(jìng)爭(zhēng)優(yōu)勢(shì),保證在激烈市場(chǎng)競(jìng)爭(zhēng)中的可持續(xù)發(fā)展。本文就江蘇有線核心生產(chǎn)庫內(nèi)存優(yōu)化的具體措施及優(yōu)化前后的性能進(jìn)行了詳細(xì)的說明,通過內(nèi)存優(yōu)化,解決了數(shù)據(jù)庫存在的運(yùn)行緩慢、頻繁重啟等問題,確保了公司業(yè)務(wù)的穩(wěn)定運(yùn)行。
[參考文獻(xiàn)]
[1]張軼超.淺談科研院所行業(yè)數(shù)據(jù)庫性能優(yōu)化方法[J].百科論壇電子雜志,2019(14):796.
[2]楊瀟男,李勁華.基于AWR報(bào)告的數(shù)據(jù)庫性能的研究[J].青島大學(xué)學(xué)報(bào)(自然科學(xué)版),2020(2):21-26,31.
[3]沙光華,陳泳,張長(zhǎng)江.讀寫分離技術(shù)在運(yùn)營(yíng)支撐系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2015(12):107-110,175.
(編輯 何 琳)