Microsoft SQL Server 2000 超級管理手冊(六)

博客围绕系统容量规划展开,介绍了容量规划的历史、原则等内容。着重阐述不同RAID层级(RAID 0、RAID 1、RAID 5)对磁碟I/O数量的影响,还给出计算不同RAID层级I/O数量的公式。同时说明了如何根据交易操作计算CPU使用率和所需CPU数量,以确保系统性能。

6. 容量規劃

容量規劃的種類

容量規劃的歷史

交易處理

容量規劃的原則

記憶體的容量規劃

處理器的容量規劃

磁碟子系統容量規劃

網路的容量規劃

選擇收集的資料

本章總結

容量規劃包括計算系統所需資源,以及如何將資源的生產效能最佳化,另外也包括規劃網路成長,使新增軟硬體時減少對系統執行時的影響,又兼顧成本。在本章中將會學習建立一個系統中這個重要步驟的基本要素。

容量規劃的種類
 

容量規劃分為兩種形式:前期容量規劃(Precapacity planning)和後期容量規劃(Postcapacity planning)。前期容量規劃可視為規模確定(Sizing)規劃,預測在指定時間內完成工作量的硬體需求,符合 服務範圍同意書 (Service Level Agreement,簡稱SLA)中的定義。SLA 設定了執行特定功能所需的時間必須被遵守及維護(完成一個動作或交易所使用的時間)。


說明

SLA 是所有參與系統的組織所一致同意的操作條件,用來確保高效能和平順的系統操作。舉例來說,SLA 可用來確保系統對在確定的時間內回應一項查詢。此回應時間是所有使用者、操作小組、應用程式小組和效能小組都同意的時間長度。


另外,容量的某些空間(如分配給 CPU 處理能力的空間、磁碟可用空間或可用記憶體)被保留下來,以保持這些活動在穩定的操作狀態及最大負荷條件下的回應時間。在前期容量規劃中,由於系統還沒有啟用,所以並沒有可執行的資料可供規劃參考,因此必須參考其他資訊,規劃的結果也往往取決於所參照資訊的正確性。舉例來說,設計系統的資料庫小組可以提供資料庫規劃藍圖和初始大小的細節;設計應用程式的應用程式小組,以及和應用程式相關的查詢,都可以讓我們了解一個查詢會如何使用系統資源;管理小組則可以提供同時連線的使用者數目,及透過系統查詢的數目。這些資訊可以提供一個系統可能的工作負載(可以作為決定 CPU 數量的參考),以及資料庫大小(作為決定磁碟數量的參考)等等。

後期容量規劃可視為預言分析(predictive analysis),是針對已建置完成並使用中的系統,隨時的和複雜的研究其軟硬體消耗系統資源的情況。後期容量規劃確保在系統的資源足以應付未來工作量的成長。研究的主要目的在於提供資料給資料庫管理員(DBA),使 DBA 利用資料判別是否應當調整系統,以符合 SLA 中定義的系統執行效能範圍。在這一章中,我們將看看兩種容量規劃-後期容量規劃和前期容量規劃,並分析它們的異同。

以典型的後期容量規劃而言,可以對儲存在資料庫中的歷史效能資料進行分析。透過分析可以預測 CPU 的使用率(透過觀察期間 CPU 繁忙的程度)的正常成長趨勢,以及磁碟、記憶體和網路的使用率。也可以預測當新增使用者時,可能引起 CPU、磁碟和記憶體使用率的遽增程度。這些研究可以非常詳細,並可以了解特定使用者的使用方式,以達成預測因新增使用者所引起系統使用率的遽增程度,達到容量規劃的目的。

後期容量規劃研究除了預測分析之外,也提供了其他實用的功能,例如可透過假設方式估算工作負載。透過所提供的資料了解不同性質的使用者如何使用資源後,我們可以精確的預估,當增加一個特定性質的使用者(如負責應付帳款管理的人員)至系統工作負載中的時候,會如何消耗系統資源。預測分析可讓系統管理者有充裕的時間增添所需的硬體設備,以因應新增至系統中的使用者,避免降低系統效能與回應時間。

