SQL Server AlwaysON 同步模式的疑似陷阱

  • 时间:
  • 浏览:0

17

        ( name )

19

遗憾的是,你你是什么 同步并就有数据的实时同步,当主副本数据处在变化时,同步模式下的辅助副本无须能立即取到变化的数据。

SELECT  COUNT(*)

5

      name VARCHAR(400)

事实事先很清楚了,同步的原理决定了数据的延时,想用AlwaysON做读写分离的朋友们,考虑好你所能容忍的延时时间吧!

        SELECT  NEWID()

FROM    Secondary.DemoDB.dbo.tb_alwayson

go

3

另外,微软你敢在官方联机文档与各种技术大会上把同步模式非数据实时同步提一下吗?

11

为社 让Alwayson多副本的功能为实现读写分离提供了事先,试想一下,当主副本压力比较大的事先,算是可没法将读操作引向辅助副本呢?答案一般来讲是肯定的,请注意,是一般!

原文:

《SQL Server 2012实施与管理实战指南》中指AlwaysON同步过程如下:

这而是同步模式,我让你没法怎样才能让 点儿防备

EXEC sp_addlinkedsrvlogin 'Secondary ', 'false ', NULL, 'sa', 'sqlcn.com'

INSERT  INTO tb_alwayson

WAITFOR DELAY '00:00:00.900'

24

      id INT IDENTITY

13

    (

14

答案是事先的:它可没法保证事务日志是同步的,也而是可没法保证不丢失数据,但没法保证数据变化没法延时,这是事先辅助副本在接收主副本传来的Trans log时,首先将其缓到本地Log Cache,接着强制硬化到本地Ldf,为社 让随即向主副本告知我让你commit了,但注意,此时的硬化到本地ldf无须本地数据事先变化,这是事先辅助副本将trans log硬化到本地的一块儿,它是使用有另有4个异步多多线程 运行运行去redo你你是什么 trans log产生的Page变化到Data文件的,这也就决定了你你是什么 Redo的操作是不事先比硬化日志早的,全都数据的延时而是肯定的了。

20

FROM    tb_alwayson

CREATE TABLE tb_alwayson

7

12

1

使用连接服务器,这是有另有4个非常好理解的测试土土办法,在我的环境里,我让你发现,在辅助副本上要取到变化的数据,为宜要900ms要能保证,900ms以下,都没法保证,甚至在400ms以下,没突然出現过一次能同步的情况汇报。

SQL Server 2012 推出的最重要的功能之一Alwayson,是有另有4个集事先Cluster和Mirror于一体的新功能,即正确处理了Cluster依赖共享存储的间题报告 ,又正确处理了镜像没法实时读以及转移后连接串都可不可以添加转移IP的间题报告 ,看起来的确很实用。

2

16

21

没法你你是什么 同步模式到底是为社 个同步呢?

    @provider = N'SQLNCLI', @datasrc = N'192.168.400.201';

             PRIMARY KEY ,

你你是什么 多多线程 运行在工作上每该人独立,以达到更高的带宽。Log Scanner负责传送日志块,而无须等待的图片 Log Writer完成日志固化;辅助副本完成日志固化事先就会发送消息到主副本,告知数据事先传递完毕,而无须等待的图片 重做完成。其设计目标,是尽事先地减少AlwaysOn所带来的额外操作对正常数据库操作的性能影响。

SELECT  COUNT(*)

Alwayson有有另有4个同步模式,同步和异步,即然是同步,理所当然的我认为他是实时的,全都我配置了只读路由,来使用你你是什么 功能。

10

实验如下:

23

8

9

USE DemoDB

22

15

4

任何有另有4个SQL Server里就有个叫Log Writer的多多线程 运行,当任何有另有4个SQL用户提交有另有4个数据修改事务时,

它会负责把记录本次修改的日志信息先记入一段内存中的日志缓冲区,为社 让再写入物理日志文件(日志固化)。全都对于任何有另有4个数据库,日志文件里就有有所有数据变化的记录。对于配置为AlwaysOn主副本的数据库,SQL Server会为它建立有另有4个叫Log Scanner的工作多多线程 运行。你你是什么 多多线程 运行专门负责将日志记录从日志缓冲区事先日志文件里中读出,打包成日志块,发送给各个辅助副本。事先它的不间断工作,才使主副本上的数据变化,可没法不断地向辅助副本上传播。辅助副本上,同样会有有另有4个多多线程 运行,完成相应的数据更新动作,它们是固化(Harden)和重做(Redo)固化多多线程 运行会将主副本Log Scanner所发过来的日志块写入辅助副本的磁盘上的日志文件里(你你是什么 过程被称为"固化")。而重做多多线程 运行,则负责从磁盘上读取日志块,将日志记录翻译成数据修改操作,在辅助副本的数据库上完成。当重做多多线程 运行完成其工作事先,辅助副本上的数据库就会跟主副本一致了。AlwaysOn而是通过你你是什么 机制,保持副本之间的同步。重做多多线程 运行每隔固定的时间点,会跟主副本通信,告知它此人 的工作进度。主副本就要能知道两边数据的差距有多远。

18

6

    )

EXEC sp_addlinkedserver @server = N'Secondary', @srvproduct = N'',