熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server2000服務器功能合並問題的看法

2013-11-15 14:32:29  來源: SQL Server 

  概述
  本文是 Microsoft 和 Dell 公司共同合作的成果用來說明 Microsoft® SQL Server&#; 和 Dell 硬件的可縮放性在 Dell 企業版八路服務器上運行的 SQL Server 可以支持上千個數據庫及為數眾多的用戶同時還可以提供進行集中管理所需的性能SQL Server 使用戶能夠在對稱多重處理 (SMP) 系統方面獲得最大的投資回報用戶可以增加處理器內存和磁盤以建立集中管理的大型企業服務器
  
  更多公司願意從應用服務提供商 (ASP) 那裡獲取數據庫服務內部信息技術 (IT) 組織正在根據其總擁有成本 (TCO) 和可管理收益合並數據庫服務本文重點介紹常見的 ASP 方案其中一個系統上承載了多個數據庫而每個數據庫中只有較少的幾個用戶此方案同樣適用於希望將跨企業服務器的多個數據庫合並到一個集中管理的服務器上的公司因此本文的目的也就是要說明如何使用多個實例成功地調整單個服務器上增加的工作負荷我們將使用 Microsoft bCentral&#; 的應用程序來研究不同的配置對工作負荷性能的影響測量依據是每分鐘的事務處理數 (TPM)
  
  下表列出了在一台服務器上使用多個實例的優點
  
  一台服務器可以承擔更大的工作負荷
  
  可以基於不同服務水平協議 (SLA) 的要求靈活地分離數據庫
  
  可以根據不同的性能要求分離數據庫
  
  可以根據不同的備份和恢復要求分離數據庫
  
  可以根據不同的安全性要求分離數據庫
  
  可以根據變化控制操作和維護要求分離數據庫
  
  此案例研究的結果表明
  
  與使用單個實例相比使用多個實例可以支持更多數據庫這樣一台服務器所能承載的工作負荷就增大了八倍
  
  與多個實例一起使用時設置處理器關系可以使工作負荷相對於默認設置增加 %
  
  從數據文件中分離事務日志可以使工作負荷增加 %為將日志和文件放在不同設備上的最佳實踐提供了其他支持
  
  當某台服務器專用於 SQL Server 時可以獲得最佳效果
  
  本文提供了一些一般的原則以幫助用戶理解成功配置多個實例以獲取最佳吞吐量過程中所涉及的標准
  
  簡介
  鑒於越來越多的客戶開始關注服務器功能合並我們期望 ASP 和企業 IT 部署多個 SQL Server 實例以承載更多的數據庫
  
  分離數據庫的能力使得 ASP 或企業 IT 能夠更靈活地向客戶提供不同層次的服務而無需使用單獨的計算機要使用這種方法需要確定何時使用多個實例以及如何配置這些實例以獲得最佳性能
  
  最佳配置是在研究過若干個參數(包括多個實例內存配置CPU 關系磁盤布局和 TPM 中的恢復模式)的影響之後確定的
  
  本文重點介紹一個常見的方案其中一個系統上承載了多個數據庫而每個數據庫只有較少的幾個用戶上述參數的影響可以從稱為PACE的實際應用程序中看出PACE 來自 Microsoft bCentral 的一個財務應用程序它運行在一組服務器上這些服務器包括Microsoft SQL Server Enterprise EditionMicrosoft Windows® Datacenter&#; Server 和 Dell PowerEdge servers
  
  PACE 應用程序
  所部署的 PACE 應用程序是一個會計和財務管理產品是 Microsoft bCentral 為客戶提供的眾多服務之一PACE 用來幫助小型企業更有效地完成日常工作它包括處理財務問題銀行業務生成工資單記錄銷售采購信息以及快速方便地生成報告的功能
  
  為了向每位客戶提供實體安全的會計控制和可靠的多用戶訪問該應用程序在一台服務器上提供了許多小型財務數據庫為每位客戶建立一個數據庫它還使用戶能夠對安全性備份和恢復變化控制和維護操作進行更精確的控制此應用程序為每個數據庫提供了 多個存儲過程以支持 Web 服務
  
  這種反傳統的設計為系統管理和 SQL Server 的性能優化帶來了新的問題最大的問題是隨著數據庫的增多支持大量存儲過程所需要的內存也在成倍地增加對於 SQL Server 來說需要具有虛擬內存空間以便為每個數據庫上的每個過程編譯執行計劃然後將該計劃保存在過程高速緩存中對於 PACE 應用程序來說 個數據庫高速緩存的執行計劃數量為 * 個高速緩存條目PACE 數據庫的數量越多所需的服務器過程高速緩存大小就越大如果執行計劃的數量超出了過程高速緩存能夠存儲的數量將對執行重新進行編譯這將減少處理查詢的吞吐量利用傳統的方法(例如使存儲過程參數化)不能解決此問題
  
  進行有效的調整需要完成特定的配置以增加用於過程高速緩存的有效內存空間其他問題還包括如何有效地利用 CPU以處理由於數據庫和用戶數量增加而導致頻繁發生並發活動的情況以及如何有效地利用最佳磁盤布局和最佳恢復模式
  
  使用多個實例
  使用多個實例可以增加每台服務器上的數據庫數量和工作負荷
  
  當數據庫的數量和相應的工作負荷達到一定水平後將多個 SQL Server 實例中的數據庫分組是一個好辦法因為這樣可以緩解內存壓力為每個實例的服務器過程高速緩存分配更多內存可以獲得良好的性能並能夠提供更好的操作和安全隔離
  
  測試表明使用多個實例可以增加數據庫的總數以及系統上產生的相應工作負荷同時還能維護每個數據庫的吞吐量
  
  圖 表明當 PACE 數據庫的數量從 增加至 單個實例的性能將降低但是如果分散到 個實例上每個實例上運行 個數據庫那麼每分鐘的事務處理數量是在一個實例上運行 個數據庫時的 個實例中的每個實例上運行高工作負荷的 個數據庫幾乎利用了此硬件配置中的全部 CPU 容量所以通過在 個實例中的每個實例上運行 個數據庫來增加數據庫的總數不能增加總吞吐量(但是系統仍然顯示了一個可接受的吞吐量)
  
  圖 表明當單個 SQL Server 上的數據庫數量(或客戶端連接數量)增加時每個數據庫的工作負荷吞吐量將減少如果每個實例的數據庫保持在 則每個數據庫的吞吐量在單個實例和在 個實例上是一樣的但是當增加至 個實例後吞吐量會因為 CPU 的限制而減少
  
 

  
