日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫連接性能深度探索

當(dāng)你在設(shè)計一個數(shù)據(jù)庫應(yīng)用程序時,有時你可能覺得數(shù)據(jù)庫連接類型并不重要,如果真這樣的話你就大錯特錯了,下面列舉出一些原因說明連接類型為什么是如此重要:

成都創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機網(wǎng)站開發(fā)等網(wǎng)站方面業(yè)務(wù)。

◆相對數(shù)據(jù)庫應(yīng)用程序執(zhí)行的其它任務(wù)而言,創(chuàng)建數(shù)據(jù)庫連接是最消耗系統(tǒng)資源的了

◆打開數(shù)據(jù)庫連接時在服務(wù)器端和客戶端消耗的內(nèi)存都是比較多的

◆建立一個連接時需要在服務(wù)器和客戶端之間往返多次

◆連接打開過多可能造成內(nèi)存不足,引起從內(nèi)存中換頁轉(zhuǎn)移到磁盤上換頁,這樣性能就會顯著下降

◆以目前流行的架構(gòu),大多數(shù)應(yīng)用程序都是使用連接池,這樣性能會有所提升,但許多時候連接池調(diào)整不好也會引起性能顯著下降,連接池的設(shè)計、調(diào)整和監(jiān)控難度都比較大

實現(xiàn)連接的步驟如下:

◆從連接池獲得一個連接

◆按需要一次只創(chuàng)建一個連接

正確的決策主要依賴于數(shù)據(jù)庫服務(wù)器的CPU和內(nèi)存條件。

為什么連接開銷比較大?

開發(fā)人員經(jīng)常認為建立一個數(shù)據(jù)庫是一個簡單的要求,不就是在數(shù)據(jù)庫服務(wù)器和初始化用戶之間的一個網(wǎng)絡(luò)往返嗎,但實際上,一個數(shù)據(jù)庫連接在驅(qū)動和數(shù)據(jù)庫服務(wù)器之間有多次網(wǎng)絡(luò)往返,例如,當(dāng)某個驅(qū)動連接到Oracle或Sybase時,這個連接會有7到10和網(wǎng)絡(luò)往返,執(zhí)行了一系列的動作:

◆校驗用戶的身份證書

◆在數(shù)據(jù)庫驅(qū)動期望的代碼頁設(shè)置和數(shù)據(jù)庫可用的代碼頁設(shè)置之間進行協(xié)商(如果必要的話)

◆獲取數(shù)據(jù)庫版本信息

◆確定用于通信的最理想的數(shù)據(jù)庫協(xié)議包大小

◆設(shè)置會話設(shè)置

此外,數(shù)據(jù)庫管理(開發(fā)人員承擔(dān)數(shù)據(jù)庫管理員職責(zé)時的最佳做法)系統(tǒng)要確定建立連接使用的資源,包括性能開銷較大的磁盤I/O和內(nèi)存分配,你可能會認為將應(yīng)用程序部署到數(shù)據(jù)庫服務(wù)器上會消除網(wǎng)絡(luò)往返,在大多數(shù)情況下這并不現(xiàn)實,因為現(xiàn)實世界中大部分企業(yè)并不會這么干,它們有很多的應(yīng)用程序,有很多的數(shù)據(jù)庫,此外,數(shù)據(jù)庫服務(wù)器都會為數(shù)據(jù)庫系統(tǒng)進行精心的性能調(diào)整,一般不會為不同的應(yīng)用程序進行調(diào)整,即使可以在一臺機器上安裝數(shù)據(jù)庫和應(yīng)用程序,但這樣也會有單點故障的隱患。

使用連接池

連接池是一個和多個可重復(fù)使用的物理數(shù)據(jù)庫連接的緩存,連接池可以顯著提高性能,因為重復(fù)使用連接可以有效減少建立物理連接的系統(tǒng)開銷,這里必須要說明的是你的數(shù)據(jù)庫服務(wù)器必須要有足夠的內(nèi)存來管理連接池中的連接。

我們討論的重點是客戶端連接池(由數(shù)據(jù)庫驅(qū)動和應(yīng)用程序服務(wù)器提供的連接池)而不是服務(wù)器端的連接池(由數(shù)據(jù)庫管理系統(tǒng)提供的連接池),有些數(shù)據(jù)庫管理系統(tǒng)提供的連接池要和客戶端連接池一起工作,雖然不同的服務(wù)器端連接池各有特色,但總體目標都是為了消除建立和移除連接時數(shù)據(jù)庫服務(wù)器的系統(tǒng)開銷。和客戶端連接池不一樣,服務(wù)器端連接池不會優(yōu)化到應(yīng)用程序的網(wǎng)絡(luò)往返。

正如我們在前面提到的,連接到數(shù)據(jù)庫的系統(tǒng)開銷是比較大的,因為數(shù)據(jù)庫驅(qū)動的資源分配(在驅(qū)動和數(shù)據(jù)庫之間的網(wǎng)絡(luò)往返)和數(shù)據(jù)庫服務(wù)器上的資源分配開銷都比較大,客戶端連接池只能解決數(shù)據(jù)庫服務(wù)器上自由分配的問題。

