談資料庫集群的原理與效能

2021-04-09 02:10:51 字數 1283 閱讀 3416

對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大(而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的**就知道了),並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的中斷。

而對於資料庫伺服器,集群就比較少見了,以往只用於高階系統,比如象oracle就提供了並行模組。

而icx的出現,則為sql server資料庫的集群提供了良好的解決方案。(參見:icx-實現sql server資料庫集群)。

我們先看一下這種產品的原理:

資料庫伺服器的集群,之所以比應用伺服器複雜,是因為資料庫要有乙個同步的問題,在兩邊不僅要讀,更有乙個寫的資料如何一致的問題。如果依靠資料庫本身的同步,則效率很低,很難以事務級的方式進行(即同步成功才向前端報告事務完成)。

而icx的原理,則是象乙個路由器一樣(所以稱為資料庫路由器),對服務請求進行分發,如果是查詢,則象應用伺服器那樣,分發到某一台資料庫伺服器,而如果是更新的請求(包括新增、修改、刪除等各類),則同時傳送到兩邊的伺服器,並且在兩邊的更新均完成後才報告事務完成。

下面分析一下icx的效能問題:

首先是提交時的效能,查詢是沒關係了,因為路由器式的分發相對於查詢操作本身時間是很短的,主要要關注的是更新操作。但相對於依靠資料庫或檔案系統的同步方式而言,icx的更新是在兩邊同時進行的,而其他方式是採用a更新-同步-b更新的方式,要做三步工作,所以icx的效率遠高於其他同步方式,可以說其時間基本上就是兩台伺服器中較慢的一台的時間。(而且注意由於做了負載均衡,這台的速度要比只有一台伺服器時還要快)

其次是整體的併發處理能力,我們以兩台伺服器為例。如果只有查詢,應該基本上可以處理2倍的併發量。但與應用伺服器不同的是,更新的操作是在兩邊同步進行的。因此,併發能力的提公升,實際與更新/查詢的比例、複雜程度是相關的,如果更新多、查詢少,處理能力的提公升相對就小一些。但是,常識上資料庫應用查詢的比例遠大於更新,而且查詢的複雜度、占用伺服器資源也遠大於更新(比如更新經常是單錶的,基於索引的,而查詢中多表聯接、多個條件之類的非常常見),所以,可以大致認為提供1.5-1.8倍左右的處理能力。當然,這個只是個很粗的估計。

另外一點是關於速度的提公升。相對於併發而言,對速度的提公升相對有限,因為在每台機器上都是對整個資料庫進行操作。但是,如果乙個資料庫伺服器的負載少了將近一半,其速度也是可能會有乙個明顯的提公升的。

至於在資料庫路由器進行路由分配時的時間與資源消耗,是很小的,可以忽略不計。除非你是做數量極大的特別簡單的資料庫操作。

sql server資料庫伺服器的負載均衡集群實現方法

資料庫伺服器零切換時間的熱備

資料庫集群原理

對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大 而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的 就知道了 並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的...

資料庫集群原理

對於應用伺服器集群,應該是非常常見的。通過集群,可以很簡單地通過乘法的方式將服務能力擴大 而且這種擴充的成本要遠低於垂直擴充,你只要比較一下乙個滿配4cpu的pc伺服器與2台滿配2cpu的伺服器的 就知道了 並且,可以提供系統的高可用性,當一台伺服器出現問題時,可以由其他伺服器提供服務,避免了服務的...

評《資料庫原理 程式設計與效能》

資料 關係 物件 評 資料庫原理 程式設計與效能 楊希煬資料庫 乙個讓人感到多麼熟悉的名詞。似乎懂得一點計算機知識的人都知道它,不少的程式設計師就是在學習資料庫開發語言的過程中,走上程式設計之路的。然而竟有不少電腦科學本科生在臨近畢業時,仍然認為程式設計就是學一門資料庫開發語言,而會使用該語言工作就...