黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Replication的犄角旮旯(七)-- 一個DDL引發(fā)的

系統(tǒng) 2605 0
原文: Replication的犄角旮旯(七)-- 一個DDL引發(fā)的血案(下)(聊聊logreader的延遲)

?

?

《Replication的犄角旮旯》系列導(dǎo)讀

Replication的犄角旮旯(一)--變更訂閱端表名的應(yīng)用場景

Replication的犄角旮旯(二)--尋找訂閱端丟失的記錄

Replication的犄角旮旯(三)--聊聊@bitmap

Replication的犄角旮旯(四)--關(guān)于事務(wù)復(fù)制的監(jiān)控

Replication的犄角旮旯(五)--關(guān)于復(fù)制identity列

Replication的犄角旮旯(六)-- 一個DDL引發(fā)的血案(上)(如何近似估算DDL操作進(jìn)度)

Replication的犄角旮旯(七)-- 一個DDL引發(fā)的血案(下)(聊聊logreader的延遲)

Replication的犄角旮旯(八)-- 訂閱與發(fā)布異構(gòu)的問題

Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,賦予訂閱活力的工具

---------------------------------------華麗麗的分割線--------------------------------------------

?

前言:這是昨天剛剛發(fā)生的案例,盡管事件的起因只是一個簡單的DDL操作,但影響面和影響時間可以說是大大超出了預(yù)期;我們將在描述本案例的前因后果之后,聊聊如何近似估算DDL的操作進(jìn)度,以及關(guān)于logreader延遲的問題;

前一篇文章《Replication的犄角旮旯(六)-- 一個DDL引發(fā)的血案(上)(如何近似估算DDL操作進(jìn)度)》

http://www.cnblogs.com/diabloxl/p/3844205.html

前因簡述:

一個復(fù)制節(jié)點(即使上級的訂閱,又是下級的分發(fā))需要對一個表進(jìn)行DDL操作,由于需要修改主鍵,因此將這個表從publication中刪除,然后就開始了漫長的DDL操作……

本來需要進(jìn)行DDL操作的表已經(jīng)從replication中摘除了,以為不會影響到其他article的復(fù)制,結(jié)果慘劇還是發(fā)生了,原因依舊是VLF對logreader的影響,但這次的問題和以往又有些不同……

?

=====================華麗麗的分割線=====================

先說說之前遇到的logreader延遲的情況:

1、發(fā)布表的寫操作

  這里又分為兩種情況

  a)大量并發(fā)寫操作:指大量的小DML操作,特點是事務(wù)小、并發(fā)多

  b)大事務(wù)寫操作:指有單個大事務(wù)操作,特點是事務(wù)大、并發(fā)少

2、非發(fā)布表的寫操作

  指有寫操作的表并不是需要復(fù)制的表,這里將上述a\b兩種情況合并在一起說,這次遇到的是b這個類型;

?

檢查logreader的延遲的利器——sp_replcounters

MSDN上關(guān)于這個存儲過程的解釋:

http://msdn.microsoft.com/zh-cn/LIBRARY/ms190486

無論對于上述哪種情況,如果 Replicated transactions 持續(xù)增加,那就是logreader延遲了,初步的現(xiàn)象就是這個發(fā)布下所有的訂閱都在延遲;

那上述3種情況的差異呢?

  對于1a)?

Replicated transactions 快速增加,replbiginlsn和replnextlsn都會較慢速度的變化;(這里的慢速是相對與正常速度而言,受實際業(yè)務(wù)環(huán)境影響,下同)

  這是由于大量的小DML操作都會快速的提交,但由于大量的日志寫入,導(dǎo)致存在大量的活動VLF,因而日志不能被截斷;同時,盡管logreader根據(jù)replnextlsn去定位下一個要復(fù)制的lsn,但由于效率下降,且后面涌入的新事務(wù)也在增長,導(dǎo)致惡性循環(huán),從而引起logreader的延遲;

  對于1b)

Replicated transactions 慢速 增加,replbiginlsn不變、replnextlsn不變;

  雖然事務(wù)并發(fā)量很小,但由于單個提交的事務(wù)很大,仍然導(dǎo)致大量的活動VLF,從而引起logreader效率下降;

  對于2

Replicated transactions 快速增加,replbiginlsn不變、replnextlsn慢速變化;

  由于非復(fù)制的表也需要寫日志,且占用了大量VLF,因此logreader需要從大量的VLF中獲取需要復(fù)制的日志信息,這也同樣影響到它的執(zhí)行效率;

?

那我們該如何應(yīng)對呢?

  硬件當(dāng)然是最有效的手段之一,升級內(nèi)存、磁盤換成IO卡等可以解決根本問題,但這又不是絕對,一個SQL跑死服務(wù)器的情況也絕非不可能;

  1、對于1a的情況,建議有頻繁寫操作的表,還是能分就分,或者分到多個庫中,或者分到多個實例下,原則就是不要讓logreader干太多活,畢竟的是個單線程的任務(wù),穿少了也cool,喝多了也吐。

  2、對于1b的情況,本身單個大事務(wù)就不是OLTP環(huán)境中提倡的,不光是復(fù)制延遲,光一堆鎖估計機(jī)器也受不了;建議拆成多個事務(wù)來跑;

  3、對于2來說,盡管要搞的表和復(fù)制沒有任何關(guān)系,但不能忽略VLF對logreader的影響,既然在一個庫中,公用日志序列,還是小心為妙;如果是大表的DDL的操作,還是通過停寫、建新表、導(dǎo)數(shù)據(jù)的方法實現(xiàn),bulk insert的方式或許是對日志影響最小的;

  但bulk insert的方式一般要求停寫,而受業(yè)務(wù)的制約,可能不允許長時間的停寫,這該怎么破?

  可以看看我之前的文章《 Replication的犄角旮旯(一)--變更訂閱端表名的應(yīng)用場景 》,復(fù)制回路可以說是為這種需求量身定做的~

?

Replication的犄角旮旯(七)-- 一個DDL引發(fā)的血案(下)(聊聊logreader的延遲)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論