AlwaysOn 同步時間的測試

来源:http://www.cnblogs.com/double-K/archive/2016/01/14/5131563.html
-Advertisement-
Play Games

背景《SQL Server 2012實施與管理實戰指南》中指AlwaysON同步過程如下:任何一個SQL Server里都有個叫Log Writer的線程,當任何一個SQL用戶提交一個數據修改事務時,它會負責把記錄本次修改的日誌信息先記入一段記憶體中的日誌緩衝區,然後再寫入物理日誌文件(日誌固化)。所...


背景

《SQL Server 2012實施與管理實戰指南》中指AlwaysON同步過程如下:

任何一個SQL Server里都有個叫Log Writer的線程,當任何一個SQL用戶提交一個數據修改事務時,
它會負責把記錄本次修改的日誌信息先記入一段記憶體中的日誌緩衝區,然後再寫入物理日誌文件(日誌固化)。
所以對於任何一個資料庫,日誌文件里都會有所有數據變化的記錄。
對於配置為AlwaysOn主副本的資料庫,SQL Server會為它建立一個叫Log Scanner的工作線程。
這個線程專門負責將日誌記錄從日誌緩衝區或者日誌文件里中讀出,打包成日誌塊,發送給各個輔助副本。
由於它的不間斷工作,才使主副本上的數據變化,可以不斷地向輔助副本上傳播。
輔助副本上,同樣會有兩個線程,完成相應的數據更新動作,它們是固化(Harden)和重做(Redo)
固化線程會將主副本Log Scanner所發過來的日誌塊寫入輔助副本的磁碟上的日誌文件里(這個過程被稱為"固化")。
而重做線程,則負責從磁碟上讀取日誌塊,將日誌記錄翻譯成數據修改操作,在輔助副本的資料庫上完成。
當重做線程完成其工作以後,輔助副本上的資料庫就會跟主副本一致了。AlwaysOn就是通過這種機制,保持副本之間的同步。
重做線程每隔固定的時間點,會跟主副本通信,告知它自己的工作進度。主副本就能夠知道兩邊數據的差距有多遠。


這些線程在工作上各自獨立,以達到更高的效率。Log Scanner負責傳送日誌塊,而無須等待Log Writer完成日誌固化;輔助副本完成日誌固化以後就會發送消息到主副本,告知數據已經傳遞完畢,而無須等待重做完成。其設計目標,是儘可能地減少AlwaysOn所帶來的額外操作對正常資料庫操作的性能影響。

 

 

  這個同步並不是數據的實時同步,當主副本數據發生變化時,同步模式下的輔助副本並不能立即取到變化的數據。哈哈 這個是不是很坑?據我所知有大型的軟體產品因為這個陷阱吃了大虧!!

那麼微軟為什麼不作成真正的實時同步呢?比如世面上的moebius集群,還能自動作負載均衡這多霸氣? 我想微軟還是從很多嚴謹性方面考慮吧,這裡就不過多的廢話了,下麵進入這個同時間差到底有多大呢?

-------------------------------------------轉載請註明出處 ----------http://www.cnblogs.com/double-K/p/5131563.html--------------------------------

測試環境

SELECT @@VERSION 結果:

Microsoft SQL Server 2014 - 12.0.4100.1 (X64)

         Apr 20 2015 17:29:27

         Copyright (c) Microsoft Corporation

         Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

 

系統server 2012 、sql 2014

3節點AlwaysOn 拓撲圖:

實例名

IP

節點屬性

VPC2012_1

192.168.2.55

主節點

VPC2012_2

192.168.2.56

同步輔助節點

VPC2012_3

192.168.2.57

非同步輔助節點

 

工具準備

自開發測試程式、系統性能監視器、AlwaysOn監視器,系統性能計數器。

 

自開發程式介紹:

連接主副本和其中一個輔助副本,在設定的時間內迴圈 在主副本執行insert 操作,並根據設置的時間間隔,在輔助節點查詢所插入的數據,如果查詢到數據則成功,否則失敗。

併發數:模擬併發壓力,啟動線程數。

等待時間:查詢數據後查詢等待的時間。

執行時間:模擬場景運行的時間。

 

 

系統性能監視器

通過系統性能監視器察看是否執行過程用有記憶體、磁碟隊列、CPU壓力。

 

性能計數器:

主要收集3個節點以下計數器觀察AlwaysOn 同步狀態

batch requests/sec       主要用於檢查系統處理能力是否到達極限。

