国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

影響Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)性能的因素分析與改進(jìn)

2013-03-19 03:13
關(guān)鍵詞:數(shù)據(jù)量語句階段

孟 萍 劉 石

(大連東軟信息學(xué)院 遼寧 116023)

0 引言

Oracle作為一種大型的數(shù)據(jù)庫系統(tǒng)被廣泛應(yīng)用在電力、電信、金融、民航等重要部門。在實(shí)際應(yīng)用中,隨著系統(tǒng)中數(shù)據(jù)的增加,訪問量的加大,常常會(huì)出現(xiàn)系統(tǒng)響應(yīng)遲緩,性能下降的問題。圍繞數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能優(yōu)化,目前在業(yè)界已有一些研究成果。本文從軟件產(chǎn)品生命周期的設(shè)計(jì)、編碼及部署階段入手,結(jié)合多年的實(shí)際工作經(jīng)驗(yàn),分析了在軟件開發(fā)過程中影響性能瓶頸的諸多因素,給出了基于Oracle數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化方法及策略。

1 設(shè)計(jì)階段上的優(yōu)化

設(shè)計(jì)階段是軟件開發(fā)中僅次于需求分析之后的第二階段,如果能夠進(jìn)行科學(xué)、合理的設(shè)計(jì),能夠有效避免許多在后繼階段中引起的系統(tǒng)性能問題。一旦數(shù)據(jù)庫設(shè)計(jì)付諸實(shí)施,我們將很難在應(yīng)用環(huán)境中改變數(shù)據(jù)庫的設(shè)計(jì)。因此,本階段的控制措施十分重要! 這里從性能分析的角度,重點(diǎn)闡述數(shù)據(jù)庫對象的優(yōu)化設(shè)計(jì)和應(yīng)用邏輯實(shí)現(xiàn)設(shè)計(jì)兩部分。

1.1 數(shù)據(jù)庫對象設(shè)計(jì)

數(shù)據(jù)庫對象優(yōu)化設(shè)計(jì)的重點(diǎn)在數(shù)據(jù)庫基表設(shè)計(jì)、索引設(shè)計(jì)和數(shù)據(jù)庫系統(tǒng)整體性能設(shè)計(jì)三個(gè)方面。

1.1.1 數(shù)據(jù)庫基表設(shè)計(jì)

人們在開始進(jìn)行數(shù)據(jù)庫基表設(shè)計(jì)的時(shí)候,很容易忽略基表在數(shù)據(jù)量很大的情況下,是否會(huì)引起應(yīng)用性能下降問題,以及日常維護(hù)、備份恢復(fù)、數(shù)據(jù)清理等工作是否也會(huì)因此而受到影響。而往往在系統(tǒng)投入運(yùn)行以后才發(fā)現(xiàn)隨著系統(tǒng)業(yè)務(wù)量的增大,正常的使用、日常的備份、以及數(shù)據(jù)清理等操作會(huì)變得越來越耗時(shí),甚至達(dá)到無法在業(yè)務(wù)給定的時(shí)間內(nèi)完成的地步,給客戶及使用單位帶來許多無法想象的麻煩。因此系統(tǒng)的數(shù)據(jù)庫基表的設(shè)計(jì)十分重要。

對于大的數(shù)據(jù)庫基表,我們可以采用數(shù)據(jù)庫分區(qū)技術(shù)來優(yōu)化產(chǎn)品的應(yīng)用性能,同時(shí)也能大大簡化DBA對于這些大尺寸庫表的日常維護(hù)工作,做到防患于未然。

1.1.2 索引設(shè)計(jì)