後期容量規劃研究也提供微調資訊。微調資訊(如關於處理查詢時磁碟陣列所需用到磁碟 I/O 的資訊)來自歷史的執行資料,在想要改善系統效能時,可以用來決定應該如何更改系統設定。此資訊能顯示某個磁碟陣列的活動明顯超過另一個磁碟陣列而造成的效能瓶頸。舉例來說,新增使用者將造成資料庫資料表被存取的次數增加。使用者存取的資料表數目和存取的頻率,都可以被監控和追蹤。這項資訊幫助預測,變更資料表位置是否能避免磁碟子系統達到瓶頸。

容量規劃的歷史
 

在早期多使用者的時代,容量規劃和執行效能的概念並沒有被廣泛的理解和發展。到七十年代早期,容量規劃專案僅是簡單的找出與目標客戶執行應用程式方式相近的客戶。尋找這些客戶並不容易,而要符合公司或組織使用應用程式的方式則更加困難。

到了七十年代中期,客戶和應用程式供應商開發了一種分析方法,以執行特定的基準(benchmark)或工作負載,推算一台機器最佳的初始規模。他們建立了與目標客戶的應用程式相類似的軟體,並在類似的硬體上執行以搜集效能表現的統計資料。這些統計資料隨後便被用來決定最能符合客戶需求的機器規模,並且依基準推算當系統狀況變更時(如增加更多的使用者、處理更多應用程式等),所需的機器規模大小。這個方法最大的缺點是經費太高,所以這些早期模擬使用者使用模式的分析結果,多半被系統廠商用來擬定行銷策略,或是和競爭廠商比較同級產品的執行效能。

在這個階段,分析師發展不同的分析方法,預測使用者在現有系統中使用的情形。表面上看來,這個過程好像不太有挑戰性,其實不然。由於測試的理論法並不存在,也缺乏收集資料的工具,就連電腦科學家,像容量規劃之父-DR. Jeffrey Buzen,當時仍然在開發使用的理論和決定計算的方式,因此執行上其實還是很辛苦的。

到了八十年代,先前的基準模擬演進成為標準,例如 ST1 基準、TP1 基準和Debit/Credit 基準,不過尋找基準的重點是依系統的用量,找出最有執行效率的硬體設備,而不是開發一個使用的基準,讓硬體設備來符合這個基準。因此使用者仍然不能利用這些基準找出最適用的硬體設備,當然這是因為每個人的使用情況都不盡相同。使用者的要求導致了一個電腦公會的形成,即 Transaction Processing Performance Council。此委員會為超過 45 個硬體和軟體製造商指定了標準化的交易負荷。這些基準能顯示硬體和資料庫軟體的相關容量;可惜的是,使用者仍舊無法利用這些資訊規劃一個應用程式的工作量。


說明

公會所提供的基準無法用於規劃容量大小,原因在於這些基準無法反應實際的工作量。它們通常設計來展示效能,例如在規定時間內系統能處理多少個交易,由於這些交易所需的時間往往很短,而且處理的資料量少,因此看起來當然像是可以在短時間內處理很多的交易數量,給人系統的執行很強大的印象,但事實上只是因為執行的是設計過的工作量才產生的現象。


在此同時,主從式計算和關聯式資料庫技術的使用日趨成熟,預測系統初始大小和容量規劃的需求也在成長。現在大多數應用程式是依主從式架構編寫,伺服器一般用於中央資料儲存裝置,而使用者介面則在本地端的機器或在遠端 Web 網站上執行。這樣的使用方式讓用戶端利用原本就已熟悉的 GUI(圖形介面),以最具經濟效益的方式,有效的利用昂貴伺服器的處理功能。當大量的利用伺服器執行資料庫應用程式,伺服器儼然成為大多數大小與容量規劃研究的焦點。

