移至64位SQL Server資料庫(轉)

ba發表於2007-08-12
移至64位SQL Server資料庫(轉)[@more@]相當長一段時間以來,在64位平臺上執行SQL Server一直是提高資料庫效能和擴充套件性的一種選擇,不過配置方面的選項有限,而且不是沒有問題。舉例說,SQL Server 2000只能在昂貴的安騰系列處理器上面執行;而且SQL Server的客戶端工具與64位平臺不相容。另一方面,SQL Server 2005卻提供了新的選項可以充分利用64位架構的強大功能;而且完全沒有在過去導致人們不太需要64位的問題。

使用SQL Server的公司為什麼應當改用64位架構?

要解答這個問題,最重要的答案就是,64位平臺與32位系統相比,大大提高了記憶體訪問能力。32位系統最多隻能本地訪問4GB的記憶體。32位的SQL Server系統使用地址視窗擴充套件(AWE)及相關技術後,最多可以訪問64GB的記憶體,不過地址虛擬技術帶來了開銷:AWE需要建立虛擬“視窗”來訪問更高記憶體。訪問高階記憶體的每個請求都必須透過這個視窗進行,開銷要比請求訪問本地記憶體大得多。因而,在高使用率情況下,訪問更大記憶體的功能實際上妨礙了而不是有助於效能。此外,AWE記憶體只是被SQL Server用於緩衝器快取,而不是用於過程快取,而且不會有助於對利用許多即席查詢(ad-hoc query)的伺服器進行最佳化。AWE記憶體也不會被用於幫助記憶體中的排序、雜湊連線(hash join)或者其他資料密集型操作。

如今的64位系統最多可本地訪問512GB的記憶體。這意味著,效能不會受到地址視窗的影響,額外記憶體可以供任何SQL Server快取而不僅僅是緩衝器快取使用。這種增加記憶體的功能在許多情況下直接提高了效能。由於更多的資料儲存在快取裡面,勢必會減少磁碟的I/O操作。你還會注意到使用中間排序、雜湊連線或者指標的查詢在效能上得到提高。所有這些在記憶體裡面進行求值要比換到磁碟上進行求值來得快。

為什麼64位採用遲緩?

有人不由得會想:既然好處這麼顯著,為什麼到目前為止64位SQL Serve的採用似乎很遲緩?SQL Server 2000的64位選項很有限,因為SQL Server 2000惟一支援的64位配置就是安騰伺服器執行在Windows Server 2003上面。也沒有哪個SQL Server 2000客戶端工具可在64位伺服器上面執行,包括企業管理器、查詢分析器和SQL Profiler。連資料轉換服務(DTS)軟體包也無法在64位伺服器上執行,這意味著DTS無法充分利用64位的更強功能。

SQL Server 2005 64位架構有什麼優點?

SQL Server 2005為企業帶來了64位架構的優點,而與以往相比價位較低、功能較多。最重要的是,SQL Server 2005支援可以安裝在安騰和價格低得多的x64伺服器兩種平臺上。所以,除了節省費用外,資料庫管理員現在就可以使用英特爾處理器或者AMD處理器。

SQL Server 2005客戶端工具與64位伺服器完全相容,所有SQL Server支援服務都可以在64位配置環境下與SQL Server 2005一起使用,這包括:分析服務、SQL Server整合服務、報表服務和通知服務。所有這些服務都能夠利用訪問更多記憶體的功能,有助於提高安裝的SQL Server的效能、滿足業務整合需求。

哪種安裝環境應當升級至64位?

升級主要有兩個市場:需要向上擴充套件的32位單伺服器安裝環境;以及需要合併的32位多伺服器安裝環境。每種場景都有明顯的優點。

表明單伺服器安裝配置可能屬於向上擴充套件類別的最明顯跡象就是,深度查詢磁碟活動、較低的緩衝器快取命中率以及較短的頁面生命週期。所有這些問題都可以使用效能計數器來評估,可透過能夠訪問更多記憶體的64位系統來加以解決。

另一方面,確定多伺服器安裝環境是不是非常適合合併來得困難一點。應當進行認真測試,評估所有資料庫總共需要多少記憶體、處理器能不能處理所有資料庫的併發查詢、磁碟系統能不能處理同時讀寫帶來的更大壓力。做出這個決策比升級單一伺服器困難得多,不過就整體的管理簡易性而言,會獲得巨大回報。

改用64位會在SQL Server的效能和擴充套件性方面帶來重大影響。SQL Server 2005提供的選項使得從32位進行升級合理得多。如果你投資新硬體用於新的資料庫管理系統(DBMS),就應當調查分析64位選項,尤其是基於價格較低的x64位處理器的那些選項。

我要不要使用新的XML資料型別把所有XML資料儲存在SQL Server 2005裡面?

XML酷似CLR使用者定義型別(UDT),它現在是SQL Server 2005中新的第一類資料型別。開發人員現在可能會忍不住使用這種資料型別,以免編寫程式碼把XML資料“分割”到表裡面(即不是使用OPENXML往表裡面批次載入資料)。

遺憾的是,像這樣使用XML資料型別存在與使用使用者定義型別表示資料同樣的許多問題。開發人員應當把效能記在心頭,因為對XML列的一個節點進行查詢需要引擎對錶中每一行的不同XML查詢進行求值。與使用CLR UDT一樣,還存在規範化問題。在過多使用XML資料型別的資料庫裡面,要確保資料完整性極其困難。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-950167/,如需轉載,請註明出處,否則將追究法律責任。

相關文章