在數(shù)據(jù)庫設(shè)計(jì)中,另一個(gè)與應(yīng)用系統(tǒng)性能有很大關(guān)系的問題是建立合適的索引。設(shè)計(jì)好的索引結(jié)構(gòu),可以避免查詢時(shí)的全表掃描,加快查詢速度。而在實(shí)際應(yīng)用中,常常沒有制定有效的索引管理策略,許多應(yīng)用系統(tǒng)的索引都是在開發(fā)人員在編寫代碼時(shí)看到需要索引就創(chuàng)建一個(gè)索引,而較少甚至根本不去查看和分析已有的索引是否可以利用。隨著應(yīng)用功能的擴(kuò)展,索引數(shù)量只是簡單地增加,而很少考慮重復(fù)利用、合并和刪除重復(fù)索引。最終導(dǎo)致雷同或可合并的索引大量存在,不但消耗大量的空間,還影響庫表記錄的增、刪性能。

1.1.3 數(shù)據(jù)庫系統(tǒng)整體性能設(shè)計(jì)

這部分設(shè)計(jì)的重點(diǎn)在于盡量減少I/O爭用、分散I/O。如果對于基表和索引的存儲(chǔ)位置沒有進(jìn)行合理分布,則很容易在系統(tǒng)中造成熱點(diǎn)數(shù)據(jù),使系統(tǒng)的并發(fā)處理能力大打折扣。在實(shí)際應(yīng)用中一般可遵循以下幾條策略:

將表和索引分散在不同的I/O單元上;

將需要經(jīng)常關(guān)聯(lián)的表分散在不同的I/O單元上;

對于熱點(diǎn)訪問的基表和索引,盡量分散在盡可能多的數(shù)據(jù)塊甚至不同硬盤上??梢詫⒒砗退饕娣旁赗AID0或RAID5的磁盤陣列中;或使用很大的PCTFREE存儲(chǔ)參數(shù),使數(shù)據(jù)量盡量分散在不同的數(shù)據(jù)塊中,使數(shù)據(jù)稀疏化;

應(yīng)用Oracle的LMT本地表空間管理和ASSM自動(dòng)段存儲(chǔ)管理技術(shù)管理數(shù)據(jù)塊的表空間和基表索引等存儲(chǔ)對象,以提高I/O請求并發(fā)率。

1.2 應(yīng)用邏輯設(shè)計(jì)

在應(yīng)用邏輯設(shè)計(jì)過程中,較普遍存在的問題是僅關(guān)注如何通過SQL語句實(shí)現(xiàn)應(yīng)用邏輯的功能,但很少分析SQL語句應(yīng)以什么樣的執(zhí)行計(jì)劃運(yùn)行效率最佳;很少分析執(zhí)行計(jì)劃是應(yīng)確保始終不變,還是需要隨著數(shù)據(jù)分布的變動(dòng)而相應(yīng)的變動(dòng),以及如何變動(dòng)進(jìn)行設(shè)計(jì)。

在一個(gè)應(yīng)用系統(tǒng)中存在大量的SQL語句,很難做到針對每一條SQL語句都進(jìn)行完善的分析設(shè)計(jì)工作。因此,可以運(yùn)用“2-8原則”的思想,對執(zhí)行時(shí)間長,或并發(fā)量大的SQL語句精心設(shè)計(jì)“理想執(zhí)行計(jì)劃”,使其性能得以優(yōu)化。

2 編碼階段上的優(yōu)化

在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,造成應(yīng)用程序反應(yīng)緩慢、系統(tǒng)資源消耗大的直接原因常常是不良的SQL語句。往往一個(gè)不良的SQL語句會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫系統(tǒng)高負(fù)荷運(yùn)轉(zhuǎn),甚至對外暫停服務(wù)。因此在編碼階段應(yīng)首先對SQL語句進(jìn)行優(yōu)化。

另外盡量使用存儲(chǔ)過程。有些不需和客戶端交互太多、處理的數(shù)據(jù)量較大的程序,例如報(bào)表,可以使用存儲(chǔ)過程實(shí)現(xiàn)。這樣可以減少網(wǎng)絡(luò)流量,而且存儲(chǔ)過程本身是編譯好的,經(jīng)過一些優(yōu)化處理。降低事務(wù)執(zhí)行的粒度。某些業(yè)務(wù)處理的數(shù)據(jù)量較大,如果寫成一個(gè)SQL語句或放在一個(gè)事務(wù)中,執(zhí)行起來會(huì)占用系統(tǒng)很多資源,影響其它業(yè)務(wù)的執(zhí)行,可以考慮降低粒度,分成多次執(zhí)行。