時至今日,應用程式模擬基準仍是確定伺服器規模最普遍的方法。收集歷史效能資料以供容量規劃仍是預測機器未來使用的最佳方式。雖然過程昂貴費時,但如果能準確模擬伺服器的使用率,就能獲得相當的精確性。然而,由於大型專案可能需要使用者或者廠商動輒數百萬美元的投資,通常只有最大的客戶才能存取這種系統以進行試驗。顯然的,現階段我們需要一種針對小型及一般規模系統的容量規劃方法。對於這些系統來說,只要透過簡易的計算和一般的系統使用知識,即可達到對系統大小與容量規劃 90% 的正確度。

交易處理
 

在本節中,我們要看一下如何分析資料庫伺服器的 CPU、記憶體以及磁碟等等使用趨勢,以便對一個給定的應用程式選擇適當的伺服器。一個資料庫伺服器執行的僅是資料庫的功能;以其工作載量的術語來說,在伺服器上完成的僅是交易而已。當 SELECT 或 UPDATE 陳述式執行時,資料庫伺服器會將這些陳述式解譯成一連串的讀取與寫入操作。事實上,任何交易都是由資料庫的讀取操作與寫入操作來組成。在這個不可部分完成的階段,資料庫伺服器處理著這些 I/O 操作。我們所選擇的系統,必須能掌握交易的型態與數量,並能處理那些交易產生的 I/O 操作。有兩種主要交易型態: 線上交易處理 (Online Transaction Processing,OLTP)與 決策支援系統 (Decision Support System,DSS)。

OLTP 交易
 

OLTP 交易是一個工作載量單位,由於是以即時的方式或在線上模式中處理資料庫,因此通常被預期在很短的時間週期內完成。換句話說,這些交易依即時的資訊不斷的更新資料庫,使下一個使用者所存取的資訊皆為即時資訊。舉例來說,一個線上訂購系統,其所有存貨狀態的資訊可能遍佈於磁碟系統的各資料表中,(如 Item_Table 或是 Stock_Level_Table 資料表內含有商品類型和存貨數量的資訊),供線上使用者存取資料。當使用者訂購了某商品,就會存取資料表,查詢是否該商品還有存貨。

針對上述這類交易處理系統規劃其容量,一般必須透過訪談來搜集資訊。訪談中可能會與資料庫設計人員、應用程式設計人員以及業務部門交換意見。他們所提出的意見,有助於預測交易數量,預期每日處理交易的時間(例如,有 25000 次交易要在上班的8小時內完成),同時使用者的數量,以及作業尖峰時段(或說尖峰使用期,也就是處理交易時系統負荷最重的時刻)。訪談可能是確定系統規模大小過程裝最重要的部分。


說明

在設計 OLTP 系統時,選擇擁有足夠交易處理能力的硬體,以容納尖峰使用期的負載,這樣就能自動的應付最壞的狀況。



 真實世界 自動櫃員機 

現在來看自動櫃員機(ATM)的例子。假設您被一家國際銀行僱用來設計其芝加哥分行的 ATM 系統。在訪談中發現 ATM 網路的使用尖峰期是在早上11點到下午2點之間的幾個小時內-恰巧是多數人吃午飯的時間。有了這個資訊,便能選擇具有足夠容量的交易處理系統以因應這個尖峰使用期。


DSS交易
 

交易系統的第二種類型是 DSS。DSS 交易傳回的資訊相當龐大,且處理的時間比 OLTP 交易更長。一個 DSS 交易可能要花掉數小時甚至數天來處理。DSS 系統的應用範例是存貨檔案系統:除非有特別的更新,否則資料庫並不常有寫入的操作。這些系統一般可提供資訊供管理部門做出重要的決策,比方說,關於業務成長或手中持股等級的決定。另一個範例為,美國空軍利用 DSS 系統提供高層人士相關資訊,包括噴射戰鬥機、轟炸機及人員的武器裝備、當前位置與狀態。

