AlwaysOn 同步时间的测试
背景
《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同步异常导致时间延长。
测试展示
- 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环境,及简单的测试语句,由于硬件环境,程序处理复杂度,数据量等等情况不同,结果也必不相同!!
AlwaysOn 同步时间的测试的更多相关文章
- 命令行net time同步时间(内网)
首先还是推荐大家使用Internet时间来同步自己计算机的时间,这样做主要是方便,就是设置一个ntp服务器,我推荐下面的三个ntp服务器地址. time.asia.apple.com //亲测有效 a ...
- SQL Server AlwaysON 同步模式的疑似陷阱
原文:SQL Server AlwaysON 同步模式的疑似陷阱 SQL Server 2012 推出的最重要的功能之一Alwayson,是一个集之前Cluster和Mirror于一体的新功能,即解决 ...
- AlwaysON同步的原理及可用模式
新一代读写分离技术——AlwaysOn 早在SQL Server 2005的时候微软就已经实现了数据库的查询分离技术——发布订阅.但生产库和查询库的同步性能较差,时常出现性能问题,因此在大型生产环境中 ...
- AlwaysON同步过程
<SQL Server 2012实施与管理实战指南>中指AlwaysON同步过程如下: 任何一个SQL Server里都有个叫Log Writer的线程,当任何一个SQL用户提交一个数据修 ...
- centos 7.2 同步北京时间 ,多台机器同步时间
linux 系统没有北京时间,同步的是上海时间 linux 系统有两个时钟:一个是硬件时钟,即BIOS时间:另一个是系统时钟,是linux系统Kernel(内核)时间. 系统开启时,系统会读取硬件时间 ...
- Shell 同步时间脚本
Linux系统同步时间脚本 Linux操作系统,如果时间和网络时间差距太大的话.可能会导致程序,进程启动不了.所以linux系统时间同步显得尤为重要,本文在借鉴网上众多资料后,以centos_6.X系 ...
- Centos7部署ntp服务器同步时间以及直接将本地时间同步为北京时间
一.查看配置 查看时区列表: timedatectl list-timezones|grep Asia 查看当前时间: date 查看当前设置: [root@localhost ~]# timedat ...
- VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间
这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...
- Raspberry Pi开发之旅-同步时间
使用htpdate同步时间 由于树莓派板子上没有 RTC 硬件和电池,因此树莓派上的系统时间重启是保存不了的.网上已经有人想到应对 NTP 被防火墙封掉类似的需求了,开源的 htpdate 命令直接使 ...
随机推荐
- Valid Parentheses 使用递归的解法
class Solution { public: bool isValid(string s) { ||s.size()%!=)return false; unordered_map<char, ...
- 前端工作面试问题--摘取自github
前端工作面试问题 本文包含了一些用于考查候选者的前端面试问题.不建议对单个候选者问及每个问题 (那需要好几个小时).只要从列表里挑选一些,就能帮助你考查候选者是否具备所需要的技能. 备注: 这些问题中 ...
- [Note] changing building platform from vs 2013 to vs community 2015
The error turned out as "undefined linkage"(The same as you haven't use some function that ...
- POJ 2010 Moo University - Financial Aid treap
按第一关键字排序后枚举中位数,就变成了判断“左边前K小的和 + 这个中位数 + 右边前K小的和 <= F",其中维护前K小和可以用treap做到. #include <cstdi ...
- 安装软件 报错1304 C:\Program Files\Common Files\VMware\VMware VMRC Plug-in\Firefox\dbghelp.dll验证您对该目录具有访问权限
现在情况是C:\Program Files\Common Files\VMware\VMware VMRC Plug-in\Firefox这个文件夹里面没有dbghelp.dll文件,就需要在百度上面 ...
- cookie,session原理,以及如何使用chrome查看。
首先,先补充下chrome浏览器的使用. 1.1.php源码: <?php $cookieDomain = '.elf.com'; setcookie(, '/', $cookieDomain) ...
- php设计模式 Proxy (代理模式)
代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行 ...
- Dreamweaver 升级问题汇总
Adobe的产品开始从CC (Creative Cloud) 开始转向云平台,CS将逐渐成为过去时.不过CC并不限制用户在同一台机器上同时使用CS和CC,这种策略估计要持续较长一段时间. If you ...
- git conifg
1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...
- 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1341 题目大意: 给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. ...