మీ సింక్రోనస్ SQL కమిట్ VPN రౌండ్ ట్రిప్ కోసం ఎదురుచూస్తుంది ఎందుకు
లభ్యత సమూహంలో సింక్రోనస్ కమిట్ దూర లాగ్ యొక్క స్థిరీకరణను కలిగి ఉంటుంది. బ్యాండ్విడ్త్ను నిందించే లేదా మోడ్ను మార్చే ముందు ఆ మార్గాన్ని కొలవండి.
రెండవ సైట్కు ప్రతిరూపం మారిన తర్వాత రాత ఆలస్యం పెరిగింది, మరియు టన్నెల్ కొత్త భాగం కాబట్టి దోషం దానిపై పడుతుంది. టన్నెల్ నిర్దోషి కావచ్చు: సింక్రోనస్ కమిట్ ఉన్న లభ్యత సమూహం లోపల దూర లాగ్ రాత పూర్తయ్యే వరకు ప్రాథమికం కమిట్ను అంగీకరించలేదు, కాబట్టి ప్రతి లావాదేవీ ఒక రౌండ్ ట్రిప్ చెల్లిస్తుంది, లింక్ ఎన్ని మెగాబిట్లు మోయగలిగినా. థ్రూపుట్ సెకనుకు బైట్లను కొలుస్తుంది, ఆలస్యం ఒక మార్పిడి ఎంత సమయం తీసుకుంటుందో కొలుస్తుంది, మరియు కమిట్ పూర్తికావడానికి ఒక చిన్న మార్పిడి మాత్రమే సరిపోతుంది. ఒక సంఖ్యే వాదనను తీర్మానిస్తుంది: చిన్న లావాదేవీ కమిట్ వ్యవధి, లభ్యత డేటాబేస్ లోపల మరియు తర్వాత అదే ఇన్స్టాన్స్లోని స్థానిక పట్టికకు వ్యతిరేకంగా మళ్లీ కొలవబడుతుంది.
ప్రాథమికం నిజంగా ఏమి ఎదురుచూస్తుంది
సింక్రోనస్ కమిట్ కింద ప్రాథమికం తన భాగస్వామి తన లాగ్ రికార్డులు స్థిరంగా రాయబడినట్లు నిర్ధారించే వరకు కమిట్ అంగీకారాన్ని నిలిపి ఉంచుతుంది. స్థిరంగా అంటే ద్వితీయ లావాదేవీ లాగ్లో శాశ్వతంగా రాయబడినది, దాని డేటా పేజీలలో మళ్లీ నడపబడినది కాదు. రీడూ ప్రాథమిక కమిట్కు ఒక మిల్లీసెకన్ కూడా జోడించకుండా నిమిషాల పాటు వెనుకబడి ఉండవచ్చు.
లభ్యత మోడ్లపై Microsoft పత్రం ఆ చేతులు కలపడాన్ని వివరిస్తుంది మరియు భాగస్వామి బయటకు వెళ్లినప్పుడు వేదిక ఏమి చేస్తుందో వివరిస్తుంది. సింక్రోనస్గా గుర్తించబడిన ప్రతిరూపం ఎదురుచూపు గురించిన నియమం, ప్రతి కమిట్కు ఆరోగ్యకరమైన దూర నకలు ఉందనే శాశ్వత హామీ కాదు. డిస్కనెక్ట్ అయిన మార్గం విడిగా నిర్వచించబడింది, అది కమిట్ విఫలమవడం మాత్రమే కాదు.
అందువల్ల మీరు చూసే ఎదురుచూపు ఒక మొత్తం: లాగ్ రవాణా, రెండు హోస్ట్లపై షెడ్యూలింగ్ మరియు దూర నిల్వకు రాయడం. నిండిన లాగ్ వాల్యూమ్ ఉన్న ద్వితీయ ఏ వేగ పరీక్ష చూపించని సమయాన్ని జోడిస్తుంది. ఫిర్యాదులో VPN పేరు చెప్పినప్పుడు ఆ డిస్క్ అరుదుగా కొలవబడుతుంది.
బ్యాండ్విడ్త్ రౌండ్-ట్రిప్ ఆలస్యం కాదు
వేగ పరీక్ష మార్గాన్ని కొద్దిసేపు నింపి వేగాన్ని నివేదిస్తుంది. కమిట్ మరింత సన్నని విషయాన్ని అడుగుతుంది: చిన్న సందేశం అవతలి వైపుకు చేరడానికి, నిల్వ చేయబడటానికి, తిరిగి రావడానికి ఎంత సమయం పడుతుంది. మార్గ పొడవు, క్యూలు మరియు ప్యాకెట్ నష్టం ఆ సంఖ్యను నిర్ణయిస్తాయి, సరఫరాదారు పరిమితిని పెంచినప్పుడు వాటిలో ఏదీ మెరుగుపడదు.
అందువల్ల «వేగవంతమైన» టన్నెల్ అనేక చిన్న వరుస లావాదేవీలతో నిర్మించిన రాత-భారీ పనిభారానికి కనిపించే జరిమానా జోడించవచ్చు. అదే మొత్తం బైట్లు వెయ్యి కమిట్లుగా విభజించబడితే రౌండ్ ట్రిప్ను వెయ్యి సార్లు చెల్లిస్తుంది; ఒక పెద్ద బదిలీ దాన్ని ఒకసారి చెల్లిస్తుంది.
ప్రతినిధి భారం కింద ప్రతిరూప మార్గంపైనే ఆలస్యం మరియు నష్టాన్ని కొలవమని నెట్వర్క్ యజమానిని అడగండి. ఆఫీసు ల్యాప్టాప్ నుండి VPN గేట్వేకు పింగ్, లేదా సమీప నోడ్కు వేగ పరీక్ష, లాగ్ నిజంగా ప్రయాణించే మార్గానికి దాదాపు ఏమీ ఆపాదించదు. కొలత విండో నెమ్మదైన రాత గంటలతో కలిసేలా చూడండి.
ఏదైనా మార్చే ముందు ప్రతిరూపం స్థితిని చదవండి
ఇన్స్టాన్స్లు తమ గురించి నివేదించే దానితో ప్రారంభించండి, ఎందుకంటే భాగస్వామ్యం ఎంత ఆరోగ్యకరమో అనే దానిపై రెండు వైపులా ఏకీభవించకపోవచ్చు మరియు డాష్బోర్డ్ సగటు ఏ క్యూ కదులుతోందో దాచుతుంది. క్రింది ప్రశ్నలు వేర్వేరు ప్రశ్నలకు సమాధానం ఇస్తాయి: ఒకటి ప్రతి డేటాబేస్కు ప్రతిరూప స్థితిని చదువుతుంది, మరొకటి ప్రతి ప్రతిరూపం ఎలా కాన్ఫిగర్ చేయబడిందో చదువుతుంది. ఏ మోడ్ను తాకే ముందు రెండింటినీ నడపండి.
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;
మొదటి ఫలితం లాగ్ రవాణాను రీడూనుండి వేరు చేస్తుంది. log_send_queue_size పెరుగుతుండగా redo_queue_size చదునుగా ఉంటే లాగ్ రాలేదని అర్థం; దీనికి విరుద్ధం అయితే అది వచ్చిందని మరియు రీప్లే వెనుకబడి ఉందని అర్థం. కమిట్ మార్గంలో మొదటి సందర్భం మాత్రమే కూర్చుంటుంది.
రెండవ ఫలితం ఏ ప్రతిరూపాలు నిజంగా మీరు ఊహించినట్లు కాన్ఫిగర్ చేయబడ్డాయో నిర్ధారిస్తుంది, ఎందుకంటే మునుపటి సంఘటనలో మార్చిన మోడ్ మార్చబడి డాక్యుమెంట్ లేకుండా ఉండే అవకాశం ఉంది. సమూహ డిఫాల్ట్కు బదులు మీకు ముఖ్యమైన వరుసను చదవండి: availability_mode_desc మరియు failover_mode_desc ప్రతి ప్రతిరూపానికి. secondary_lag_seconds SQL Server 2016 మరియు తర్వాత మాత్రమే ఉంది, కాబట్టి పాత బిల్డ్ మీకు పంపే క్యూ మరియు రీడూ నిలువు వరుసలను మాత్రమే మిగిలిస్తుంది.
తర్వాత డాష్బోర్డ్ సగటును నమ్మడం బదులు ప్రతినిధి రాతను కొలవండి. క్రింది బ్లాక్ను లభ్యత డేటాబేస్లో నడపండి, తర్వాత అదే ఇన్స్టాన్స్లో సమూహం వెలుపల ఉన్న డేటాబేస్లో అదే పట్టిక ఆకారానికి వ్యతిరేకంగా మళ్లీ నడపండి. రెండు వ్యవధుల మధ్య తేడా దూర లాగ్ యొక్క మోటు ధర, మరియు నెట్వర్క్ బృందంతో వాదనలో అది గ్రాఫ్ కంటే చాలా బాగా నిలుస్తుంది. తర్వాత ఒకసారి ఒక వేరియబుల్ మార్చండి, లేకపోతే తేడాకు అర్థం ఉండదు.
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;
అసింక్రోనస్ కమిట్ ఏమి కొంటుంది, ఏమి ఖర్చు చేస్తుంది
అసింక్రోనస్ కమిట్తో ప్రాథమికం దూర స్థిరీకరణ నిర్ధారణ కోసం ఎదురుచూడటం ఆపేస్తుంది, కాబట్టి రౌండ్ ట్రిప్ కమిట్ మార్గం నుండి బయటకు వెళ్తుంది. కమిట్ ఆలస్యం తగ్గుతుంది మరియు ద్వితీయ ఎవరూ నియంత్రించని మేరకు వెనుకబడటానికి స్వేచ్ఛగా ఉంటుంది. అది ఎదురుచూపుకు నిజమైన పరిష్కారం మరియు హామీకి నిజమైన మార్పు.
ధర రికవరీ పాయింట్ గురించిన నిర్ణయం. ప్రాథమికం తన లాగ్ నిజంగా ఉపయోగించగల ఫెయిలోవర్ లక్ష్యాన్ని చేరుకునే ముందు చనిపోతే, సేవను అసింక్రోనస్ నకలుకు తరలించడం అప్లికేషన్ ఇప్పటికే కమిట్ అని నివేదించిన లావాదేవీలను పారేస్తుంది. ఏ కాన్ఫిగరేషన్ సంభాషణా దాన్ని అలా చూపించదు, ఎందుకంటే అది ఆమోదయోగ్యమైన నష్టం గురించిన వ్యాపార ప్రశ్న, పనితీరు సెట్టింగ్ కాదు. సహించదగిన నష్ట విండోను సంఘటనకు ముందు రాయండి, దాని సమయంలో కాదు.
డేటా యజమానితో మోడ్పై లిఖితపూర్వకంగా అంగీకరించండి, ఇష్టపడే లక్ష్యం అందుబాటులో లేని సందర్భానికి ఫెయిలోవర్ విధానంతో పాటు. డిజైన్ పత్రంలో సింక్రోనస్ అనేది కార్యాచరణ మార్గదర్శిని కాదు, అసింక్రోనస్ క్యూలను గమనించడం ఆపేందుకు లైసెన్స్ కాదు.
తర్వాత మీరు సమర్థించగల పరిష్కారాన్ని ఎంచుకోండి
నాలుగు నిజాయితీ ఎంపికలు ఉన్నాయి. అప్లికేషన్ అర్థశాస్త్రం బ్యాచింగ్ను అనుమతించే చోట నివారించదగిన కమిట్ రౌండ్ ట్రిప్లను కత్తిరించండి; మీరు కొలిచిన రవాణా లేదా నిల్వ అడ్డంకిని సరిచేయండి, అది ద్వితీయపై పెద్ద పైపు బదులు వేగవంతమైన లాగ్ వాల్యూమ్ అని అర్థం కావచ్చు; రౌండ్ ట్రిప్ తగ్గేలా ప్రతిరూపాన్ని దగ్గరకు తీసుకురండి; లేదా రక్షణ విధానాన్ని సడలించి విస్తృత నష్ట విండోను అంగీకరించండి. ప్రతిదీ ఆలస్యాన్ని మరొకటి ఖర్చు చేసి కొంటుంది, నాలుగవది మన్నికను ఖర్చు చేస్తుంది. ఎంచుకునే ముందు ఖర్చుకు పేరు పెట్టండి.
పనిభారం ఆలస్య లక్ష్యం మరియు దాని మన్నిక అవసరం ఒకేసారి మీ ముందు ఉండగా నిర్ణయించండి, ఎందుకంటే ఒకదాన్ని మెరుగుపరచడం మరొకదాన్ని నిశ్శబ్దంగా ఖర్చు చేస్తుంది. తర్వాత మార్పుకు ముందు కొలిచిన అదే లావాదేవీని మళ్లీ నడపండి. ఆ సంఖ్యను కదిలించలేని పరిష్కారం మార్పు టికెట్ ధరించిన ఊహ.
మార్పు రికార్డులో ముందు మరియు తర్వాత చదవడాలను ఉంచండి. లేకపోతే నెమ్మదైన రాతను చూసే తదుపరి వ్యక్తి దర్యాప్తును మొదటి నుండి పునరావృతం చేసి మళ్లీ టన్నెల్ను నిందించడం ప్రారంభిస్తాడు.