程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用優化實用工具來優化SQLServer性能

使用優化實用工具來優化SQLServer性能

編輯:關於SqlServer
在Microsoft SQL Server 2000中提供了一些優化實用工具,使用這些工具可以有效地提高數據庫的使用效率。在一般人的眼裡,“優化”可能算得上是一種高級技能,但真正做起來也不是很難,您也可以成為這方面的高手,不信您就試一試。本文從十二個方面來談如何優化SQL Server 2000,使其獲得較高性能。優化數據庫可在生產數據庫上執行,獲得最佳性能收益的三個操作包括:
  ◆ 備份和還原操作。
  ◆ 將數據大容量復制到表中。
  ◆ 執行數據庫控制台命令(DBCC)操作。
  一般情況下,不需要優化這些操作。然而,在性能很關鍵的情形中,可采用以下一些技巧來優化性能。
  
  優化備份和還原性能
  
  SQL Server 2000提供幾種方法以提高備份及還原操作的速度:
  ◆ 使用多個備份設備使得可以將備份並行寫入所有設備。同樣,可以將備份並行從多個設備還原。備份設備的速度是備份吞吐量的一個潛在瓶頸,使用多個設備可以按使用的設備數成比例提高吞吐量。
  ◆ 使用數據庫備份、差異數據庫備份和事務日志備份的組合,可以將故障恢復所需的時間減到最少。差異數據庫備份可以減少必須應用於恢復數據庫操作的事務日志量。這種方法通常比創建完整數據庫備份快。
  ◆ 使用日志記錄和最小日志記錄大容量的復制操作。
  
  優化數據庫、差異數據庫和文件備份性能
  
  創建數據庫備份包含兩個步驟:
  (1)將數據從數據庫文件復制到備份設備。
  (2) 將事務日志中用於將數據庫前滾到一致狀態的那部分復制到相同的備份設備。
  與創建數據庫備份一樣,創建差異數據庫備份也包括上面兩步,但只復制已更改的數據(盡管需要讀取所有數據庫頁以確定數據是否更改)。備份數據庫文件只需一步,將數據從數據庫文件復制到備份設備。
  用於存儲數據庫的數據庫文件按磁盤設備排序,並給每個設備指派讀取器線程,給每個備份設備指派寫入器線程。該讀取器線程從數據庫文件中讀取數據,寫入器線程將數據寫入備份設備。通過在更多的邏輯驅動器中分布數據庫文件可以增加並行讀取操作。同樣,通過使用更多的備份設備可以增加並行寫操作。
  一般情況下,瓶頸是數據庫文件或備份設備。如果讀取吞吐總量比備份設備吞吐總量大,則瓶頸在備份設備這一側。添加更多的備份設備(如果必要還需添加SCSI控制器)可以提高性能。然而,如果備份吞吐總量比讀取吞吐總量大,則應在設備上添加更多的數據庫文件或者在RAID(獨立磁盤冗余陣列)設備內使用更多磁盤,以便增加讀取吞吐量。
  
  優化事務日志備份性能
  
  創建事務日志備份只包含單個步驟,將日志中尚未備份的部分復制到備份設備。雖然可能有多個事務日志文件,但事務日志在邏輯上是某個線程按順序讀取的一個流。
  給每個備份設備指派讀取器/寫入器線程。通過添加更多的備份設備可以獲得更高的性能。
  瓶頸可能是包含事務日志文件的磁盤設備或者是備份設備,具體取決於它們的相對速度和使用的備份設備數。添加更多備份設備將提高線性比例,直到達到包含事務日志文件的磁盤設備最大容量,此後如果不通過使用磁盤條帶化等方法提高包含事務日志的磁盤設備的速度,將不可能獲得更多性能收益。
  
  優化還原性能
  
  還原數據庫備份或差異數據庫備份包含四個步驟:
  (1)創建數據庫和事務日志文件,如果二者還沒有存在。
  (2)將數據從備份設備復制到數據庫文件。
  (3)從事務日志文件復制事務日志。
  (4)前滾事務日志,然後(如果需要)重新啟動恢復。
  應用事務日志備份包含兩個步驟:
  (1)將數據從備份設備復制到事務日志文件。
  (2)前滾事務日志。
  還原數據庫文件包含兩個步驟:
  (1)創建任何丟失的數據庫文件。
  (2)將數據從備份設備復制到數據庫文件。
  如果數據庫和事務日志文件還沒有存在,必須先創建它們才能將數據還原到其中。創建數據庫和事務日志文件並將文件內容初始化為零。使用單獨的工作線程並行創建和初始化文件。按磁盤設備排序數據庫和事務日志文件,並給每個磁盤設備指派單獨的工作線程。創建和初始化文件需要很大的吞吐量,因此在可用的邏輯驅動器中均勻分布文件能產生最佳性能。
  通過讀取器/寫入器線程將數據和事務日志從備份設備復制到數據庫和事務日志文件,給每個備份設備指派一個線程。復制性能受備份設備傳送數據的能力或數據庫和事務日志文件接收數據的能力的限制。因此,復制性能隨添加的備份設備數線性地提高,直到達到數據庫或事務日志文件接收數據能力的極限。
  前滾事務日志操作的性能已經固定,除使用更快的計算機外不能進一步優化。
  
  優化磁帶備份設備性能
  
  有四個變量影響磁帶備份設備的性能,並使SQL Server備份及還原性能操作得以在大體上隨添加更多磁帶設備而提高線性比例。
  ◆ 軟件數據塊大小。


  ◆ 共享小型計算機系統接口(SCSI)總線的磁帶設備數。
  ◆ 磁帶設備類型。
  軟件數據塊大小是由SQL Server為最佳性能計算的,不應更改。
  許多高速磁帶驅動器如果對每個所使用的磁帶驅動器有專用SCSI總線,將運行得更好。本機傳輸速率超過SCSI總線速度的50%的驅動器必須在專用SCSI總線上。
  注意:永遠不要將磁帶驅動器與磁盤或CD-ROM驅動器放置在同一個SCSI總線上。對這些設備的錯誤處理操作互不兼容。
  
  優化磁盤備份設備性能
  
  磁盤備份設備的原始I/O速度影響磁盤備份設備性能,並使SQL Server備份及還原性能操作得以在大體上隨添加多個磁盤設備而線性提高。
  在對磁盤備份設備使用RAID(獨立磁盤冗余陣列)時需認真考慮。例如,RAID5的寫入性能低,大致與單個磁盤的速度相同(由於必須維護奇偶信息)。另外,將數據追加到文件的原始速度明顯比原始設備寫入速度慢。
  如果將備份設備高度條帶化,以使對備份設備的最大寫入速度遠遠超過備份設備將數據追加到文件的速度,則在相同的條帶集上放置幾個邏輯備份設備會比較合適。換句話說,可以通過在相同的邏輯驅動器上放置幾個備份媒體家族來提高備份性能。然而,需要采用經驗方法確定這對每個環境是收益還是損失。通常情況下,最好將每個備份設備放置在單獨的磁盤設備上。
  一般在SCSI總線上只有少數幾個磁盤可以以最大速度運行,但Ultra-wide和Ultra-2總線可以處理更多磁盤。不過,很可能需要認真配置硬件以獲得最佳性能。
  
  數據壓縮
  
  如今的磁帶驅動器有內置的硬件數據壓縮,可顯著提高將數據傳送到驅動器的有效傳送速率。數據壓縮可以提高將數據傳送到磁帶驅動器的有效傳送速率,該速率超過通過禁用硬件壓縮所達到的速率。數據庫內實數據的可壓縮性取決於數據本身和所使用的磁帶驅動器。對於大范圍的數據庫,典型的數據壓縮率是從1.2:1到2:1。該壓縮率對於在多種業務應用程序中使用的數據是典型的,但有些數據庫可能有更高或更低的壓縮率。例如,主要包含已壓縮圖像的數據庫將不能再由磁帶驅動器進一步壓縮。有關數據壓縮的更多信息,請參見磁帶驅動器的供應商文檔。
  默認情況下SQL Server支持硬件壓縮,但可以使用3205跟蹤標記禁用硬件壓縮。在極少數情況下,禁用硬件壓縮可以提高備份性能。例如,如果數據已經完全壓縮,禁用硬件壓縮可防止磁帶驅動器浪費時間試圖進一步壓縮數據。
  
  傳送到磁帶的數據量
  
  創建數據庫備份只捕獲數據庫中包含實際數據的部分,而不備份未使用的空間,其結果將使備份操作的速度更快。
  雖然可以根據需要將SQL Server 2000數據庫配置為自動增長,但可繼續保留數據庫內的空間以保證該空間可用。保留數據庫內的空間對備份吞吐量和備份數據庫所需的總時間沒有負面影響。
  
  優化DBCC性能
  
  數據庫控制台命令(DBCC)往往大量占用CPU及磁盤,因為DBCC必須讀取每個數據頁,而這需要從磁盤到內存全都檢查一遍(除非數據頁已高速緩存到內存中)。當系統上有許多活動(如大量的查詢處理)而運行DBCC時,可用內存減少,而且SQL Server 2000被迫將數據頁發送到tempdb數據庫中進行假脫機處理,DBCC的性能由此削弱。因此,如果使更多內存可用於DBCC處理,將可以高速緩存數據庫中的更多內容,從而使DBCC語句執行得更快。
  tempdb數據庫駐留在磁盤上,因此在將數據寫入或寫出磁盤時,來自I/O操作的瓶頸將削弱性能。對大型數據庫(相對於可用內存的大小而言),運行DBCC會導致送到tempdb數據庫進行假脫機處理,與系統活動無關。因此,建議將tempdb數據庫放置在與用戶數據庫分開的一個或多個快速磁盤上,如R