系統上的總工作負荷吞吐量與系統上的 PACE 數據庫總數

  
 

  
每個數據庫上的工作負荷吞吐量與系統上的 PACE 數據庫數量

  為什麼要在此方案中使用多個實例
  
  在一個實例上使用上千個 PACE 數據庫會造成性能下降
  
  SQL Server 最多可以為該過程高速緩存使用 GB 的虛擬內存(如果在 bootini 中設置了 / GB 開關則為 GB)當單個實例上的數據庫數量從 增加至 過程高速緩存中將沒有足夠的虛擬內存來保存內存中增加的所有查詢執行計劃為了釋放內存以便為其他存儲過程的計劃騰出空間系統會丟棄過程高速緩存中的某些執行計劃但是此操作要求在需要時重新編譯這些被丟棄的存儲過程計劃請注意這樣所造成的頻繁的重新編譯工作會影響工作負荷性能
  
  使用多個實例緩解內存壓力
  
  如圖 所示在具有 GB 以上物理內存的情況下在多個實例上運行數據庫可以留出更多的內存供過程高速緩存使用(每個實例具有自己的虛擬地址空間和過程高速緩存)
  
  當單個實例的 PACE 數據庫數量增至數千後這些數據庫對象會占用太多供過程高速緩存使用的內存空間從而導致性能下降過程高速緩存將被丟棄然後進行重新編譯綜上所述我們建議使用多個實例
  
 

  
不同配置中過程高速緩存的有效內存

  其他類似的設計也面臨同樣的問題
  
  決定多個實例是否能夠提高性能的關鍵因素是所有執行計劃所需的內存空間總量所需的內存空間總量是由執行計劃的平均大小每個數據庫的存儲過程數量和數據庫數量決定的如果每個數據庫中有較多的過程那麼即使使用較少的數據庫也會產生同樣的問題此外如果較少的數據庫中存在非常復雜的過程即使每個數據庫的存儲過程較少也會產生同樣的問題
  
  多個實例的內存配置
  要使多個實例發揮最佳性能只需指定合理的最小服務器內存而無需額外調整內存配置我們注意到如果為每個實例預留 GB 的最小服務器內存並保持開放最大的服務器內存在性能方面要比使用默認的動態內存分配提高 %這樣獲得的性能與使用最佳靜態內存分配一樣無需進行高成本的反復重新校准使用此方法的客戶應注意此方法可能會影響同一服務器上其他應用程序的內存分配爭用內存的其他應用程序會影響動態內存分配因此Microsoft 建議您將此系統專用於 SQL Server
  
  將此系統專用於 SQL Server 的另外一個優點是使配置能夠支持不同實例上的不同工作負荷無需為了確定最合適的內存配置而進行特別的測試和調整這種方法(將系統專用於 SQL Server)能夠減少為了在工作負荷不同的情況下獲得最佳性能而重新配置內存的工作
  
  簡化內存配置可以提高系統性能
  為每個實例使用最小內存配置可以獲得與使用最佳靜態分配時一樣的性能可以減少為確定每個實例的最佳靜態分配所進行的測試工
From:http://tw.wingwit.com/Article/program/SQLServer/201311/21961.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.