大型數(shù)據(jù)庫如何提升IBM Lotus Domino服務(wù)器的性能
描述總體性能的文檔已經(jīng)非常多,但它們都建立在這樣的假設(shè)之上:Lotus Domino 的性能僅受事務(wù)數(shù)量的影響。實踐經(jīng)驗表明,與性能相關(guān)的挑戰(zhàn)已經(jīng)擴展到使用類型,而不僅僅受限于事務(wù)的數(shù)量。
一個重要的問題就是,傳輸和存儲的郵件的大小和數(shù)量都比以前要大。在許多環(huán)境中,除了處理傳統(tǒng)的消息發(fā)送之外,Lotus Domino 還成為分發(fā)、文檔管理和存儲的中心。從本質(zhì)上講,Lotus Domino 環(huán)境為了滿足客戶需求而變得更加復(fù)雜了。所以現(xiàn)在的郵件文件比以前要大,并且還會一直增長。
一些客戶正在忙著對付不斷增長的郵件文件,從而確定如何處理數(shù)據(jù)并了解這些增長對性能的影響。受到業(yè)務(wù)需求的驅(qū)動,可能一個用戶(或一組用戶)就有多達(dá) 10 GB 的郵件文件,或者出現(xiàn)許多大型的郵件文件。有關(guān)這些增長對系統(tǒng)性能的影響的信息比較有限,因此如果管理員沒有很好地理解性能如何受到影響的話,就難以采取補救措施。
一些常見的問題包括:
- 對目前的最佳調(diào)優(yōu)配置而言,郵件文件變大意味著什么?
- 幾個大型郵件文件真的會嚴(yán)重影響其他用戶獲得的性能嗎?
- 郵件文件大小增加如何影響系統(tǒng)資源?
本文測試各種配置并檢查它們?nèi)绾斡绊懣傮w性能,從而對這些問題進行研究。
我們對許多處理性能問題的標(biāo)準(zhǔn)方法進行了測試,以演示這些配置可能帶來的益處。盡管測試能解決許多場景中碰到的問題,但是要注意每個環(huán)境的參數(shù)都是不能改變的并且在大多數(shù)情況下是統(tǒng)一的。當(dāng)將參數(shù)直接轉(zhuǎn)移到特定環(huán)境或?qū)嶋H的生產(chǎn)負(fù)載時,必須多加注意。
注意:您不能期望通過不同的調(diào)優(yōu)方式來實現(xiàn)性能的大幅提升。性能調(diào)優(yōu)的本質(zhì)就是獲得更高的資源效率。調(diào)優(yōu)是一個反復(fù)的過程,并且這樣的調(diào)優(yōu)的好處很明顯;越難越復(fù)雜的調(diào)優(yōu)可能其價值就越低。最重要的是,任何性能的提升都受到基礎(chǔ)資源能力的限制。本文的目標(biāo)不是提供一個明確的指導(dǎo)方針,而是為更常見的場景提供一個新的視角。
測試在運行 AIX® 5.3 系統(tǒng)的 pSeries® 630 機器上完成,該機器有 4 個 PowerPC®_POWER4™ 處理器,總主頻為 1453 MHz。該系統(tǒng)的 RAM 為 8 GB,它的數(shù)據(jù)和 Domino 目錄使用 IBM SSA® 160 SerialRAID 適配器 (4109100) 在 20 個 SSA160 物理磁盤驅(qū)動器上進行測試,每個磁盤大小為 18 GB(見表 1)。
硬件 | 細(xì)節(jié) |
---|---|
CPU | 4 個 PowerPC_POWER4,總主頻為 1453 MHz |
內(nèi)存 | 8 GB |
以太適配器 20 SSA160 物理磁盤驅(qū)動器 | 10/100 Mbps Ethernet PCI Adapter II |
存儲 | 20 個 SSA160 物理磁盤驅(qū)動器,10000 轉(zhuǎn)/分 RAID 0 / 使用并行調(diào)度的最大磁盤間(interdisk)策略 |
表 2 列出了測試的軟件細(xì)節(jié)。
軟件 | 版本 |
---|---|
AIX | 5.3 |
Lotus Domino 32 位 | 8.0 |
Lotus Domino 64 位 | 8.0.1 |
Server.Load 客戶機 | 7.0.3 |
Template | StdR7Mail |
目標(biāo)和方法
測試的目標(biāo)是在服務(wù)器上執(zhí)行高強度并發(fā)行為時,度量各種配置更改對性能的影響。
通過運行一些基礎(chǔ)的測試負(fù)載來了解典型負(fù)載對服務(wù)器的影響,與之形成對比的是運行具有大型數(shù)據(jù)庫的負(fù)載。在運行基礎(chǔ)負(fù)載后,將實現(xiàn)各種不同的調(diào)優(yōu)更改,看看這些更改是否對性能產(chǎn)生影響。 #p#page_title#e#
除了輸入/輸出(I/O)發(fā)生改變之外,還可能對以下事物產(chǎn)生一些有趣的影響:
- 文檔的數(shù)量
- 事務(wù)日志
- 多個 Lotus Domino 服務(wù)器處理同一個負(fù)載
- 文檔的大小
- 改變物理內(nèi)存的配置和使用
通過實現(xiàn) Server.Load 向服務(wù)器生成負(fù)載。使用基于內(nèi)置 Notes® Remote Procedure Call (NRPC) 例程的定制腳本來模擬用戶行為,這些行為包括:
- 打開數(shù)據(jù)庫
- 打開并更新一個視圖或文件夾
- 打開、創(chuàng)建、刪除和發(fā)送郵件和日程表條目
- 安排日程活動
注意:隨 Server.Load 附帶的測試負(fù)載被設(shè)計為類似 “正常的” 使用模式。我們使用了專門用來耗費系統(tǒng)資源的腳本來完成測試。這個測試中的值并不代表正常情況下的使用;相反,它們反映所有用戶試圖最大限度地影響服務(wù)器時的使用情況。
表 3 給出了使用 dd 命令進行測試時的 I/O 子系統(tǒng)的持續(xù)性能度量。dd 命令是一個 UNIX® 命令,它允許您使用文件副本類型的操作控制 I/O 流。這個命令沒有反映 Lotus Domino 服務(wù)器上的實際使用,因為 Lotus Domino 數(shù)據(jù)庫的 I/O 模式一直都是多線程和隨機的。不過,它確實反映了底層硬件的基礎(chǔ)性能。此外,使用 RAM 磁盤文件系統(tǒng)再次運行了這個測試,以顯示速度方面的差異。
子系統(tǒng) | 結(jié)果 |
---|---|
RAM 磁盤 | 242 MB/秒 |
JFS2 | 寫速度為 20 MB/秒,讀速度為 39 MB/秒 |
我們關(guān)心的兩個方面是響應(yīng)時間和資源使用;因此,我們的最終目標(biāo)是最大限度地提供資源,同時縮短對用戶的響應(yīng)時間。
在我們的測試中,幾乎耗盡事務(wù)時間的兩個操作是 UPDATE_NOTE 和 Notes Indexing Facility (NIF) 操作(OPEN_COLLECTION 和 UPDATE_COLLECTION 等等)。在所有測試中,這些操作占用的事務(wù)時間占據(jù)了總事務(wù)時間的大部分。
因此,事務(wù)時間隨著用戶的增多而增加,而每分鐘處理的事務(wù)數(shù)量則不斷下降。從本質(zhì)上講,用戶越多操作就越多,這就導(dǎo)致性能下降(見圖 1)。
目前的資料和經(jīng)驗表明,郵件的性能取決于影響收件箱操作的因素。這是有一定道理的,因為這是最常用的 NIF 結(jié)構(gòu)(即視圖/文件夾)。當(dāng) NIF 結(jié)構(gòu)變大時,對資源使用和操作時間的影響尤為明顯。
圖 2 顯示了對 250 位使用不同數(shù)量的文檔的用戶的性能影響。這些結(jié)果和以前得出的結(jié)果一致。盡管這不足為奇,但在這里關(guān)鍵是了解數(shù)據(jù)庫(甚至是視圖)的大小會增加處理一個事務(wù)所需的資源。
您可以將該結(jié)果與事務(wù)或用戶的實際數(shù)量不斷增加的場景相比較。有趣的是,當(dāng)我們僅關(guān)注每分鐘的事務(wù)數(shù)量時,如果將文檔的數(shù)量增加 10 倍,這比將用戶數(shù)量增加 10 倍產(chǎn)生的負(fù)面影響還大。
這是一個寬泛的比較,但它反映了文檔的數(shù)量與用戶的數(shù)量一樣,都會影響性能。它們都對時間和資源產(chǎn)生負(fù)面影響。
下面這些因素對性能的影響不是很大:
- 收件箱之外的文檔的數(shù)量(例如,在其他文件夾或 All Documents 視圖中)
- 存儲的文檔的大小
- 使用的文檔的大小
注意:用于測試的文檔的大小不會對平均響應(yīng)時間產(chǎn)生很大的影響,但得出的結(jié)果有很大差別。這種影響不是很明顯,主要是測試中沒有出現(xiàn)并發(fā)的情況。根據(jù)這個結(jié)果,通過測試并發(fā)性而不是數(shù)據(jù)庫的大小,可以更精確地度量大型文檔對性能的影響。
在數(shù)據(jù)庫中包含 500,000 個以上的文檔(每個文檔不超過 250 KB)的情況下,重新運行這些測試。這些結(jié)果將添加到之前的測試使用的數(shù)據(jù)庫的 All Documents 視圖,但不添加到 Inbox 視圖。這些測試結(jié)果表明,性能的差別不是很大。根據(jù)該結(jié)果,如果用戶操作是 “正常的”(即測試腳本中的操作),數(shù)據(jù)庫中的文檔的大小和數(shù)量對性能的影響不是很明顯,前提是 NIF 結(jié)構(gòu)的大小保持不變。 #p#page_title#e#
采用下面的配置,看看它們對大型收件箱的影響有多大:
- 大小不同的收件箱。我們使用這個配置作為基準(zhǔn),看看在架構(gòu)能承受的范圍內(nèi),收件箱的大小對性能的影響如何。
結(jié)果顯示影響是呈指數(shù)級增長的;即當(dāng)文檔的數(shù)量達(dá)到 80,000 時,響應(yīng)時間會呈指數(shù)級增長。
- 64 位 Domino。人們通常認(rèn)為 64 位架構(gòu)的性能遠(yuǎn)遠(yuǎn)優(yōu)于 32 位架構(gòu)。但是,由于 AIX 操作系統(tǒng)已經(jīng)運行 64 位的內(nèi)核,因此這個配置用于測試將 Lotus Domino 代碼改為 64 位時是否會對性能產(chǎn)生影響。
我們的結(jié)果表明,盡管總體響應(yīng)時間增加并且 OPEN_COLLECTION 性能下降了,但 UPDATE_NOTE 時間有略微的改進。
- 多個 Lotus Domino 服務(wù)器。Lotus Domino 不僅伸縮性很強,并且對系統(tǒng)資源的利用也很出色,尤其是內(nèi)存。使用兩個 Lotus Domino 服務(wù)器的目的是:當(dāng)減少每個 Lotus Domino 服務(wù)器的負(fù)載時,使用相同硬件資源的性能是否會改變。從技術(shù)上講,這個配置將測試使用額外的 Lotus Domino 服務(wù)器時,是否能更高效地使用系統(tǒng)資源。
事實上,效率確實得到了提升,即 OPEN_COLLECTION 時間減少,而 UPDATE_NOTE 時間基本保持不變。
- j2_nBufferPerPagerDevice。這個配置是 AIX 文件系統(tǒng)級別的設(shè)置,它調(diào)節(jié)用于文件系統(tǒng)緩沖的內(nèi)存量。如果 I/O 超過了設(shè)置的緩沖值,可以調(diào)整這個配置。盡管在這個測試中沒有多大的必要去調(diào)整該設(shè)置,但我們將從默認(rèn)的 512 K 開始增加該值,看看當(dāng)將它設(shè)置得很高時是否會有負(fù)面影響。
這個配置有細(xì)微的性能提升;不過,將該值設(shè)置為默認(rèn)值的 4 倍時,尚未發(fā)現(xiàn)有任何負(fù)面影響。
- j2_minPageReadAhead。這個配置是另一個 AIX 文件系統(tǒng)設(shè)置。它控制系統(tǒng)對于任何讀操作所能預(yù)先讀取的頁數(shù)。該配置的目標(biāo)是合并系統(tǒng)必須執(zhí)行的讀操作的數(shù)量。如果這個設(shè)置能夠明顯改善性能,那么它將表明當(dāng)同時讀取更多數(shù)據(jù)時,O/I 將會更加高效。這個結(jié)果通常表示一個更有序的 I/O 讀取模式。
結(jié)果表明 OPEN_COLLECTION 性能得到顯著提升,并且預(yù)讀取值越高性能改善越大,盡管這可能會增加 UPDATE_NOTE 時間。UPDATE_NOTE 操作確實因此而延遲一些,但有趣的是,這個模式不會隨著預(yù)讀取值的增加而延遲得更多。
- 事務(wù)日志。事務(wù)日志將所有事務(wù)寫出到一組不同的文件中。這個配置對數(shù)據(jù)庫的完整性和停機后服務(wù)器重啟十分有用。有了事務(wù)日志之后,服務(wù)器對存儲數(shù)據(jù)庫的磁盤的依賴性減弱,因為事務(wù)可以隨時刷新,而不管停機何時發(fā)生。這個測試度量該特性如何處理由大型數(shù)據(jù)庫引起的負(fù)載。
總體影響基本上是好的,但要注意,該測試條件不適用于并發(fā)事務(wù)很多的情況。低并發(fā)性的測試場景能夠獲得一定的性能提升,這是由事務(wù)日志的本質(zhì)決定的。
- 兩名用戶使用 All Documents 視圖。每個生產(chǎn)環(huán)境都存在以極端或有害的方式使用系統(tǒng)的人員。在這個測試中,有兩名用戶的數(shù)據(jù)庫都存儲了 500,000 個文檔,并且他們同時使用 All Documents 視圖。這個配置的目的是度量這種用法的影響。
有趣的是,3 次獨立運行的結(jié)果表明,只有 NIF 操作時間有細(xì)微的提升(低于 5 %)。因此,Lotus Domino 能夠處理少量異常使用,同時不給其他用戶造成明顯的影響。
- 緩沖池操作。緩沖池通常占了共享內(nèi)存的大部分,因此通??梢哉{(diào)整這個配置。這些測試度量了從默認(rèn)值 512 MB 開始,不斷增加該值所造成的影響。
結(jié)果表明性能得到有限的提升,可能是因為測試中并發(fā)事務(wù)不多。在測試運行期間,實際使用的緩沖池不超過 1 GB,盡管服務(wù)器可以使用的大小遠(yuǎn)遠(yuǎn)超過這個數(shù)值。測試結(jié)果證明了緩沖池在這里影響不大,但對于存在大量并發(fā)事務(wù)的環(huán)境是有影響的。
圖 3 演示了各個配置測試的結(jié)果。 #p#page_title#e#
這些數(shù)據(jù)表明,可以從以下方面獲得巨大的性能提升:
- 將負(fù)載分布到多個服務(wù)器。由于物理資源是相同的,使用兩個服務(wù)器就能提高資源的效率。這是因為多個服務(wù)器能夠更好地利用物理內(nèi)存,這又使 Lotus Domino 數(shù)據(jù)庫結(jié)構(gòu)緩存遠(yuǎn)遠(yuǎn)優(yōu)于文件系統(tǒng)緩存。
- 通過增加最小預(yù)讀取值來增加 I/O 使用的有序性。這可以通過提高 j2_minPageAhead 值來實現(xiàn)。這個測試表明 OPEN_COLLECTION 獲得了更好的性能,而 UPDATE_NOTE 事務(wù)的性能受到損害。不過總體影響是好的。
這是一個有趣的結(jié)果,將它與通過調(diào)節(jié) j2_nPagesPerWriteBehindCluster 增加 I/O 隨機性進行比較時,尤其如此。我們發(fā)現(xiàn) UPDATE_NOTE 事務(wù)的性能有細(xì)微的改進,但 UPDATE_COLLECTION 操作的性能更差。
得出的明顯結(jié)論就是,與正常的系統(tǒng)相比,具有更大視圖和文件夾的系統(tǒng)具有不同的 I/O 性能,因此通過調(diào)優(yōu)實現(xiàn)更加序列化的 I/O 可以大大提高性能。另一方面,對于文檔、視圖和文件夾比較小的系統(tǒng),可以通過調(diào)優(yōu)實現(xiàn)更隨機的 I/O 來提升性能。(注意,這個系統(tǒng)的頁大小為 4 K,因此一個 8 頁的預(yù)讀取為 32 K)。
- 使用 64 位 Lotus Domino 進行的測試中,UPDATE_NOTE 事務(wù)的性能有所提升,但總體性能大大下降。盡管測試大型數(shù)據(jù)庫時性能小幅下降,但是總體測試表明并發(fā)行為很多的負(fù)載表現(xiàn)不錯,如果不是更好的話。
- 我們的測試用例中的緩沖池測試受到收件箱變大的影響。由于每位用戶都使用大型的收件箱,所以可用的磁盤空間限制了我們可以測試的并發(fā)事務(wù)的數(shù)量。因此并發(fā)事務(wù)比較少,這又進一步限制了更大的緩沖池的實際影響。
盡管如此,增加緩沖池還是有一些好處的。1024 MB 的緩沖池和 1536 MB 的緩沖池產(chǎn)生的性能區(qū)別不是很大,因為并發(fā)事務(wù)少,所以增加的緩沖池沒有派上用場。
根據(jù)以前的文檔和測試,我們了解到當(dāng)緩沖池超過 1024 MB 時性能就會下降。(參見附錄更多地了解具有更大并發(fā)性的緩沖池測試)。
- 事務(wù)日志對總體性能和兩個主要事務(wù)類型的影響比較小但非常重要。結(jié)果表明啟用事務(wù)日志能夠提升性能。存在的問題是:如果日志記錄對性能的影響是正面的,那么可以通過調(diào)優(yōu)來實現(xiàn)更好的性能嗎?
以前的文檔表明事務(wù)日志需要一些開銷,因此使用它會影響性能。但對于數(shù)據(jù)庫大小比并發(fā)事務(wù)的數(shù)量更重要的壓力測試,事務(wù)日志則對性能有正面的影響。
這些結(jié)論更加證實了大型文檔對性能的影響與大量事務(wù)對性能的影響是非常不同的。因此,任何調(diào)優(yōu)和針對每種情況的配置都必須是合適的。
一個不常用并且較新的特性是 RAM 磁盤,它允許使用物理 RAM 存儲文件系統(tǒng)。當(dāng)然,它不是持久化的,但它為任何臨時的行為提供快速的 I/O。
我們測試的其他方面包括 Lotus Domino Directory 的存儲(實驗性很強)、事務(wù)日志存儲和 view_rebuild_directory Notes.ini 參數(shù)的使用。
在測試時,這些方面都不能顯著改善性能。其中的一些原因包括:
- 并發(fā)性程度不夠高。
- Lotus Domino 能夠為需要快速 I/O 的操作提供出色的物理內(nèi)存。
- 測試很嚴(yán)格,并且限制很多;不存在影響性能的其他事件。
例如,在壓力測試期間,需要有限制地重新構(gòu)建視圖。盡管這在生產(chǎn)環(huán)境中很常見,但對于一般的測試,重構(gòu)視圖則是不常見的。
當(dāng) view_rebuild_dir 參數(shù)指向 RAM 磁盤時,對重構(gòu)時間的測試表明性能得到了顯著改善。圖 4 比較了大小為 4 GB 的數(shù)據(jù)庫的重構(gòu)時間。
至此,我們得出的惟一結(jié)論就是 RAM 磁盤對視圖重構(gòu)的影響非常大。需要人為地創(chuàng)建視圖重構(gòu)條件,以進行觀察。盡管常規(guī)生產(chǎn)環(huán)境中需要重構(gòu)視圖,但一般的測試負(fù)載不需要它。
#p#page_title#e#限制因素主要是文件夾的結(jié)構(gòu)本身會限制收件箱的大小。由于這個原因,測試所用的收件箱最多只能包含 80,000 個文檔。
但是,在常規(guī)的生產(chǎn)環(huán)境中,有些用戶可能會使用服務(wù)器上的視圖或應(yīng)用程序。我們知道 Lotus Domino 能夠很好地處理這種類型的負(fù)載,但不同的配置會造成性能區(qū)別嗎?圖 5 顯示了不同功能的響應(yīng)時間的差別,其中服務(wù)器帶有在視圖中包含 400,000 個文檔的數(shù)據(jù)庫。
奇怪的是,性能最好的結(jié)果來自于在 RAM 中使用事務(wù)記錄(見圖 5 中的黃線)。這個結(jié)果在預(yù)料之外,因為在使用 80,000 個文檔的測試中,使用事務(wù)日志只產(chǎn)生很小的影響;再者,對于已測試的大型數(shù)據(jù)庫和視圖,使用事務(wù)日志產(chǎn)生的影響是負(fù)面的。
然而,通過在快速的獨立設(shè)備(在本例中是一個基于 RAM 的文件系統(tǒng))中使用日志,我們看到了顯著的性能改善。您甚至?xí)岩杉词故聞?wù)數(shù)量很少,使用大型視圖時事務(wù)日志設(shè)備也將成為性能的瓶頸。
過去的文檔表明需要使用最快的日志磁盤,所以我們使用 RAM 文件系統(tǒng)重新運行測試,看看結(jié)果是否有差別。結(jié)果表明性能的差別不大,很可能是因為并發(fā)性水平很低,日志磁盤沒有成為瓶頸。
還需要注意的是,對 view_rebuild_dir Notes.ini 參數(shù)使用 RAM 磁盤,總體性能得到提升。
從這組結(jié)果可以得出的結(jié)論是:
- 使用大型視圖可以在日志設(shè)備和視圖重構(gòu)目錄中引起很大的資源問題。配置和容量的變化對性能有巨大的影響。
- 事務(wù)日志設(shè)備的速度在視圖或文件夾活動頻繁時顯得更加重要。換句話說,帶有大型文件夾和視圖的數(shù)據(jù)庫增加了事務(wù)日志磁盤對性能的影響。
- 使用大型視圖的數(shù)據(jù)庫可從對其 view_rebuild_dir 文件系統(tǒng)使用最快的 I/O 獲得益處。
對于網(wǎng)絡(luò)壓縮統(tǒng)計數(shù)據(jù),我們使用 FTP 運行該測試以進行控制,確定數(shù)據(jù)傳輸如何影響網(wǎng)絡(luò)。在樣例測試中,我們發(fā)現(xiàn)最大速度可以達(dá)到 10 MB/秒。由于 Lotus Domino 活動是非線性的、間斷的,我們獲得的總吞吐量很可能比實際小。
不過,我們最關(guān)心的是平均讀取時間。在我們的基礎(chǔ)測試中平均讀取時間為 6.3 MB/秒,而讀操作的速度為 4.3 MB/秒左右。這些數(shù)據(jù)表明網(wǎng)絡(luò)成為了測試的瓶頸。
上面的測試似乎表明壓縮雖然在一定程度上改變了行為,但它對響應(yīng)時間的影響不是很明顯。所以,我們認(rèn)為網(wǎng)絡(luò)帶寬不是測試的主要影響因素。
此外,這些測試的并發(fā)性比前面擁有 80,000 個文檔的測試的并發(fā)性小。為了測試文檔數(shù)量很大時產(chǎn)生的影響,我們需要在數(shù)據(jù)庫大小不變的情況下進一步犧牲并發(fā)性。對于任何可調(diào)優(yōu)的、沒有產(chǎn)生預(yù)期性能影響的配置,一定要考慮該限制。
為了進一步研究該領(lǐng)域,可以考慮測試其他配置。例如,進一步研究寫 I/O 模式和網(wǎng)絡(luò)限制,并且采用更大的數(shù)據(jù)庫并提高并發(fā)性,這些只是相關(guān)想法的其中一小部分。盡管本文得出的結(jié)果并不權(quán)威,但關(guān)鍵要意識到大型數(shù)據(jù)庫的問題非常復(fù)雜。它們的行為與傳統(tǒng)的數(shù)據(jù)庫性能設(shè)想不一樣,因此也要以不同的方式處理大型數(shù)據(jù)庫服務(wù)器的管理和癥狀。
總結(jié)一下我們的測試結(jié)果:
- 與用戶數(shù)量相比,數(shù)據(jù)庫的大小對性能的影響更大;不過,數(shù)據(jù)庫大小不是惟一的影響。在事務(wù)類型和數(shù)量保持不變的情況下,對性能影響最大的是所使用的視圖或文件夾的大小,尤其是視圖或文件夾中包含的文檔的數(shù)量。
- 在正常的測試負(fù)載中,還不能證明數(shù)據(jù)庫中的文檔的大小和數(shù)量會對性能產(chǎn)生確切的影響。數(shù)據(jù)表明,當(dāng)收件箱的文檔增長時,UPDATE_NOTE 和 NIF 操作時間呈指數(shù)級增長。
不過需要注意的是,正常的測試負(fù)載不包含需要耗費大量資源的數(shù)據(jù)庫活動,并且不考慮特定視圖的大小。例如,視圖重構(gòu)和維護操作需要使用額外的資源來完成相同的任務(wù)。盡管數(shù)據(jù)庫的總大小不是影響性能的最重要指標(biāo),但它仍具有一定的影響。
- 測試證明,并發(fā)用戶對性能的影響在本質(zhì)上與大型數(shù)據(jù)庫對性能的影響存在很大的差異。我們發(fā)現(xiàn),I/O 特性表現(xiàn)出一種序列模式,因此采取不同的調(diào)試方式有利于將類似的用戶分組,從而利用配置方面的差異。 #p#page_title#e#
- 物理內(nèi)存的使用方式能夠顯著地影響性能。改變緩沖池、使用多個服務(wù)器,甚至使用 RAM 磁盤,這都表明改變內(nèi)存的配置能夠提升總體性能。這樣做也會損害性能,但是我們發(fā)現(xiàn),如果有其他方法能夠利用物理內(nèi)存減少 I/O 操作的話,在我們的測試中使用文件系統(tǒng)緩存一般作用不大。
- 并發(fā)性和數(shù)據(jù)庫大小之間的關(guān)系一直很難準(zhǔn)確界定。在某種程度上,在資源使用和對性能的總體影響方面,并發(fā)性和數(shù)據(jù)庫大小是互補的。例如,管理員可能將大型數(shù)據(jù)庫與小型數(shù)據(jù)庫結(jié)合使用,從而隱藏性能影響。另一方面,因為大型數(shù)據(jù)庫使用服務(wù)器資源更頻繁,方式也更多樣,因此將它與其他數(shù)據(jù)庫隔離開來是有好處的。
- 因為大型數(shù)據(jù)庫的行為方式差別很大,所以它對調(diào)優(yōu)和配置的反應(yīng)也非常不同。這就需要考慮一個問題,是否應(yīng)該獨立存放大型數(shù)據(jù)庫,以利用這些調(diào)優(yōu)和配置。有比較充分的證據(jù)表明這樣做是有價值的。我們希望通過清晰地定義大型數(shù)據(jù)庫的特征,增強對如何管理性能的理解。
下圖演示當(dāng)小型數(shù)據(jù)庫的并發(fā)性上升時,緩沖池的大小產(chǎn)生的影響。注意,1000 位用戶并不意味著并發(fā)性更多,它僅表示隊列請求更多。下面的測試中,包含 500 位用戶的測試實現(xiàn)了更多的并發(fā)事務(wù)。
圖 A1. update_note 時間
圖 A2. open_collections 時間和緩沖池大小
從這些圖可以看到,當(dāng)并發(fā)性程度很高時,管理緩沖池的大小能夠獲得顯著的性能提升。將這個結(jié)果與使用大型數(shù)據(jù)庫的測試進行比較,后者獲得的性能提升很細(xì)微。事實上,在大型數(shù)據(jù)庫測試期間,實際分配的緩沖池從來不超過 1 GB。這個結(jié)果演示了并發(fā)事務(wù)對緩沖池的影響,以及緩沖池的大小如何影響服務(wù)器的性能。
盡管在大型數(shù)據(jù)庫測試中緩沖池從不超過 1 GB,但在并發(fā)性程度很高的小型數(shù)據(jù)庫中,緩沖池的容量得到了充分的利用。因此在這種情況中,測試結(jié)果得出的性能提升比較顯著。不過需要注意,當(dāng)緩沖池的大小超過 1024 MB 時,就會對性能產(chǎn)生負(fù)面影響。
過去的測試和總體經(jīng)驗表明,緩沖池存在一個最佳的大?。蝗绻^這個大小,緩沖池占用的開銷將大于它帶來的好處。但不存在一個確鑿?fù)ㄓ玫臄?shù)據(jù),因為緩沖池的最佳大小隨不同的負(fù)載類型變化,但根據(jù)經(jīng)驗,當(dāng)緩沖池大于 1 GB 時往往不是什么好事。
最后,OPEN_COLLECTION 時間的改善在比例方面要遠(yuǎn)遠(yuǎn)高于用戶數(shù)量的減少。由這個結(jié)果可知,當(dāng)磁盤的負(fù)載較小時,緩沖池的效率就越高。原因之一就是緩沖池管理指向磁盤的吞吐量;不過,當(dāng)磁盤成為瓶頸時,通過配置緩沖池獲得的額外收益就被抵消了。