您正在看的SQLserver教程是:使用優化實用工具來優化SQLServer性能。AID(獨立磁盤冗余陣列)。
  說明:執行DBCC CHECKDB時將對數據庫內的每個表自動執行DBCC CHECKTABLE和DBCC CHECKALLOC,因而不必單獨運行這兩個語句。
  
  優化大容量復制性能
  
  為盡可能快地大容量復制數據,可使用下列選項指定如何使用bcp實用工具或BULK INSERT語句將數據大容量復制到SQL Server 2000內:
  ◆ 使用有日志記錄和無日志記錄的大容量復制。
  ◆ 對並行數據裝載使用bcp實用工具。
  ◆ 控制鎖定行為。
  ◆ 使用批處理。
  ◆ 排序數據文件。
  說明:如果可能,使用BULK INSERT語句而不是bcp實用工具將數據大容量復制到SQL Server內。BULK INSERT語句比bcp實用工具快。
  有兩個因素決定可以或應該使用哪個選項以提高大容量復制操作性能:
  (1)表內現有的數據量相對於要復制到表內的數據量。
  (2)表上索引的數目和類型。
  另外,這些因素還取決於是從單個客戶端還是並行從多個客戶端將數據大容量復制到表內。


  
  將數據從單個客戶端裝載到空表內
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved