亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統(tǒng) 3129 0
原文: SQL Server AlwaysON 同步模式的疑似陷阱

SQL Server 2012 推出的最重要的功能之一Alwayson,是一個集之前Cluster和Mirror于一體的新功能,即解決了Cluster依賴共享存儲的問題,又解決了鏡像不能實時讀以及轉移后連接串需要添加轉移IP的問題,看起來的確很實用。

而且Alwayson多副本的功能為實現(xiàn)讀寫分離提供了可能,試想一下,當主副本壓力比較大的時候,是否可以將讀操作引向輔助副本呢?答案一般來講是肯定的,請注意,是一般!

Alwayson有兩個同步模式,同步和異步,即然是同步,理所當然的我認為他是實時的,所以我 配置了只讀路由 ,來使用這個功能。

遺憾的是,這個同步并不是數(shù)據(jù)的實時同步,當主副本數(shù)據(jù)發(fā)生變化時,同步模式下的輔助副本并不能立即取到變化的數(shù)據(jù)。

實驗如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
EXEC sp_addlinkedserver @server = N 'Secondary' , @srvproduct = N '' ,
???? @provider = N 'SQLNCLI' , @datasrc = N '192.168.200.201' ;
?
EXEC sp_addlinkedsrvlogin 'Secondary ' , 'false ' , NULL , 'sa' , 'sqlcn.com'
?
USE DemoDB
go
?
CREATE TABLE tb_alwayson
???? (
?????? id INT IDENTITY
????????????? PRIMARY KEY ,
?????? name VARCHAR (200)
???? )
?
INSERT ? INTO tb_alwayson
???????? ( name )
???????? SELECT ? NEWID()
?
SELECT ? COUNT (*)
FROM ??? tb_alwayson
WAITFOR DELAY '00:00:00.900'
SELECT ? COUNT (*)
FROM ??? Secondary.DemoDB.dbo.tb_alwayson

使用連接服務器,這是一個非常好理解的測試辦法,在我的環(huán)境里,你會發(fā)現(xiàn),在輔助副本上要取到變化的數(shù)據(jù),大概要900ms才能保證,900ms以下,都沒法保證,甚至在300ms以下,沒出現(xiàn)過一次能同步的情況。

這就是同步模式,讓你沒有一點點兒防備

?

那么這個同步模式到底是怎么個同步呢?

答案是這樣的:它可以保證事務日志是同步的,也就是可以保證不丟失數(shù)據(jù),但不能保證數(shù)據(jù)變化沒有延時,這是由于輔助副本在接收主副本傳來的Trans log時,首先將其緩到本地Log Cache,接著強制硬化到本地Ldf,然后隨即向主副本告知你可以commit了,但注意,此時的硬化到本地ldf并非本地數(shù)據(jù)已經變化,這是因為輔助副本將trans log硬化到本地的同時,它是使用一個異步進程去redo這些trans log產生的Page變化到Data文件的,這也就決定了這個Redo的操作是不可能比硬化日志早的,所以數(shù)據(jù)的延時就是肯定的了。

?

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

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

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

事實已經很清楚了,同步的原理決定了數(shù)據(jù)的延時,想用AlwaysON做讀寫分離的朋友們,考慮好你所能容忍的延時時間吧!

另外,微軟你敢在官方聯(lián)機文檔與各種技術大會上把同步模式非數(shù)據(jù)實時同步提一下嗎?

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


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本一级大黄毛片免费基地 | 欧美成人精品高清在线观看 | 欧美性色福利视频在线观看 | 国产1区2区三区不卡 | 亚洲 欧美 中文 日韩欧美 | 狠狠香蕉 | 中文字幕在线播 | 久久艹伊人 | 国产日产精品久久久久快鸭 | 毛片网站在线观看 | 久久精品成人欧美大片免费 | 毛片久久久 | 中文字幕日韩一区二区不卡 | 日本视频播放免费线上观看 | 亚洲黄色免费看 | 97精品国产高清在线看入口 | 国产精品久久久久久网站 | 久久99亚洲精品久久久久 | 全部毛片免费看 | 免费一看一级毛片全播放 | 欧洲美女高清一级毛片 | 欧美激情伦妇在线观看 | 亚洲精品一区 | 亚洲色中文字幕在线播放 | 国产91成人精品亚洲精品 | 精品亚洲一区二区 | 今天的恋爱未删减在线观看 | 久久99免费视频 | 成人毛片国产a | 奇米第四色888 | 亚洲欧美日韩综合 | 色在线播放 | 国产香蕉75在线播放 | 成熟女人50岁一级毛片不卡 | 久久久久亚洲香蕉网 | 九九99线视频在线观看 | 奇米在线观看 | 精品 日韩 国产 欧美在线观看 | 午夜欧美性欧美 | 免费一级a毛片在线播放视 免费一级成人毛片 | 久久中文字幕在线观看 |