avg.disk read queue lenth     主要用於檢查是否由於IO瓶頸導致時間延遲。

avg.disk write queue lenth     主要用於檢查是否由於IO瓶頸導致時間延遲。

SQLServer:Database Replica  主要用於檢查是否由於AlwaysOn同步異常導致時間延長。

 

 

測試展示

  1. AlwaysOn壓力測試工具

a)         測試以50併發 等待200毫秒開始,逐步增加等待時間查看併發數下的等待時間,當失敗數為0時,增加併發數,測試等待時間下最大支持的併發數。

測試1同步節點

 

 

經過增加等待時間到1000毫秒 幾次執行失敗數均為0

 

 

增大併發測試 500併發左右1000毫秒出現失敗情況

 

縮短等待時間錯誤數量大量增加

 

 

非同步節點測試:

 

 

非同步節點在節點無任何查詢壓力下等待時間大約為1200毫秒

 

  系統指標

   性能監控器監控期間CPU、記憶體、IO隊列 未出現明顯壓力。

  性能計數器

   

 

  AlwaysOn儀錶盤監測

    

-------------------------------------------轉載請註明出處 ----------http://www.cnblogs.com/double-K/p/5131563.html--------------------------------

結果

    併發測試 500併發內AlwayOn 需要1000毫秒左右才能完成數據可讀,非同步節點在節點無任何查詢壓力下等待時間大約為1200毫秒。

    本例中的測試結果只是為了演示說明AlwaysOn同步節點數據可讀時間的差異,而不是提供準確時間。

    本例結果均針對本機AlwaysOn環境,及簡單的測試語句,由於硬體環境,程式處理複雜度,數據量等等情況不同,結果也必不相同!!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、什麼是Quartz2DQuartz 2D是⼀個二維繪圖引擎,同時支持iOS和Mac系統Quartz 2D能完成的工作:繪製圖形 : 線條\三角形\矩形\圓\弧等 繪製文字繪製\生成圖片(圖像)讀取\生成PDF 截圖\裁剪圖片 自定義UI控制項二、Quartz2D在iOS開發中的價值為了便於搭建美觀...
  • 1.cell的重用 所謂的cell的重用就是,視圖載入的時候只會創建當前視圖中的cell,或者比當前視圖多一點的cell,當視圖滾動的時候,滾出屏幕的cell會放進緩存中,滾進屏幕的cell會根據Identifier從緩存中獲取cell,如此的迴圈往複,這樣只會創建固定的cell對象,節省了記憶體。下...
  • 前言:我發現我標題取的不好,誰幫我取個承接上下文的標題?評論一下,我改項目需求:在程式開發中,我們需要在某個程式裡面發送一些簡訊驗證(不是接收簡訊驗證,關於簡訊驗證,傳送門:http://www.cnblogs.com/wolfhous/p/5096774.html項目實現:------------...
  • 話說蘋果在iOS7.0之後,很多系統界面都使用了毛玻璃效果,增加了界面的美觀性,比如下圖的通知中心界面;但是其iOS7.0的SDK並沒有提供給開發者實現毛玻璃效果的API,所以很多人都是通過一些別人封裝的框架來實現,後面我也會講到一個;其實在iOS7.0(包括)之前還是有系統的類可以實現毛玻璃效果的...
  • 1、判斷是否為快速點擊 /** 判斷是否是快速點擊 */ private static long lastClickTime; public static boolean isFastDoubleClick() { long time = System.current...
  • 原文鏈接地址:http://www.cnblogs.com/lyhabc/p/3888702.html 最近把大學時候的ORACLE教程書本翻出來看,真的是感觸良多 以前在學校的時候,每次ORACLE測驗和考試都是不合格的,期末的時候靠補考才勉強過關 大家看到下圖的封面應該知道大學教我們ORACLE...
  • 問題描述: 工作中使用kettle將原始庫中的數據抽取到標準庫中,在抽取過程中報錯:【ORA-14400: 插入的分區關鍵字未映射到任何分區】解決過程: 經過百度,發現出現ORA-14400是表分區出現問題。 1.確定該表是否已經添加了表分區。 select partition_na...
  • 本文主要含有一些AlwaysOn 配置方法及連接。本想展開詳細寫一下 無奈隔壁在年會排練節目,那歌唱得我只想趕緊回家!!!!!!!!!!!!!!!http://www.cnblogs.com/double-K/------------------------------只讀配置-----------...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...