3 部署階段上的優(yōu)化

在此階段中經(jīng)常會(huì)遇到在開發(fā)環(huán)境執(zhí)行效率很高的應(yīng)用部署到生產(chǎn)系統(tǒng)中后,性能卻很不理想的情況,引發(fā)這種情況很多時(shí)候是因?yàn)椴糠諷QL在部署到生產(chǎn)環(huán)境之后,由于實(shí)際的數(shù)據(jù)分配與測試環(huán)境不同,導(dǎo)致Oracle的CBO生成了不同于開發(fā)環(huán)境下生成的執(zhí)行計(jì)劃。

在這一階段,我們可以從開發(fā)環(huán)境中提取出最優(yōu)的SQL執(zhí)行計(jì)劃集合,部署到生產(chǎn)系統(tǒng)中,以固定需要固定執(zhí)行計(jì)劃的SQL。此外在部署階段還應(yīng)該注意不斷跟蹤、優(yōu)化不良的SQL語句。

4 結(jié)束語

Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能優(yōu)化是一個(gè)復(fù)雜、繁瑣的系統(tǒng)工程,涉及的方面有很多,我們認(rèn)為系統(tǒng)性能在70%以上由應(yīng)用系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)和SQL語句來決定,數(shù)據(jù)庫端可調(diào)性只有20%左右,因此這里我們重點(diǎn)強(qiáng)調(diào)了產(chǎn)品開發(fā)在設(shè)計(jì)、編碼及部署階段在性能方面容易引起瓶頸的因素及解決方法,希望能在產(chǎn)品投入使用之前就引起性能方面的重視及改善。實(shí)踐證明,上述措施行之有效。

當(dāng)然對系統(tǒng)的優(yōu)化調(diào)整不是一次性的,還需要在使用過程中不斷反復(fù)調(diào)整,但如果在產(chǎn)品實(shí)施之初就開始注意性能的優(yōu)化問題,對以后的系統(tǒng)維護(hù)會(huì)減少很多負(fù)擔(dān),從而提升軟件產(chǎn)品的整體性能。

[1] 陳峰. 關(guān)于改善ORACLE數(shù)據(jù)庫應(yīng)用軟件產(chǎn)品性能品質(zhì)的研究: 碩士學(xué)位論文. 北京: 北京郵電大學(xué), 20011.

[2] Thomas Kyte. 蘇金國 王曉振等譯. Oracle 9i&10g編程藝術(shù).人民郵電出版社, 2009

[3] 李欣, 羅琦, 李春華. Oracle 數(shù)據(jù)庫性能的優(yōu)化設(shè)計(jì). 鄭州大學(xué)

猜你喜歡
數(shù)據(jù)量語句階段
關(guān)于基礎(chǔ)教育階段實(shí)驗(yàn)教學(xué)的幾點(diǎn)看法
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
重點(diǎn):語句銜接
寬帶信號(hào)采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
在學(xué)前教育階段,提前搶跑,只能跑得快一時(shí),卻跑不快一生。
大熱的O2O三個(gè)階段,你在哪?
兩岸婚戀邁入全新階段
如何搞定語句銜接題
作文語句實(shí)錄
水城县| 新化县| 秦皇岛市| 明光市| 威宁| 阳朔县| 多伦县| 内乡县| 黄石市| 景东| 常州市| 安龙县| 射阳县| 邵阳县| 蒙自县| 布尔津县| 肥乡县| 视频| 克拉玛依市| 花垣县| 湖北省| 南陵县| 集安市| 斗六市| 浦北县| 宁都县| 平顺县| 永靖县| 大足县| 平阴县| 宕昌县| 磐安县| 博乐市| 鄢陵县| 天津市| 靖安县| 镇原县| 江西省| 蕲春县| 上饶市| 深圳市|