版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、系統(tǒng)性能問題分析及優(yōu)化策略方法摘要:隨著信息化建設(shè)的深入和普及,信息系統(tǒng)已經(jīng)成為了社會(huì)的生產(chǎn)、生活重要組成部分,信息系統(tǒng)由各類型復(fù)雜的軟、硬件組成,功能邏輯結(jié)構(gòu)復(fù)雜,數(shù)據(jù)種類多樣,系統(tǒng)的性能猶如系統(tǒng)的生命,是系統(tǒng)正常運(yùn)行服務(wù)的關(guān)鍵,越來越受到人們的重視。如何優(yōu)化系統(tǒng)性能,是系統(tǒng)設(shè)計(jì)研發(fā)者們必須考慮的問題。性能優(yōu)化目標(biāo)只有一個(gè)就是提高系統(tǒng)性能,但是性能分析優(yōu)化的方法策略卻多種多樣,如系統(tǒng)的架構(gòu)優(yōu)化,程序的邏輯優(yōu)化,內(nèi)存、I/O、網(wǎng)絡(luò)、磁盤優(yōu)化,數(shù)據(jù)庫(kù)優(yōu)化等等。如何選擇合適的優(yōu)化方法,解決性能問題,是系統(tǒng)性能優(yōu)化的關(guān)鍵。關(guān)鍵詞:性能、優(yōu)化、系統(tǒng)、升級(jí)System Performance Analy
2、sis and Optimization StrategyAbstract: With the development and popularization of grid informatization, the information systems has become an important part of social production and living. They are composing by types of complex information system software and hardware components. Their functions lo
3、gical structures are of complex and their data types are diverse. The system performance is like living systems which is the key to the normal operation of the service, attracting more and more people's attention. How to optimize system performance is the problem that must be considered by the d
4、esigner and developer. Performance Optimization has only one goal that is to improve system performance. However, performance analysis and optimization methods and strategies are various, such as system architecture optimization, logic optimization, memory optimization, I / O optimization, network o
5、ptimization, disk optimization, database optimization and so on. How to choose a suitable optimization method to solve performance problems is the key to system performance optimization.Keywords: Performance, Optimization, System, Upgrade0. 引言 信息系統(tǒng)的性能是一種非功能性要求,雖然不是系統(tǒng)功能關(guān)注的重點(diǎn),但卻是反應(yīng)功能是否正常穩(wěn)定運(yùn)行提供服務(wù)的關(guān)鍵。如何
6、及時(shí)的發(fā)現(xiàn)系統(tǒng)性能問題,做到防患于未然是系統(tǒng)建設(shè)管理人員必須具備基本能力。本文是總結(jié)了多次系統(tǒng)性能優(yōu)化管理工作中的經(jīng)驗(yàn)方法,供信息系統(tǒng)的建設(shè)管理人員參考。1. 性能問題表現(xiàn)系統(tǒng)暴露性能問題,在系統(tǒng)使用過程中通常是非常容易發(fā)現(xiàn)的,簡(jiǎn)單總結(jié)起來,主要表現(xiàn)在以下幾個(gè)方面:1.1 響應(yīng)時(shí)間響應(yīng)時(shí)間是指系統(tǒng)對(duì)請(qǐng)求做出響應(yīng)的時(shí)間。直觀上看,這個(gè)指標(biāo)與人對(duì)軟件性能的主觀感受是非常一致的,因?yàn)樗暾赜涗浟苏麄€(gè)計(jì)算機(jī)系統(tǒng)處理請(qǐng)求的時(shí)間。由于一個(gè)系統(tǒng)通常會(huì)提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的響應(yīng)時(shí)間也不盡相同,甚至同一功能在不同輸入數(shù)據(jù)的情況下響應(yīng)時(shí)間也不相同。所以,在討論一個(gè)系統(tǒng)的響應(yīng)
7、時(shí)間時(shí),人們通常是指該系統(tǒng)所有功能的平均時(shí)間或者所有功能的最大響應(yīng)時(shí)間。當(dāng)然,往往也需要對(duì)每個(gè)或每組功能討論其平均響應(yīng)時(shí)間和最大響應(yīng)時(shí)間。對(duì)于單機(jī)的沒有并發(fā)操作的應(yīng)用系統(tǒng)而言,人們普遍認(rèn)為響應(yīng)時(shí)間是一個(gè)合理且準(zhǔn)確的性能指標(biāo)。需要指出的是,響應(yīng)時(shí)間的絕對(duì)值并不能直接反映軟件的性能的高低,軟件性能的高低實(shí)際上取決于用戶對(duì)該響應(yīng)時(shí)間的接受程度。對(duì)于一個(gè)游戲軟件來說,響應(yīng)時(shí)間小于100毫秒應(yīng)該是不錯(cuò)的,響應(yīng)時(shí)間在1秒左右可能屬于勉強(qiáng)可以接受,如果響應(yīng)時(shí)間達(dá)到3秒就完全難以接受了。而對(duì)于編譯系統(tǒng)來說,完整編譯一個(gè)較大規(guī)模軟件的源代碼可能需要幾十分鐘甚至更長(zhǎng)時(shí)間,但這些響應(yīng)時(shí)間對(duì)于用戶來說都是可以接受的。
8、1.2 延遲時(shí)間雖然軟件性能指標(biāo)本身只涉及軟件性能的度量,但考慮到軟件性能測(cè)試的主要目的是測(cè)試和改善所開發(fā)軟件的性能,對(duì)于復(fù)雜的網(wǎng)絡(luò)化的系統(tǒng)而言,簡(jiǎn)單地用響應(yīng)時(shí)間進(jìn)行度量就不一定合適了。考慮一個(gè)普通的網(wǎng)站系統(tǒng)。開發(fā)該網(wǎng)站系統(tǒng)時(shí),軟件開發(fā)實(shí)際上只集中在服務(wù)器端,因?yàn)榭蛻舳说能浖菢?biāo)準(zhǔn)的瀏覽器。雖然用戶看到的響應(yīng)時(shí)間時(shí)使用特定客戶端計(jì)算機(jī)上的特定瀏覽器瀏覽該網(wǎng)站的響應(yīng)時(shí)間,但是在討論軟件性能時(shí)更關(guān)心所開發(fā)網(wǎng)站軟件本身的“響應(yīng)時(shí)間”。也就是說,可以把用戶感受到的響應(yīng)時(shí)間劃分為“呈現(xiàn)時(shí)間”和“系統(tǒng)響應(yīng)時(shí)間”,前者是指客戶端的瀏覽器在接收到網(wǎng)站數(shù)據(jù)時(shí)呈現(xiàn)頁面所需的時(shí)間,而后者是指客戶端接收到用戶請(qǐng)求到客
9、戶端接收到服務(wù)器發(fā)來的數(shù)據(jù)所需的時(shí)間。顯然,軟件性能測(cè)試更關(guān)心“系統(tǒng)響應(yīng)時(shí)間”,因?yàn)椤俺尸F(xiàn)時(shí)間”與客戶端計(jì)算機(jī)和瀏覽器有關(guān),而與所開發(fā)的網(wǎng)站軟件沒有太大的關(guān)系。如果仔細(xì)分析這個(gè)例子,還可以把“系統(tǒng)響應(yīng)時(shí)間”進(jìn)一步分解為“網(wǎng)絡(luò)傳輸時(shí)間”和“應(yīng)用延遲時(shí)間”,其中前者是指數(shù)據(jù)(包括請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù))在客戶端和服務(wù)器端進(jìn)行傳輸?shù)臅r(shí)間,而后者是指網(wǎng)站軟件實(shí)際處理請(qǐng)求所需的時(shí)間。類似的,軟件性能測(cè)試也更關(guān)心“應(yīng)用延遲時(shí)間”。實(shí)際上,這種分解還可以繼續(xù)下去,如果該網(wǎng)站系統(tǒng)使用了數(shù)據(jù)庫(kù),我們可以把“數(shù)據(jù)庫(kù)延遲時(shí)間”分離出來,如果該網(wǎng)站系統(tǒng)使用了中間件,還可以把“中間件延遲時(shí)間”也分離出來。以上的時(shí)間分解實(shí)際
10、上有兩方面的目的。首先,人們通常希望把與所開發(fā)軟件直接相關(guān)的延遲時(shí)間和與所開發(fā)軟件不相關(guān)的延遲時(shí)間分離開,因?yàn)楦纳魄罢咄枰_發(fā)人員修改程序代碼,而改善后者不需要開發(fā)人員修改代碼,很多時(shí)候,開發(fā)人員對(duì)后者甚至是無能為力的。其次,詳細(xì)的分解有助于開發(fā)人員分析哪些部分是影響軟件性能的主要因素,以便于實(shí)時(shí)性能改善方案。1.3 吞吐量吞吐量是指系統(tǒng)在單位時(shí)間內(nèi)處理請(qǐng)求的數(shù)量。對(duì)于無并發(fā)的應(yīng)用系統(tǒng)而言,吞吐量與響應(yīng)時(shí)間成反比關(guān)系,實(shí)際上此時(shí)吞吐量就是響應(yīng)時(shí)間的倒數(shù)。前面已經(jīng)說過,對(duì)于單用戶的系統(tǒng),響應(yīng)時(shí)間(或者系統(tǒng)響應(yīng)時(shí)間和應(yīng)用延遲時(shí)間)可以很好地度量系統(tǒng)的性能,但對(duì)于并發(fā)系統(tǒng),通常需要用吞吐量作為性
11、能指標(biāo)。對(duì)于一個(gè)多用戶的系統(tǒng),如果只有一個(gè)用戶使用時(shí)系統(tǒng)的平均響應(yīng)時(shí)間是T,當(dāng)有你N個(gè)用戶使用時(shí),每個(gè)用戶看到的響應(yīng)時(shí)間通常并不是N*T,而往往比N*T小很多(當(dāng)然,在某些特殊情況下也可能比N*T大,甚至大很多)。這是因?yàn)樘幚砻總€(gè)請(qǐng)求需要用到很多資源,由于每個(gè)請(qǐng)求的處理過程中有許多步驟難以并發(fā)執(zhí)行,這導(dǎo)致在具體的一個(gè)時(shí)間點(diǎn),所占資源往往并不多。也就是說在處理單個(gè)請(qǐng)求時(shí),在每個(gè)時(shí)間點(diǎn)都可能有許多資源被閑置,當(dāng)處理多個(gè)請(qǐng)求時(shí),如果資源配置合理,每個(gè)用戶看到的平均響應(yīng)時(shí)間并不隨用戶數(shù)的增加而線性增加。實(shí)際上,不同系統(tǒng)的平均響應(yīng)時(shí)間隨用戶數(shù)增加而增長(zhǎng)的速度也不大相同,這也是采用吞吐量來度量并發(fā)系統(tǒng)的性
12、能的主要原因。一般而言,吞吐量是一個(gè)比較通用的指標(biāo),兩個(gè)具有不同用戶數(shù)和用戶使用模式的系統(tǒng),如果其最大吞吐量基本一致,則可以判斷兩個(gè)系統(tǒng)的處理能力基本一致。1.4 并發(fā)用戶數(shù)并發(fā)用戶數(shù)是指系統(tǒng)可以同時(shí)承載的正常使用系統(tǒng)功能的用戶的數(shù)量。與吞吐量相比,并發(fā)用戶數(shù)是一個(gè)更直觀但也更籠統(tǒng)的性能指標(biāo)。實(shí)際上,并發(fā)用戶數(shù)是一個(gè)非常不準(zhǔn)確的指標(biāo),因?yàn)橛脩舨煌氖褂媚J綍?huì)導(dǎo)致不同用戶在單位時(shí)間發(fā)出不同數(shù)量的請(qǐng)求。以網(wǎng)站系統(tǒng)為例,假設(shè)用戶只有注冊(cè)后才能使用,但注冊(cè)用戶并不是每時(shí)每刻都在使用該網(wǎng)站,因此具體一個(gè)時(shí)刻只有部分注冊(cè)用戶同時(shí)在線,在線用戶就在瀏覽網(wǎng)站時(shí)會(huì)花很多時(shí)間閱讀網(wǎng)站上的信息,因而具體一個(gè)時(shí)刻只有
13、部分在線用戶同時(shí)向系統(tǒng)發(fā)出請(qǐng)求。這樣,對(duì)于網(wǎng)站系統(tǒng)我們會(huì)有三個(gè)關(guān)于用戶數(shù)的統(tǒng)計(jì)數(shù)字:注冊(cè)用戶數(shù)、在線用戶數(shù)和同時(shí)發(fā)請(qǐng)求用戶數(shù)。由于注冊(cè)用戶可能長(zhǎng)時(shí)間不登陸網(wǎng)站,使用注冊(cè)用戶數(shù)作為性能指標(biāo)會(huì)造成很大的誤差。而在線用戶數(shù)和同時(shí)發(fā)請(qǐng)求用戶數(shù)都可以作為性能指標(biāo)。相比而言,以在線用戶作為性能指標(biāo)更直觀些,而以同時(shí)發(fā)請(qǐng)求用戶數(shù)作為性能指標(biāo)更準(zhǔn)確些。1.5 資源利用率資源利用率反映的是在一段時(shí)間內(nèi)資源平均被占用的情況。對(duì)于數(shù)量為一的資源,資源利用率可以表示為被占用的時(shí)間與整段時(shí)間的比值;對(duì)于數(shù)量不為一的資源,資源利用率可以表示為在該段時(shí)間內(nèi)平均被占用的資源數(shù)與總資源數(shù)的比值。2. 何時(shí)性能優(yōu)化系統(tǒng)建設(shè)存在這
14、樣的一個(gè)規(guī)律:前期重功能輕性能,后期才會(huì)重視性能。建設(shè)初期,實(shí)現(xiàn)者的注意力只關(guān)注系統(tǒng)設(shè)計(jì)本身的業(yè)務(wù)功能和系統(tǒng)功能的實(shí)現(xiàn),而忽略系統(tǒng)性能問題。隨著系統(tǒng)建設(shè)投入應(yīng)用,系統(tǒng)業(yè)務(wù)功能、數(shù)據(jù)量、用戶并發(fā)量的增加,系統(tǒng)的性能問題逐步暴露,系統(tǒng)性能不斷下降,性能問題將會(huì)成為系統(tǒng)建設(shè)投運(yùn)過程中的首要問題,此時(shí)才重視性能優(yōu)化,必將話費(fèi)巨大的代價(jià)。所以,系統(tǒng)優(yōu)化必須在系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)開始時(shí)就需要開始重視,系統(tǒng)架構(gòu)設(shè)計(jì),基礎(chǔ)平臺(tái)中間件的選擇,代碼編寫、軟硬件配置等就需要考慮系統(tǒng)性能的要求。3. 性能優(yōu)化策略1233.1 空間換時(shí)間例如,各種Cache如CPU L1/L2/RAM到硬盤,都是用空間來換時(shí)間的策略,這樣的策
15、略基本上是把計(jì)算的過程一步一步的保存或者緩存下來,這樣就不用每次用的時(shí)候在計(jì)算一遍,比如數(shù)據(jù)緩存,CDN等。這樣的策略還表現(xiàn)為冗余數(shù)據(jù),比如數(shù)據(jù)鏡像,負(fù)載均衡等。3.2 時(shí)間換空間少量的空間可能性能會(huì)更好,比如網(wǎng)絡(luò)傳輸,如果有一些壓縮數(shù)據(jù)的算法,這樣的算法比較耗時(shí),但因?yàn)槠款i在網(wǎng)絡(luò)傳輸,所以用時(shí)間來換空間反而能省時(shí)間。4. 分析優(yōu)化方法性能優(yōu)化主要從操作使用層、業(yè)務(wù)層、架構(gòu)層、數(shù)據(jù)存儲(chǔ)、操作系統(tǒng)等幾個(gè)方面進(jìn)行分析優(yōu)化:² 操作使用方面,主要考慮操作的簡(jiǎn)便性、減少系統(tǒng)請(qǐng)求、合理控制分配各個(gè)功能點(diǎn)的使用等方面。² 業(yè)務(wù)層主要考慮業(yè)務(wù)體系的優(yōu)化,如對(duì)一些流程復(fù)雜的業(yè)務(wù)如何進(jìn)行流程
16、統(tǒng)一;應(yīng)用系統(tǒng)功能如何進(jìn)行拆分以達(dá)到功能配置最優(yōu)化。² 架構(gòu)層從系統(tǒng)架構(gòu)和應(yīng)用架構(gòu)兩個(gè)角度考慮,包括事務(wù)控制、代碼緩存、權(quán)限管理體系、遠(yuǎn)程調(diào)用、工作流引擎等內(nèi)容。其優(yōu)化手段主要有優(yōu)化緩存管理、支持多數(shù)據(jù)源、應(yīng)用服務(wù)部署優(yōu)化等方面。² 數(shù)據(jù)庫(kù)層的優(yōu)化范圍包括數(shù)據(jù)庫(kù)的庫(kù)表結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)庫(kù)操作等方面考慮,主要優(yōu)化手段包括表結(jié)構(gòu)設(shè)計(jì)的規(guī)范化、分區(qū)存儲(chǔ)、查詢優(yōu)化、索引的使用等策略。² 操作系統(tǒng)層的內(nèi)容考慮系統(tǒng)的并發(fā)用戶數(shù)、吞吐量,系統(tǒng)可靠性等方面,優(yōu)化手段包括多任務(wù)處理、負(fù)載均衡等手段。12344.1 系統(tǒng)架構(gòu)優(yōu)化應(yīng)該按照從大到小的原則進(jìn)行,這樣的順序便于從整理發(fā)
17、現(xiàn)解決制約系統(tǒng)性能的關(guān)鍵問題,集中精力解決。優(yōu)化性能,首先需要從系統(tǒng)結(jié)構(gòu)或者框架入手,思考設(shè)計(jì)最佳的性能結(jié)果或框架,最后到編程工具、控件的選擇,及SQL語句優(yōu)化之類的細(xì)節(jié)問題。比如C/S、B/S混合結(jié)構(gòu)的使用,C/S結(jié)構(gòu)可以現(xiàn)實(shí)數(shù)據(jù)的快速傳遞和安全存儲(chǔ),但是在易推廣遠(yuǎn)程應(yīng)用發(fā)面卻不足;B/S結(jié)構(gòu)的系統(tǒng)易與集成和擴(kuò)展,可提提供遠(yuǎn)程的數(shù)據(jù)服務(wù)于管理,但在數(shù)據(jù)的交互性、動(dòng)態(tài)服務(wù)和突變顯示方面比較欠缺。因此,針對(duì)系統(tǒng)中的不同功能,選擇合適的結(jié)構(gòu)來實(shí)現(xiàn)。4.2 代碼邏輯精簡(jiǎn)代碼:代碼越精簡(jiǎn),執(zhí)行效率越高,特別對(duì)于C#、Java等面向?qū)ο笳Z言,由于面向?qū)ο蟮脑O(shè)計(jì),多一行代碼,執(zhí)行時(shí)將會(huì)多增加一系列的關(guān)聯(lián)對(duì)
18、象的加載和執(zhí)行,所以代碼越精簡(jiǎn)性能就越高。代碼精簡(jiǎn)的水平取決于編程人員水平的高低,但是有一些代碼優(yōu)化策略,只要編碼過程中注意應(yīng)用,可以起到提高性能的目的,如:減少循環(huán)的層數(shù),減少遞歸,在循環(huán)中少申明變量,循環(huán)的執(zhí)行SQL語句查詢,少做分配和釋放內(nèi)存的操作,盡量的把循環(huán)體內(nèi)的表達(dá)式抽取到循環(huán)外,條件表達(dá)式盡量的將最多狀態(tài)放置在前面的判斷中,合理的使用異常機(jī)制等等。并行處理:多核的CPU配置已經(jīng)是常見的配置,程序設(shè)計(jì)中如果能夠充分的考慮多進(jìn)程多線程的執(zhí)行,將非常有利于充分的利用計(jì)算資源,通過空間換取時(shí)間,達(dá)到提高性能的目的。4.3 網(wǎng)絡(luò)通信信息系統(tǒng)一般部署在成熟具有一定規(guī)模和覆蓋面的網(wǎng)絡(luò)通信設(shè)施的
19、基礎(chǔ)之上,網(wǎng)絡(luò)的結(jié)構(gòu)、帶寬等均已經(jīng)固定,短時(shí)間內(nèi)不會(huì)有大的升級(jí)改進(jìn)。網(wǎng)絡(luò)通信的優(yōu)化,通常在系統(tǒng)架構(gòu)部署,數(shù)據(jù)壓縮,使用數(shù)據(jù)庫(kù)存儲(chǔ)過程等方面進(jìn)行優(yōu)化改進(jìn),旨在減少網(wǎng)絡(luò)數(shù)據(jù)傳輸量,從而達(dá)到提高網(wǎng)絡(luò)性能的目的。1) 系統(tǒng)架構(gòu)部署對(duì)于網(wǎng)絡(luò)系統(tǒng)而言,網(wǎng)絡(luò)架構(gòu)的部署模式,決定著系統(tǒng)性能的優(yōu)劣,如地圖空間數(shù)據(jù)服務(wù),衛(wèi)星影像、數(shù)據(jù)地圖數(shù)據(jù)量巨大,需要大量的網(wǎng)絡(luò)帶寬容量,如果采用分布式部署模式,能夠有效減少集中部署,將數(shù)據(jù)分布于最接近于應(yīng)用終端的局域網(wǎng)絡(luò)中,能夠有效的減少系統(tǒng)對(duì)主體網(wǎng)絡(luò)的壓力,提高系統(tǒng)整體性能。2) 數(shù)據(jù)壓縮數(shù)據(jù)壓縮是有效的時(shí)間換空間方法,利用高效的壓縮算法,將零散的數(shù)據(jù)或者數(shù)據(jù)文件驚醒打包壓縮
20、,利用服務(wù)端或客戶端的計(jì)算資源,減少網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)娜萘?,從而提高網(wǎng)絡(luò)傳輸效率。3) 數(shù)據(jù)庫(kù)存儲(chǔ)過程如果數(shù)據(jù)庫(kù)服務(wù)器和應(yīng)用服務(wù)器之間不能部署在同一局域網(wǎng)絡(luò)之中,應(yīng)用服務(wù)需要請(qǐng)求大量的數(shù)據(jù)進(jìn)行運(yùn)算,那么在數(shù)據(jù)庫(kù)服務(wù)器計(jì)算資源充分的情況,可以考慮利用數(shù)據(jù)庫(kù)存儲(chǔ)過程,執(zhí)行部分的統(tǒng)計(jì),數(shù)據(jù)歸檔等計(jì)算過程,僅將結(jié)果提供給應(yīng)用服務(wù)器,該方式也能有效的減少網(wǎng)絡(luò)傳輸資源的消耗,提高網(wǎng)絡(luò)性能。4.4 數(shù)據(jù)緩存緩存是好東西,基本上90%的系統(tǒng)架構(gòu)優(yōu)化都是在圍繞著如何利用好緩存。緩存真是無處不在,硬件上看,有硬盤緩存,RAID卡緩存,存儲(chǔ)緩存,主存,NUMA特性,CPU L3-L2-L1等等。軟件架構(gòu)上看,有全局?jǐn)?shù)據(jù)
21、緩存,私有數(shù)據(jù)緩存,連接池,應(yīng)用服務(wù)器緩存,WEB服務(wù)器緩存,CDN緩存,客戶端文件緩存,客戶端內(nèi)存緩存等等?;旧洗笮拖到y(tǒng)都會(huì)有多級(jí)緩存,否則需要非常高的硬件投入才能解決問題。硬件緩存通常都比較智能,或者說99%的情況下我們不需要修改配置,即使修改帶來的性能提升一般也不會(huì)太多,除非你的軟件有較明顯的缺陷,你對(duì)硬件和你的軟件特性已經(jīng)了解得非常深入。軟件緩存架構(gòu)帶來性能的提高,往往也帶來了負(fù)面的問題,如架構(gòu)復(fù)雜化,數(shù)據(jù)同步多,數(shù)據(jù)實(shí)時(shí)性差,維護(hù)成本高,系統(tǒng)調(diào)試復(fù)雜等問題,所以對(duì)于軟件架構(gòu)上任何一個(gè)緩存架構(gòu),都需要深入分析是否有必要。我認(rèn)為如果增加一層緩存架構(gòu),至少要有5倍以上的提高提升,否則就要
22、分析成本了。對(duì)于中小型系統(tǒng),不建議有復(fù)雜的緩存架構(gòu),因?yàn)樽屜到y(tǒng)能更快速發(fā)展比提供更好的性能更有意義,雜的緩存架構(gòu)往往需要投入更多的人力成本。4.5 SQL語句1) 并行處理并行SQL使得SQL語句可以被多線程或進(jìn)程同時(shí)處理。當(dāng)前,多核處理器的廣泛應(yīng)用,意味著運(yùn)行Oracle數(shù)據(jù)庫(kù)的即便是最廉價(jià)的現(xiàn)代計(jì)算機(jī)也會(huì)包含一個(gè)以上的CPU。數(shù)據(jù)庫(kù)服務(wù)系統(tǒng)通常會(huì)跨多個(gè)獨(dú)立磁盤設(shè)備分布保存數(shù)據(jù)庫(kù)文件。 沒有并行技術(shù)的時(shí)候,也就是SQL語句被順序處理,一個(gè)會(huì)話只能利用這些CPU或者磁盤設(shè)備其中之一。結(jié)果,串行執(zhí)行SQL語句不能利用整個(gè)計(jì)算機(jī)的處理能力。并行執(zhí)行使得單個(gè)會(huì)話和SQL語句能利用多個(gè)CPU和磁盤設(shè)備
23、的處理能力。 并行處理可以把合適的SQL語句的性能提升到一定程度,這種提升程度通常是其它任何方法都做不到的。2) 高效SQL 關(guān)于SQL語句的優(yōu)化,首先也是要使用工具,比如:MySQL SQL Query Analyzer,Oracle SQL Performance Analyzer,或是微軟SQL Query Analyzer,基本上來說,所有的RMDB都會(huì)有這樣的工具,來讓你查看你的應(yīng)用中的SQL的性能問題。 還可以使用explain來看看SQL語句最終Execution Plan會(huì)是什么樣的。還有一點(diǎn)很重要,數(shù)據(jù)庫(kù)的各種操作需要大量的內(nèi)存,所以服務(wù)器的內(nèi)存要夠,優(yōu)其應(yīng)對(duì)那些多表查詢的S
24、QL語句,那是相當(dāng)?shù)暮膬?nèi)存。4.6 數(shù)據(jù)庫(kù)1) 數(shù)據(jù)庫(kù)診斷報(bào)告通常數(shù)據(jù)庫(kù)工具都會(huì)集成自身的性能診斷分析工具,收集統(tǒng)計(jì)數(shù)據(jù)庫(kù)運(yùn)行的狀況,通過分析診斷報(bào)告,可以明確數(shù)據(jù)庫(kù)優(yōu)化的內(nèi)容。2) 數(shù)據(jù)庫(kù)參數(shù)數(shù)據(jù)庫(kù)的相關(guān)參數(shù),在系統(tǒng)運(yùn)行中起到關(guān)鍵的作用,合理的設(shè)置,能夠充分的發(fā)揮數(shù)據(jù)庫(kù)服務(wù)器的計(jì)算資源利用率,充分提高的數(shù)據(jù)庫(kù)的性能。3) 表空間根據(jù)業(yè)務(wù)模塊的數(shù)據(jù)讀寫頻率,或者磁盤本身的讀寫效率,合理的分配表空間,將讀寫頻繁的數(shù)據(jù)分別置于不同磁盤,提高表空間的利用率,從而整體提高數(shù)據(jù)讀寫的效率,均衡磁盤讀寫的壓力。如:常用的表空間利用率優(yōu)化方法有:數(shù)據(jù)與索引表空間分離、同一表空間文件分置在不同磁盤、對(duì)象型數(shù)據(jù)
25、存儲(chǔ)獨(dú)立表空間等等。 a) 建立分區(qū)表按照數(shù)據(jù)庫(kù)的設(shè)計(jì)原理,當(dāng)一個(gè)數(shù)據(jù)表的數(shù)據(jù)量非常大時(shí)(通常超過千萬級(jí)別),通過建立分區(qū)表,可以有效提高數(shù)據(jù)讀寫的效率,降低死鎖情況的發(fā)生。b) 碎片整理作為影響數(shù)據(jù)庫(kù)性能的一大因素?cái)?shù)據(jù)庫(kù)碎片,應(yīng)當(dāng)引起DBA的足夠重視,及時(shí)發(fā)現(xiàn)并整理碎片乃是DBA一項(xiàng)基本維護(hù)優(yōu)化的內(nèi)容。c) 范式設(shè)計(jì)在設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)時(shí),應(yīng)該讓數(shù)據(jù)表盡量的符合第三范式等級(jí),以便最大限度地提高數(shù)據(jù)的一致性,減少數(shù)據(jù)冗余和不規(guī)則的更新,這是數(shù)據(jù)庫(kù)設(shè)計(jì)的常識(shí)。第三范式的數(shù)據(jù)庫(kù)操作往往比第一范式、第二范式需要更多的表連接,會(huì)非常消耗CPU和磁盤IO資源,從而降低系統(tǒng)性能。其實(shí),合理的引入非規(guī)范化設(shè)計(jì),
26、反而會(huì)簡(jiǎn)化查詢,改善系統(tǒng)的性能。非規(guī)范化的過程可以根據(jù)性能方面的不同,采用不同的方法進(jìn)行,從實(shí)踐經(jīng)驗(yàn)可以利用下面的方法提高性能:² 規(guī)范化設(shè)計(jì)產(chǎn)生了四路或者更多路的合并關(guān)系,可以考慮數(shù)據(jù)實(shí)體中加入重復(fù)屬性。² 常用的計(jì)算字段(如合計(jì)、最大、最小值)可以考慮直接存儲(chǔ)到數(shù)據(jù)庫(kù)實(shí)體中,減少每次計(jì)算帶來的資源消耗。² 重新定義實(shí)體以減少行列數(shù)據(jù)的消耗。4) 索引a) 建立索引常用的規(guī)則² 表的主鍵、外鍵必須有索引;² 數(shù)據(jù)量超過300條或者多個(gè)數(shù)據(jù)塊的表應(yīng)該有索引;² 經(jīng)常與其他表進(jìn)行連接的表,在連接字段上應(yīng)該建立索引;² 經(jīng)常出現(xiàn)
27、在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引;² 索引應(yīng)該建在選擇性高的字段上;² 索引應(yīng)該建在小字段上,對(duì)于大的文本字段甚至超長(zhǎng)字段,不要建索引;² 復(fù)合索引的建立需要進(jìn)行仔細(xì)分析;盡量考慮用單字段索引代替:² 正確選擇復(fù)合索引中的主列字段,一般是選擇性較好的字段;² 復(fù)合索引的幾個(gè)字段是否經(jīng)常同時(shí)以AND方式出現(xiàn)在Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復(fù)合索引;否則考慮單字段索引;² 如果復(fù)合索引中包含的字段經(jīng)常單獨(dú)出現(xiàn)在Where子句中,則分解為多個(gè)單字段索引;² 如果復(fù)合索引所包
28、含的字段超過3個(gè),那么仔細(xì)考慮其必要性,考慮減少?gòu)?fù)合的字段;² 如果既有單字段索引,又有這幾個(gè)字段上的復(fù)合索引,一般可以刪除復(fù)合索引;² 頻繁進(jìn)行數(shù)據(jù)操作的表,不要建立太多的索引;² 刪除無用的索引,避免對(duì)執(zhí)行計(jì)劃造成負(fù)面影響;以上是一些普遍的建立索引時(shí)的判斷依據(jù)。索引的建立必須慎重,對(duì)每個(gè)索引的必要性都應(yīng)該經(jīng)過仔細(xì)分析,要有建立的依據(jù)。因?yàn)樘嗟乃饕c不充分、不正確的索引對(duì)性能都毫無益處:在表上建立的每個(gè)索引都會(huì)增加存儲(chǔ)開銷,索引對(duì)于插入、刪除、更新操作也會(huì)增加處理上的開銷。另外,過多的復(fù)合索引,在有單字段索引的情況下,一般都是沒有存在價(jià)值的;相反,還會(huì)降低數(shù)據(jù)
29、增加刪除時(shí)的性能,特別是對(duì)頻繁更新的表來說,負(fù)面影響更大。b) 創(chuàng)建索引的注意事項(xiàng)在創(chuàng)建Oracle索引時(shí),有一些問題使我們需要注意的,下面介紹創(chuàng)建Oracle索引的一些注意事項(xiàng),希望對(duì)您學(xué)習(xí)創(chuàng)建Oracle索引方面能有所幫助。1、一般來說,不需要為比較小的表創(chuàng)建索引;2、即使是大表,如果經(jīng)常需要查詢的數(shù)據(jù)不超過10%到15%的話,那就沒有必要為其建立索引的必要。因?yàn)榇藭r(shí)建立索引的開銷可能要比性能的改善大的多。這個(gè)比例只是一個(gè)經(jīng)驗(yàn)的數(shù)據(jù)。如果數(shù)據(jù)庫(kù)管理員需要得出一個(gè)比較精確的結(jié)論,那么就需要進(jìn)行測(cè)試分析。3、如對(duì)于一些重復(fù)內(nèi)容比較少的列,特別是對(duì)于那些定義了唯一約束的列。在這些列上建立索引,往
30、往可以起到非常不錯(cuò)的效果。如對(duì)于一些Null值的列與非Null值的列混合情況下,如果用戶需要經(jīng)常查詢所有的非Null值記錄的列,則最好為其設(shè)置索引。如果經(jīng)常需要多表連接查詢,在用與連接的列上設(shè)置索引可以達(dá)到事半功倍的效果。4、數(shù)據(jù)庫(kù)管理員,需要隔一段時(shí)間,如一年,對(duì)數(shù)據(jù)庫(kù)的索引進(jìn)行優(yōu)化。該去掉的去掉,該調(diào)整的調(diào)整,以提高數(shù)據(jù)庫(kù)的性能。5、通常來說,表的索引越多,其查詢的速度也就越快。但是,表的更新速度則會(huì)降低。這主要是因?yàn)楸淼母?如往表中插入一條記錄)速度,反而隨著索引的增加而增加。這主要是因?yàn)?,在更新記錄的同時(shí)需要更新相關(guān)的索引信息。為此,到底在表中創(chuàng)建多少索引合適,就需要在這個(gè)更新速度與
31、查詢速度之間取得一個(gè)均衡點(diǎn)。6、對(duì)于一些數(shù)據(jù)倉(cāng)庫(kù)或者決策型數(shù)據(jù)庫(kù)系統(tǒng),其主要用來進(jìn)行查詢。相關(guān)的記錄往往是在數(shù)據(jù)庫(kù)初始化的時(shí)候倒入。此時(shí),設(shè)置的索引多一點(diǎn),可以提高數(shù)據(jù)庫(kù)的查詢性能。同時(shí)因?yàn)橛涗洸辉趺锤拢运饕容^多的情況下,也不會(huì)影響到更新的速度。即使在起初的時(shí)候需要導(dǎo)入大量的數(shù)據(jù),此時(shí)也可以先將索引禁用掉。等到數(shù)據(jù)導(dǎo)入完畢后,再啟用索引。可以通過這種方式來減少索引對(duì)數(shù)據(jù)更新的影響。相反,如果那些表中經(jīng)常需要更新記錄,如一些事務(wù)型的應(yīng)用系統(tǒng),數(shù)據(jù)更新操作是家常便飯的事情。此時(shí)如果在一張表中建立過多的索引,則會(huì)影響到更新的速度。4.7 硬件在IT人的眼里硬件的費(fèi)用是很高的,軟件成本是很低的甚至可以忽略,因?yàn)橛布枰?gòu)買,基本上沒有免費(fèi)的硬件,而軟件可以選擇開源免費(fèi)的,或者自己開發(fā)。因此在遇到性能問題是程序員首先想到的優(yōu)化軟件性能。但在這個(gè)人工成本上升,硬件成本下降,硬件性能或容量隨摩爾定率的發(fā)展的時(shí)代,我們也應(yīng)該重視硬件的優(yōu)化方法。通過硬件升級(jí)可以快速解決系統(tǒng)性能問題,對(duì)于可預(yù)估的系統(tǒng)容量性價(jià)很好。但頂配或者新出來的硬件貴得離譜,最新的硬件往往也會(huì)存在一些未知的BUG,所以硬件升級(jí)一般不會(huì)選擇1年內(nèi)出來的全新架構(gòu)的設(shè)備,而通常選擇2年以上比較
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版法律服務(wù)企業(yè)法務(wù)專員職位勞動(dòng)合同3篇
- 二零二五版房屋買賣合同范本下載涉及裝修及家具家電條款3篇
- 二零二五年時(shí)尚服飾品牌區(qū)域獨(dú)家代理銷售合同2篇
- 二零二五年度航空貨運(yùn)大客戶承運(yùn)合同范本3篇
- 二零二五年建筑材料出口銷售與綠色認(rèn)證合同3篇
- 二零二五版grc構(gòu)件生產(chǎn)、安裝與裝配式建筑推廣實(shí)施合同3篇
- 二零二五版技術(shù)開發(fā)與成果轉(zhuǎn)化合同3篇
- 二零二五年建筑材料運(yùn)輸及安裝服務(wù)合同6篇
- 二零二五年度家具安裝與室內(nèi)空氣凈化合同2篇
- 二零二五版展覽館場(chǎng)地租賃合同范本(含展覽策劃服務(wù))3篇
- 公路工程施工現(xiàn)場(chǎng)安全檢查手冊(cè)
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機(jī)跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 禮品(禮金)上交登記臺(tái)賬
- 北師大版七年級(jí)數(shù)學(xué)上冊(cè)教案(全冊(cè)完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計(jì)算規(guī)則1994
評(píng)論
0/150
提交評(píng)論