那麼你從這些公司身上可以了解到,他們需要保持高可用性,快速執行的資料庫。下面我將按照以下的總體概念和清單,討論幾種你可以應對高峰來臨的方式。
可用性方法
集群 高可用性通常包含了集群。當你需要較高階別的正常運轉時間的時候,你需要對sql server進行集群,由以下幾部分組成,有幾個節點集合在一起形成的乙個單個例項的集群,他們在面對客戶的時候表現為乙個單個的節點。如果集群中的乙個節點掉線了(由於sql server錯誤,硬體錯誤或者維護),其他的節點將會自動接過它的工作負載。客戶根本不需要重新連線到其他的節點上,因為這些節點都連線到乙個虛擬的伺服器上,它漂浮在所有活動節點之上。
集權提供了對硬體和軟體錯誤的自動錯誤容忍,但是它通常不會提供對本地錯誤的容忍(例如,放置集群的大廈或者房間內的電源壞了)。注意力應該放在消除單個點的失敗,例如冗餘電源**或者備用的發電機能源。
地理集群和負載均衡
emc公司,日立資料系統公司,還有現在的收購了賽門鐵克的veritas軟體公司都提供了硬體的資料映象,它可以提供持續的複製,這樣災難恢復**就可以保證擁有你的資料的實時拷貝。硬體資料映象工具可以用於連線地理ip解決方案,為災難恢復**提供自動化的錯誤恢復。
縮小規模
你還可以利用縮小規模的方法來將你的資料分散到多個工作機器上。不再讓1000個使用者都連線到乙個sql server上,而是讓10個sql server上分別連線100個使用者。你的資料訪問模式必須要與此相匹配,客戶連線到哪個sql server都沒關係,或者你必須要啟用粘性會話。通過這種方式,每個客戶在其會話長度內都連線到乙個單個的sql server上。
例如,如果你的聯盟中有10個sql server提供分類資訊,並且在這10個sql server之間的資料也是相同的,那麼客戶連線到哪個sql server上,然後又重新連線到哪個sql server上,這都沒有關係。sql server 2005中的點對點應用程式就被恰好是為這種型別的縮小規模設計的。
注意,sql server不能自動將負載分散給其他的sql server。你需要均衡網路負載,一邊將負載分布到多個網路伺服器上,並且聯盟中的每個網路伺服器上都安裝乙個或者多個sql server。
理解工作流
電子商務公司整年都在準備他們的旺季銷售高峰。系統架構師研究工作流,以便於理解事務中的哪乙個處理是必需的,哪乙個可以是批量處理的,哪乙個是可以從其他機器的並行處理中受益的。
考慮一下一般的下訂單的操作。輸入信用卡並且在網頁上經過驗證,確保數字以某個序列開始,並且滿足一定的長度。這個步驟可以在瀏覽器上進行,這樣就可以不用占用網路伺服器的處理器週期。信用卡交費通常是沒有經過授權的,因為網路服務呼叫會在這一點上慢下來,導致整體的可測量性解決方案等級下降。如果不需要網路服務呼叫認證每乙個信用卡事務,那麼電子商務**就可以支援好幾千個,甚至更多的頁面。信用卡將會在稍後大批處理過程中進行處理。
正如上面的例子所演示等,通過仔細檢視工作流,系統架構師辨認出可以非同步執行的處理,那麼整體的可測量性方案等級將會上公升。
負載測試
具有廣泛代表意義的負載測試是在負責複製產品機器的機器上完成的。這些負載測試都是經過嚴格分析的,能夠標識並消除瓶頸。當瓶頸消除之後,負載測試將會重複進行,以標識並消除新的瓶頸。只要資源允許,這個迭代的過程將會持續下去。
預備 通常,所有的開發都會在電子商務**迎接新的銷售旺季之前幾個星期結束,然後進入預備模式,不會再對產品機器進行任何的更改。自動的批處理管理也暫停了,只有在定位真正的攻擊的時候才會使用批處理。在確定成為產品之前,這些緊急批處理的影響會在qa環境中進行評估。
清單「準備工作負載高峰」
作為資料庫管理員,你會採取什麼行動來讓sql server做好對負載高峰的準備?以下是一些可遵循的步驟。
清單:讓sql server為工作負載高峰做好準備
維護 如果你根本沒有任何維護視窗:
為盡可能多的不必要資料進行存檔
執行dbreindex來更新你的索引,並重新建立填充因子。
在朝大型的資料庫上,你也許不能這麼奢侈。如果情況確實如此,那麼採取以下步驟:
關閉自動更新統計
當表被修改的內容達到20%的極限時,sql server在預設情況下自動為表更新統計資料。要關閉自動更新/建立統計,輸入以下命令:
sp_dboption ,'auto create statistics', off
sp_dboption ,'auto update statistics', off
關閉自動壓縮
事務日誌或者資料庫檔案的壓縮都會引起效能的下降。請按照sql server mvp tibor karaszi 在《壓縮資料庫或者事務日誌檔案所產生的後果》中給出的建議。
關閉自動增長
關閉索引碎片整理和索引優化
維護你的事務日誌
乙個被忽視的事務日誌將會擁有大量的虛擬日誌檔案(vlf)。你可以通過減少虛擬日誌檔案的數量來獲得更好的效能。你可以通過經常的清空事務日誌來達到這個目標(例如,每五分鐘)。
採用快速資料庫備份解決方案
通過使用第三方的sql備份產品,減少你的備份對資料庫效能的影響。
重新編譯儲存過程
重新編譯你的儲存過程,以確保選擇了優化的執行計畫。
執行預熱指令碼
在你的資料庫上執行預熱指令碼,確保你的查詢可以從緩衝中獲得最大收益。
警惕性能監控
你可以通過使用標準模板執行sql server profiler,以此最小化對系統效能的影響。其他**商提供的各種工具,例如, imdeca software inc. 和 idera,都可以為你的sql server提供視窗來評估你系統的健康程度和效能。許多這樣的工具都具有針對你的sql server的記憶和處理器印記。performance monitor也同樣具有,並且它還可以為你的資料庫提供乙個可替換的視窗。
定時批處理任務
為你的批處理任務或者dts包定時,讓它們在低負載的時間執行,或者把它們推遲,直到假期的高峰時期過後。
總結 這裡是我們對於你可以提前採用的提高sql server解決方案在負載高峰時期的效能的全部預備措施。除了仔細地計畫和測試之外,別無他法。我們回顧了一系列的有關可能會導致產品系統在高負載情況下的效能下降的設定的貼士。判斷一下哪些貼士可能會為你所用,最有代表性的環境中對它進行測試。
讓SQL Server為工作負載高峰提前做好準備
那麼你從這些公司身上可以了解到,他們需要保持高可用性,快速執行的資料庫。下面我將按照以下的總體概念和清單,討論幾種你可以應對高峰來臨的方式。可用性方法 集群 高可用性通常包含了集群。當你需要較高階別的正常運轉時間的時候,你需要對sql server進行集群,由以下幾部分組成,有幾個節點集合在一起形成...
SQL Server 負載均衡方案集錦
截至到sql server 2008,微軟還是沒有推出負載均衡元件,只能通過sql server的其他技術特性或者利用第三方元件來diy,下面列出我在做專案時最常用到的幾個方案 端到端拓撲的事務性複製 sql server 2005對端到端 p2p 拓撲結構上事務性的複製加強了支援。p2p的拓撲結構...
SQL Server 負載均衡方案集錦
截至到sql server 2008,微軟還是沒有推出負載均衡元件,只能通過sql server的其他技術特性或者利用第三方元件來diy,下面列出我在做專案時最常用到的幾個方案 端到端拓撲的事務性複製 sql server 2005對端到端 p2p 拓撲結構上事務性的複製加強了支援。p2p的拓撲結構...