如之前所提到的,由於 DSS 交易資料量較大,通常需要較長的時間處理,因此和 OLTP 交易所需的時間範圍不同。OLTP 交易是以唯一鍵(例如客戶號碼)來搜集所需的資料,查詢的開始與結束僅與唯一鍵的資訊有關。而在 DSS 中,查詢並不是由唯一鍵開始,相反的,它由資料庫資料表的起始處開始,從頭到尾查詢資料表中所有的資料。一個 DSS 交易也會包含任何資料表連結,連向其他資料表以或得更多資訊。


說明

在設計 DSS 系統時,選擇較大的資料區塊,這樣每次 I/O 傳遞操作能傳遞較多的記錄,減少 I/O 活動。


在這類系統中,效能分析師希望看到 CPU 和其他系統資源的使用率可達到100%,因此我們關心的不是系統正在執行的應用類型,而是系統需要多長的時間來處理查詢。設計 DSS 系統的一個經驗法則為:盡可能加強硬體配備。換言之,不要僅設計足夠的磁碟空間應付資料庫的需求,而要規劃把資料庫配置到多個磁碟區以分散 I/O 活動。記憶體的問題在此處並不列入考慮,因為這裡並沒有太多的快取(cache)活動。(DSS 交易包括完整資料表掃描,也就是說資料表的查詢是從第一行到最後一行。)


 真實世界 當季銷售 

假設您正在將當季銷售數字編輯成公司報告,需要收集組織所在地區中本季的商品銷售資訊。搜尋方式會首先會連結到 region 資料表的第一行,以得到第一個 customer 資料表。在找到第一個客戶名稱後,會連結到 customer order 資料表,以確定該客戶在當季是否訂購了商品。持續搜尋第二個客戶名稱,接著第三個,以此類推。在搜尋完該地區的客戶後,才會到下一個 customer 資料表(按地區區分),繼續搜尋程序。所以查詢的過程通常需要幾個小時才能完成。


容量規劃的原則
 

當無法定義尖峰使用期,可以估計在穩定狀態過程中預期的交易活動來完成前期容量規劃。


說明

 固定狀態 指的是在上班時間內預估的 CPU 使用率。舉例來說,如果預估上班時間內的 CPU 使用率是55%,那麼它就是固定狀態。如果在同一天中,系統在某一小時的使用率達到 90%,那就是尖峰使用期。


一旦知道上班時間內預估完成的交易最大數量,以及處理的時間長度,就可以計算每一單位時間裡的平均交易數量。不過,由於並不知道交易發生的實際速率,您應在規劃系統大小時預設保留空間。 保留空間 (reserve capacity)指的是保留一部份系統處理能力,以應付工作負載較高的時期。

一個訂購系統的後期容量規劃,應包括持續地監控主要效能計數器,以記錄系統過去與現在的執行狀況。這些資訊通常被儲存在資料庫中,並利用在效能、容量消耗與保留空間的綜合報告中。可利用資料庫應用程式(如 Microsoft Excel)產生圖形、試算表以及交易活動報告,藉以預測機器資源的使用資訊。

CPU使用率
 

之所以要在機器上建立保留空間,與 曲線拐點(knee of the curve) 理論有關。簡單地說,這個理論的推論是,使用率直接影響佇列,而佇列長度直接影響回應時間(事實上,佇列長度是回應時間公式的一部分),因此使用率直接影響回應時間。當回應時間或佇列長度這類因子,由線性成長轉變為依指數成長,或是趨於漸進線(到無限遠),轉變的那一點即稱為曲線拐點。


 真實世界 超級市場的使用率與回應時間 

我們以一個超級市場為範例,看看使用率和回應時間的關係。在這裡, 使用率 定義為 使用收銀員的頻率  服務時間 定義為 收銀員拿起商品到算帳結束之間的時段 。假設您在凌晨3點來到超級市場,由於是凌晨時分,我們假設和您一樣出來晃蕩的人不多,因此收銀員的使用率為0%,佇列長度(排在您前面的人數)也是0,於是收銀員的回應時間將等於服務時間(因為幾乎是馬上回應)。