連接池如何工作

在連接池環(huán)境中,一旦建立了初始化物理連接,它就很可能在環(huán)境的生命周期內(nèi)都不會關(guān)閉,即當(dāng)應(yīng)用程序斷開連接后,物理連接不會關(guān)閉,相反,它仍然存在于連接池中,可以被重復(fù)使用,因此重新建立連接的速度就更快。下面對連接池如何工作做一個簡單的介紹:

◆當(dāng)應(yīng)用程序或應(yīng)用程序服務(wù)器啟動時,連接池中開始進駐連接;

◆應(yīng)用程序產(chǎn)生一個連接請求;

◆由驅(qū)動或連接池管理器(依賴于你的架構(gòu))從連接池中分配一個連接給應(yīng)用程序,不用再建立新的連接,這意味著在驅(qū)動和服務(wù)器之間不會產(chǎn)生網(wǎng)絡(luò)往返,因為池中的連接是可用的,因此連接速度就更快了;

◆應(yīng)用程序連接到數(shù)據(jù)庫;

◆當(dāng)連接關(guān)閉時,它被放回連接池中。

什么時候不使用連接池

有些應(yīng)用程序不適合使用連接池,如果你的應(yīng)用程序具有下列特征就不適合使用連接池,實際上,在這些應(yīng)用程序上強制使用連接池反而會導(dǎo)致性能下降:

◆應(yīng)用程序每天會重新啟動多次:這通常出現(xiàn)在沒有使用應(yīng)用程序服務(wù)器的架構(gòu)中,依賴于連接池的配置,應(yīng)用程序每次啟動時可能都會向連接池寫入一條記錄,這樣反而增加了連接池的系統(tǒng)開銷;

◆單用戶應(yīng)用程序,如報表書寫程序:如果你的應(yīng)用程序只需要為一個用戶建立一個連接,這個時候使用連接池就顯得多余了;

◆運行單用戶批處理作業(yè)的應(yīng)用程序,如每日/周/月報告程序:連接池并不適合于批處理作業(yè)應(yīng)用程序,因為批處理作業(yè)往往只有一個連接,而且批處理作業(yè)往往是在業(yè)務(wù)低谷期間執(zhí)行的。

當(dāng)你的應(yīng)用程序沒有使用連接池時,最好不要在執(zhí)行SQL語句時頻繁地連接和斷開連接,因為每次連接都會產(chǎn)生5-10次網(wǎng)絡(luò)請求。

設(shè)計連接

我們以一個實際例子來說明該如何設(shè)計數(shù)據(jù)庫連接,環(huán)境詳細情況如下:

◆環(huán)境包括的中間層必須支持20-100個并發(fā)的數(shù)據(jù)庫用戶,性能是關(guān)鍵

◆中間層和數(shù)據(jù)庫服務(wù)器上CPU和內(nèi)存都是充足的

◆數(shù)據(jù)庫是Oracle,SQL Server,Sybase或DB 2

◆應(yīng)用程序使用的API是ODBC,JDBC或ADO.NET

◆數(shù)據(jù)庫服務(wù)器有25個連接許可

下面是一些可行的解決方案:

◆解決方案1:使用連接池,最大支持20個連接,每個語句一個連接

◆解決方案2:使用連接池,最大支持5個連接,每5個語句1個連接

每5-25個語句使用一個連接

這個例子中最關(guān)鍵是中間層和數(shù)據(jù)庫服務(wù)器要有足夠的CPU和內(nèi)存容量,同時數(shù)據(jù)庫服務(wù)器要有足夠的許可,其它信息都與數(shù)據(jù)庫連接設(shè)計沒什么關(guān)系。

解決方案1是最佳的,它比其它兩個方案都執(zhí)行得要好,因為每個連接執(zhí)行一個語句速度更快,解決方案2和3的架構(gòu)都是多個語句使用一個連接,單個連接會成為瓶頸。

小結(jié)

許多因素都會影響到性能,有些可能超出了你的控制范圍,但經(jīng)過精心設(shè)計應(yīng)用程序和中間層配置,可以使性能趨于理想狀態(tài),在設(shè)計應(yīng)用程序時建議最好使用數(shù)據(jù)庫連接池或按需要一次創(chuàng)建一個連接。

 

【編輯推薦】

  1. DB2數(shù)據(jù)庫設(shè)計的三個建議
  2. NoSQL真的能終結(jié)關(guān)系數(shù)據(jù)庫?
  3. Oracle服務(wù)器參數(shù)文件維護的四個技巧
  4. 優(yōu)化SQL Server數(shù)據(jù)庫查詢技巧
  5. DB2數(shù)據(jù)庫基本操作指令30條

分享文章:數(shù)據(jù)庫連接性能深度探索
本文地址:http://m.5511xx.com/article/dppchhj.html