Pam mae eich ymrwymiad SQL cydamserol yn aros am daith gron y VPN
Mae ymrwymiad cydamserol mewn grŵp argaeledd yn cynnwys caledu'r log o bell. Mesurwch y llwybr hwnnw cyn beio'r lled band neu newid modd.
Neidiodd oedi ysgrifennu ar ôl i atgynhyrchiad symud i'r ail safle, a'r tiwnel yw'r gydran ddiweddaraf, felly mae'n cymryd y bai. Gall y tiwnel fod yn ddieuog: y tu mewn i grŵp argaeledd ag ymrwymiad cydamserol ni all y brif gydnabod ymrwymiad nes bod ysgrifennu log o bell wedi'i gwblhau, felly mae pob trafodiad yn talu taith gron faint bynnag o fegabit y gall y cyswllt ei gario. Mae drwybwn yn mesur beitiau yr eiliad, mae oedi yn mesur pa mor hir y mae un cyfnewid yn ei gymryd, ac nid oes angen ond un cyfnewid bach ar ymrwymiad i orffen. Mae un rhif yn setlo'r ddadl: hyd yr ymrwymiad ar drafodiad bach, wedi'i fesur y tu mewn i'r gronfa argaeledd ac eto yn erbyn tabl lleol ar yr un enghraifft.
Beth mae'r brif yn ei aros mewn gwirionedd
O dan ymrwymiad cydamserol mae'r brif yn dal cydnabyddiaeth yr ymrwymiad nes bod y partner yn cadarnhau bod ei gofnodion log wedi'u caledu. Mae caledu yn golygu eu hysgrifennu'n barhaol i log trafodion yr eilaidd, nid eu hailddefnyddio yn ei thudalennau data. Gall redo fod ar ei hôl hi am funudau heb ychwanegu milieiliad at ymrwymiad y brif.
Dogfennaeth Microsoft ar y moddau argaeledd yn esbonio'r ysgwyd llaw hwnnw ac yn disgrifio beth mae'r platfform yn ei wneud pan fydd partner yn disgyn allan. Mae atgynhyrchiad sydd wedi'i farcio'n gydamserol yn rheol am aros, nid yn addewid parhaol bod copi pell iach ar gael ar gyfer pob ymrwymiad. Mae'r llwybr datgysylltiedig yn cael ei ddiffinio ar wahân, ac nid yw'n syml bod yr ymrwymiad yn methu.
Felly mae'r aros a welwch yn swm: cludiant log, amserlennu ar y ddau west, ac ysgrifennu i'r storfa bell. Mae eilaidd â chyfrol log lawn yn ychwanegu amser na fydd unrhyw brawf cyflymder yn ei ddangos. Anaml y mae'r disg hwnnw'n cael ei fesur pan fydd y gŵyn yn enwi'r VPN.
Nid yw lled band yn oedi taith gron
Mae prawf cyflymder yn gorlifo'r llwybr am gyfnod byr ac yn adrodd cyfradd. Mae ymrwymiad yn gofyn rhywbeth culach: pa mor hir y mae neges fach yn ei gymryd i gyrraedd y tu draw, cael ei chadw, a dod yn ôl. Hyd y llwybr, ciwio a cholled pecynnau sy'n pennu'r rhif hwnnw, ac nid oes yr un ohonynt yn gwella pan fydd y darparwr yn codi'r nenfwd.
Felly gall tiwnel «cyflym» ychwanegu cosb amlwg at lwyth gwaith trwm ar ysgrifennu a adeiladir o lawer o drafodion bach dilyniannol. Mae'r un cyfanswm beitiau wedi'i rannu dros fil o ymrwymiadau yn talu'r daith gron fil o weithiau; mae un trosglwyddiad swmp yn ei thalu unwaith.
Gofynnwch i berchennog y rhwydwaith am oedi a cholled wedi'u mesur dros lwybr yr atgynhyrchiad ei hun o dan lwyth cynrychioladol. Nid yw ping o liniadur swyddfa i borth y VPN, na phrawf cyflymder i nod cyfagos, yn priodoli fawr ddim i'r llwybr y mae'r log yn teithio arno mewn gwirionedd. Gwnewch yn siŵr bod y ffenestr fesur yn gorgyffwrdd â'r oriau pan fydd ysgrifennu'n araf.
Darllenwch gyflwr yr atgynhyrchiad cyn newid unrhyw beth
Dechreuwch o'r hyn y mae'r enghreifftiau'n ei adrodd amdanynt eu hunain, oherwydd gall y ddwy ochr anghytuno ynghylch pa mor iach yw'r bartneriaeth a mae cyfartaledd y dangosfwrdd yn cuddio pa giw sy'n symud. Mae'r ymholiadau isod yn ateb cwestiynau gwahanol: un yn darllen cyflwr atgynhyrchu pob cronfa ddata, y llall yn darllen sut mae pob atgynhyrchiad wedi'i ffurfweddu. Rhedwch y ddau cyn cyffwrdd â modd.
SELECT ag.name AS ag_name, drs.database_id, drs.synchronization_state_desc,
drs.log_send_queue_size, drs.redo_queue_size, drs.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states AS drs
JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id;
SELECT ar.replica_server_name, ar.availability_mode_desc, ar.failover_mode_desc
FROM sys.availability_replicas AS ar;
Mae'r canlyniad cyntaf yn gwahanu cludiant log oddi wrth redo. log_send_queue_size yn dringo tra bod redo_queue_size yn aros yn wastad yn golygu nad yw'r log wedi cyrraedd; mae'r gwrthwyneb yn golygu ei fod wedi cyrraedd a bod ailchwarae ar ei hôl hi. Dim ond yr achos cyntaf sy'n eistedd ar lwybr yr ymrwymiad.
Mae'r ail ganlyniad yn cadarnhau pa atgynhyrchiadau sydd mewn gwirionedd wedi'u ffurfweddu fel y tybiwch, oherwydd mae modd a newidiwyd yn ystod digwyddiad cynharach yn tueddu i aros wedi'i newid heb ei ddogfennu. Darllenwch y rhes sy'n bwysig i chi yn lle rhagosodiad y grŵp: availability_mode_desc a failover_mode_desc yw fesul atgynhyrchiad. Nid yw secondary_lag_seconds yn bodoli ond ar SQL Server 2016 ac yn ddiweddarach, felly mae adeilad hŷn yn eich gadael gyda cholofnau ciw anfon a redo yn unig.
Yna mesurwch ysgrifeniad cynrychioladol yn lle ymddiried yng nghyfartaledd y dangosfwrdd. Rhedwch y bloc isod yn y gronfa argaeledd, yna ei redeg eto yn erbyn yr un siâp tabl mewn cronfa ddata y tu allan i'r grŵp ar yr un enghraifft. Mae'r bwlch rhwng y ddau hyd yn bris bras am y log pell, ac mae'n dal i fyny mewn dadl â'r tîm rhwydwaith yn llawer gwell nag y mae graff. Newidiwch un newidyn ar y tro wedyn, neu mae'r bwlch yn peidio â golygu dim.
IF OBJECT_ID('dbo.CommitProbe') IS NULL
CREATE TABLE dbo.CommitProbe (probe_id int PRIMARY KEY, touched_at datetime2(3));
IF NOT EXISTS (SELECT 1 FROM dbo.CommitProbe WHERE probe_id = 1)
INSERT INTO dbo.CommitProbe (probe_id) VALUES (1);
SET STATISTICS TIME ON;
BEGIN TRANSACTION;
UPDATE dbo.CommitProbe SET touched_at = SYSUTCDATETIME() WHERE probe_id = 1;
COMMIT TRANSACTION;
SET STATISTICS TIME OFF;
Beth mae ymrwymiad async yn ei brynu, a beth mae'n ei gostio
Gydag ymrwymiad async mae'r brif yn peidio ag aros am gadarnhad caledu pell, felly mae'r daith gron yn gadael llwybr yr ymrwymiad. Mae oedi ymrwymiad yn gostwng ac mae'r eilaidd yn rhydd i fynd ar ei hôl hi i raddau nad oes neb yn ei reoli. Mae hynny'n atgyweiriad go iawn i'r aros ac yn newid go iawn i'r addewid.
Y pris yw penderfyniad pwynt adfer. Os bydd y brif yn marw cyn i'w log gyrraedd targed failover y gallwch ei ddefnyddio mewn gwirionedd, mae gwthio'r gwasanaeth i'r copi async yn taflu trafodion y mae'r cymhwysiad eisoes wedi'u hadrodd fel rhai ymrwymedig. Nid oes unrhyw ddeialog ffurfweddu yn ei osod fel hynny, oherwydd cwestiwn busnes ydyw am golled dderbyniol, nid gosodiad perfformiad. Ysgrifennwch y ffenestr golled a oddefir cyn y digwyddiad, nid yn ystod y digwyddiad.
Cytunwch ar y modd â phwy bynnag sy'n berchen ar y data, yn ysgrifenedig, ochr yn ochr â'r weithdrefn failover ar gyfer yr achos pan nad yw'r targed a ffefrir ar gael. Nid yw cydamserol mewn dogfen ddylunio yn lawlyfr gweithredol, ac nid yw async yn drwydded i stopio gwylio'r ciwiau.
Dewiswch atgyweiriad y gallwch ei amddiffyn wedyn
Mae pedwar opsiwn onest. Torrwch deithiau gron ymrwymiad y gellir eu hosgoi lle mae semanteg y cymhwysiad yn caniatáu bagio; trwsiwch dagfa gludiant neu storfa y gwnaethoch ei mesur, a allai olygu cyfrol log gyflymach ar yr eilaidd yn lle pib mwy; symudwch yr atgynhyrchiad yn nes fel bod y daith gron yn crebachu; neu lacio'r polisi amddiffyn a derbyn ffenestr golled ehangach. Mae pob un yn prynu oedi trwy wario rhywbeth arall, ac mae'r pedwerydd yn gwario parhaoldeb. Enwch y gwariant cyn i chi ddewis.
Penderfynwch gyda tharged oedi'r llwyth gwaith a'i ofyniad parhaoldeb o'ch blaen ar yr un pryd, oherwydd mae optimeiddio'r naill yn gwario'r llall yn dawel. Yna rhedwch yr un trafodiad a fesurwyd gennych cyn y newid eto. Mae atgyweiriad na all symud y rhif hwnnw yn ddyfaliad yn gwisgo tocyn newid.
Cadwch y darlleniadau cyn ac ar ôl yn y cofnod newid. Fel arall mae'r person nesaf sy'n gweld ysgrifennu araf yn ailadrodd yr ymchwiliad o'r dechrau ac yn dechrau trwy feio'r tiwnel eto.