想像一下同樣的情境發生在下午5點的時候。此時超級市場非常繁忙。結帳時有八個人排在您的前面(也就是說,佇列長度是8)。現在的回應時間就等於前面八個人服務時間,將上自己所需服務時間的總和(時間的長短還得由購買物品的數量,付款方式等等因素來決定)。收銀員在下午5點時的使用率比凌晨3點要高很多,這種差異也直接影響了佇列時間的長短與回應時間。


線性成長 vs. 指數成長
 

一般說來,我們會試著讓系統的運作維持線性關係;也就是說,讓佇列以線性方式成長。如圖6-1所示,線性成長指的是佇列成長與使用率成長呈正相關的狀態。經驗法則告訴我們,只要 CPU 使用率保持在75%以下,佇列成長就可維持線性。


 

圖6-1 CPU 使用率的線性成長

不過,有時 CPU 會在高於75%的穩定狀態中使用。這種情況相當不利-尤其是高使用率會造成佇列長度的指數成長。指數成長是幾何的增量成長,如圖6-2所示。


說明

本章中的每個圖形,交易的服務時間假定為0.52秒,並假定每個交易有相同的服務時間。



 

圖6-2 CPU使用率的指數成長

注意 CPU 使用率達到 75% 的地方,佇列長度的曲線由線性成長轉變為指數成長(也就是說,曲線幾乎變成垂直線)。

回應時間
 

圖6-3顯示了使用率如何直接影響回應時間。注意類似的曲線也出現在回應時間圖表與佇列長度圖表。這兩個圖表顯示了回應時間急遽增長的情形,這也就是為什麼?不要讓穩定狀態中的 CPU 使用率超過 75% 的原因。這並不是說絕不可執行 CPU 高於 75%,而是說在此情況下執行的越久,對佇列長度與回應時間的負面影響就會越大。不要超過曲線拐點-在本例中,這一點是 75% 使用率-是在規劃大小時最重要的原則之一,並且在系統需要多少數量的 CPU 時應詳加考慮。舉例來說,假設在規劃系統大小時,發現在計算所有相關因素之後,處理器使用率將達到 180%。您可以忍受像這樣一個慢得可怕的系統,或是利用兩個 CPU,讓每一處理器的使用率降到 90%-只比曲線拐點高出 15%左右。更好的辦法是,使用三個 CPU,這樣每個 CPU 的使用率就能降到 60%,低於曲線拐點 15%。

這個原則也適用於系統的其他元素,例如磁碟。磁碟的曲線拐點與處理器並不相同-磁碟使用率趨勢線的曲線拐點發生在 85% 左右。不論是磁碟容量的大小或是磁碟的 I/O 量,85% 都是合理的門檻。舉例來說,一個 9GB 的磁碟,不論何時都不應該儲存超過 7.65GB 的資料。資料儲存的限制一方面是為了以後的資料成長著想,但更重要的是,由於一個容量已經被填滿的磁碟它的搜尋時間也會變長,限制儲存的資料量相對地便可降低回應時間。依照同樣的原則,如果磁碟的 I/O 量為每秒70次 I/O 操作,磁碟就不可能在穩定狀態的運作中保證每秒有超過 60 次的 I/O 達成率。遵循我們提到的這些原則,就可以讓回應時間最小化,並且讓您的系統總是猶有餘刃,因為您不會在最大使用率下使用處理器與磁碟。系統也將有保留空間以應付尖峰使用期的考驗。


 

圖6-3 回應時間 vs. CPU使用率

說明

記住一點:要創造出理想的效能,CPU 使用率就應保持在 75% 以下,磁碟使用率則應保持在 85% 以下。


分頁錯誤(Page Faulting)
 

在規劃處理器與磁碟大小時不超過曲線拐點是最重要的原則,那記憶體呢?要規劃記憶體大小,我們使用 分頁錯誤 的原則。分頁錯誤是系統用來從磁碟擷取資料的正常功能。如果系統需要某一程式碼或資料分頁,而資料分頁已存在於記憶體中,此時會產生一個邏輯 I/O 事件,亦即該程式碼或資料會從記憶體中被讀取,而需要程式碼或資料的交易會被處理掉。

但若需要的程式碼或資料不在記憶體中呢?在這種情況下,我們就必須執行一個實體 I/O 從磁碟讀取需要的分頁。這個工作是透過分頁錯誤來完成的。當需要的程式碼或資料分頁不存在於主記憶體中系統的工作集裡,系統會發出一個分頁錯誤中斷。分頁錯誤會指示系統的其他部分從實體磁碟中擷取程式碼或資料─換句話說,如果系統正在搜尋的程式碼或資料分頁不在記憶體中,系統會發出分頁錯誤指示系統的其他部分執行一個實體 I/O,並到磁碟中去擷取需要的東西。如果分頁位於備用清單並因而存在於主記憶體中,或是分頁正被其他的程序使用中,就不會出現分頁錯誤來從磁碟擷取分頁。

實體 I/O 有兩種型態:使用者與系統。 使用者實體I/O 是發生在使用者交易要求讀取不存在於記憶體中的資料時。一份單純的資料會從磁碟傳遞至記憶體中。傳遞過程通常由一些資料流管理器和磁碟控制器一起處理。 系統實體I/O 則是發生在系統裡正在執行的程序需要一個不存在於記憶體中的程式碼分頁時。系統會發出一個分頁錯誤中斷,並阻止程序執行直到需要的資料從磁碟擷取回來為止。這兩種實體 I/O 狀況都會延長回應時間,因為從記憶體中擷取資料的速率是以為秒(百萬分之一秒)來計算,而實體 I/O 的速率卻是以毫秒(千分之一秒)來計算。由於分頁錯誤活動會導致實體 I/O,並使回應時間延長,我們要讓系統達到更好的效能就必須將分頁錯誤最小化。

系統中會發生三種類型的分頁錯誤:

 作業系統分頁錯誤 如果正在執行的作業系統發現下一個程式碼位址不在記憶體中,系統會發出一個作業系統分頁錯誤中斷,從磁碟中擷取下一個程式碼位址。就一個程式碼位址錯誤而言,程式碼資料從磁碟傳遞至記憶體需要一個單一的實體 I/O 操作來完成。

 應用程式分頁錯誤 如果系統正在執行任何其他的程式碼而下一個程式碼分頁不在記憶體中,系統會發出一個分頁錯誤中斷,從磁碟擷取下一個程式碼分頁。就這類分頁錯誤而言,程式碼資料從磁碟傳遞至記憶體需要一個單一的實體 I/O 操作來完成。

 分頁錯誤交換 當資料分頁被修改時(稱為 dirty 分頁),會使用稱為 資料分頁交換(page fault swap) 的兩步驟分頁錯誤,系統不僅會從磁碟擷取新資料,也會將記憶體中目前的資料寫到磁碟裡。此兩步驟的分頁錯誤需要兩次實體 I/O 來完成,但它會保證所有的資料變更都被保存。如果經常發生這種交換的情形,它就有可能是造成回應時間負面影響最嚴重的因素。分頁錯誤交換比分頁錯誤需要更多時間,因為它導致兩次的實體 I/O。因此,應該讓系統中分頁錯誤的數量最小化。

在預估一個新系統的最低記憶體需求時,最好是找出所有在系統上執行的程序(包括作業系統與資料庫引擎)的記憶體規格,以便預測出足以處理所有工作載量的記憶體總和。並且不要忘記分頁錯誤這個因素。要維持系統的記憶體在夠用的狀態,就應收集分頁錯誤活動的資訊並保存起來,作為資料庫效能參考資訊的一部分。當需要額外的記憶體時,就應在此專案的資料上進行預測分析。應該為尖峰使用期預留足夠的可用記憶體。規劃系統時,除了系統將要執行的程序所需的記憶體之外,試著保持超過 5% 到 10% 的額外記憶體以備不時之需。


說明

您無法從系統中移除所有的分頁錯誤,但可以將它最小化。當每秒有超過兩個分頁錯誤時,就該增加記憶體。效能監視器(如每秒分頁錯誤計數器)會在稍後的章節裡說明。


記憶體的容量規劃
 

在規劃記憶體容量時,可能需要某些特定的資訊,包括在系統上可能出現的同時使用者數量、交易工作負載類型,當然還包括了使用哪一種作業系統。在規劃大小時,可能會典型地從一些訪談開始。在本例中,我們規劃的是一個資料庫伺服器的大小,因此與記憶體使用率及用戶端應用程式使用率相關的資訊似乎不會影響我們的預估。

資料庫伺服器處理來自使用者的需求,需找出必要的資訊完成交易。要規劃資料庫伺服器記憶體的大小,就必須知道同時使用者連線的數量,以及這些使用者產生的交易 I/O 數量。這些 I/O 不是讀取操作就是寫入操作,您必須與應用程式設計人員討論,因為他們可以提供不同的交易可能產生的 I/O 數量等相關資訊。

當為系統計算適當的記憶體數量時,也應將其他的影響一併計算,例如快取命中率及分頁錯誤。讓我們舉一個典型的例子。您正在規劃一個系統的大小,該資料庫伺服器將被用在一個 OLTP 訂單登記系統,必須知道產生工作負載的同時使用者數量。這部分的資訊可以幫助決定需要多少記憶體。舉例來說,您知道在任何給定的時刻裡系統上會有 50 個同時使用者。以此系統而言,您必須為使用者準備至少 25MB 的記憶體。


說明

一般說來,您需要為每個使用者提供 500KB 的記憶體,因為 500KB 是 shadow process 所需的記憶體數。 shadow process 是系統中每一個使用者目前的使用者程序。


接下來,您必須知道採用的作業系統是哪一種。在本例中,作業系統是 Windows 2000,使用大約 20MB 的記憶體。如此一來,記憶體總和必須高於 45MB。您也必須知道打算要執行的資料庫大小-在本例中,Microsoft SQL Server 使用 5.5MB 的記憶體。需要的記憶體現在總共為 50.5MB。

所需資訊的最後一部分是資料庫處理區域的大小。這個區域考慮兩個元素:記錄檔區域及資料庫快取。記錄檔區域保存了正在發生的寫入活動的相關資訊。這個區域非常重要,因為如果交易處理期間出現了系統故障,記錄檔區域中保存的資訊將被用於回復「之前」的影像-即故障發生之前的資料庫影像。記錄檔區域同時也是稽核追蹤的參考。

資料庫快取是系統中一個特別的區域。系統處理的所有資料都會通過此區域。資料庫快取越大,快取命中率就會越高。所謂快取命中率,指的是系統需要的資料恰好可以從記憶體中找到的機率-顯然,您會希望系統的快取命中率越高約好。如果所需的資訊並沒有駐留在快取記憶體中,就會導致一個快取錯誤。快取錯誤與分頁錯誤是很類似的,系統必須擷取所需資訊並放置在快取記憶體裡。因此,快取區域太小就會造成實體 I/O 的增加,因為系統必須存取磁碟去擷取不存在於快取的資料。這些實體 I/O 當然會增加交易的回應時間。

要計算快取尺寸,使用下列公式:

快取尺寸=(快取區塊尺寸)×(快取中區塊的數量)

 快取區塊尺寸 指的是每 I/O 傳遞的資料量。記住 SQL Server 有一個預設的快取區塊尺寸 8KB。 快取區塊數量 則是指您希望快取要保持多少區塊。在 OLTP 中,請選擇較小的區塊尺寸,因為一來傳遞量不大,二來區塊尺寸越小,傳遞所需的時間就越少。在 DSS 傳遞中,區塊尺寸就應放大,因為其傳遞量較大,且較大的區塊尺寸能降低 I/O 數。


說明

沒有一種快取尺寸設定能保證 90% 或者更大的快取命中率。經驗法則是小型的系統應有 25MB 的快取尺寸,中型系統為 70MB,大型系統則為 215MB。對特大型的資料庫系統(大約300GB),可能要求高達 3GB 的快取以達到理想的快取命中率。


到目前為止,我們已收集到不少的資訊,可以開始來計算我們的最低記憶體需求。下列公式常被用來計算一個系統的最低記憶體需求:

最低記憶體需求=(系統記憶體)+(使用者記憶體)+(資料庫處理記憶體)

 系統記憶體 是作業系統與 SQL Server 需要的記憶體量, 使用者記憶體 是撥給每個同時使用者 500KB 的記憶體總和量,而 資料庫處理記憶體 是記錄檔與快取所需的記憶體。

這個簡單的公式可用來計算 OLTP 與 DSS 應用程式在一般操作時的最低記憶體需求。在 DSS 系統中,我們應選擇較大的快取區塊,因為 DSS 應用程式會以循序性讀取的方式執行完整的資料表掃描。這種容量設定允許每個實體 I/O 可以讀取更多的資料錄。此外在 DSS 系統中,也不應使用快取,因為所有的 I/O 都會是實體 I/O。

在 OLTP 應用程式系統裡,您應在系統安裝後檢查快取命中率。快取命中率越高就越能保證系統可有最佳的回應時間和效能。


說明

系統快取命中率的目標應盡可能接近 100% 且最好不要低於 90%。


收集記憶體使用資料
 

當系統大小的規劃已完成並調整過後,您應例行性地收集記憶體使用的效能資料。您可以利用這份資料來幫助您確定所建立的系統是否符合 SLA 的要求,包括回應時間、記憶體與 CPU 使用率等等。資料收集的工作可以透過 Microsoft Windows NT 環境中的 Microsoft 效能監視器來完成。


說明

在 Microsoft Windows 2000 中 Microsoft 效能監視器被稱為系統監視器。


記住這是一個容量規劃分析,因此報告時間的間隔應該放大。測量期是以小時為單位(大部分情況都是設定為24小時),所以應每24小時報告一次。就容量規劃研究來說,每日記錄一次並將其寫入效能資料庫中已相當足夠。您用來監視效能的尺度,稱作 計數器 ,應該會按報告時間的間隔來平均。在您的容量規劃研究裡可選擇的記憶體記數器包含在 Memory 物件中。(在效能監視器中,物件是指計數器的選單。)


說明

要啟動效能監視器,按一下 開始 / 程式集 / 系統管理工具 / 效能監視器 。在 效能監視器 視窗中,從 編輯 功能表選擇 加入到圖表 。您可以利用 加入到圖表 對話方塊選擇物件和計數器以進行監測。要得到效能監視器進一步的資訊,請在 效能監視器 視窗中按一下 說明 


有下列的計數器:

  •  Page Faults/sec 即每秒分頁錯誤數。這個計數器包含了系統中每秒發生的分頁錯誤的平均數。記住,當要求的程式碼或資料分頁不在工作中或存在於待命記憶體裡,就會發生一個分頁錯誤。
     
  •  Cache Faults/sec 即每秒快取錯誤數。這個計數器包含了系統中每秒發生的快取錯誤的平均數。記住,只要 Cache Manager 在即時快取中找不到檔案的分頁時,就會發生快取錯誤。
     
  •  Pages/sec 即每秒分頁數。這個計數器包含了每秒系統從磁碟讀取或寫向磁碟的平均分頁數。這個值是另外兩個計數器的總和-Pages Input/sec 與 Pages Output/sec。這個計數器所包括的分頁流量代表了系統快取為應用程式存取的檔案資料,以及從非快取對應的記憶體檔案中讀出和讀入的分頁。如果您非常關心過度的記憶體壓力(也稱為trashing)和可能產生過度的分頁動作,則應使用此計數器。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值