మాడ్యూల్ పాఠాలు (4/4)
ఐసోలేషన్ స్థాయిలు
అప్డేట్ కోసం స్పష్టమైనది కాకుండా, లావాదేవీలు ఇంజిన్లో లోతైన గణిత నియమాలను కలిగి ఉంటాయి, ఇవి డిఫాల్ట్గా ప్రతి వ్యక్తి పరస్పర చర్యను వేరుచేయడానికి ఎంత శక్తిని వెచ్చించాలో నియంత్రిస్తాయి. దీనిని ఐసోలేషన్ స్థాయి అంటారు. SQL ప్రపంచంలో శక్తి మరియు భద్రత పరంగా మనకు 4 ప్రామాణికమైనవి తెలుసు కానీ పనితీరు పరంగా స్పష్టంగా విలోమం.
READ UNCOMMITTED:అరాచక పిచ్చి, మీ లావాదేవీలో తమ స్వంత స్క్రిప్ట్లలోని వ్యక్తుల నుండి తాత్కాలిక డేటాతో సహా ఇతరులు చేసిన ప్రతి మార్పును చూస్తారు. స్థిరమైన డర్టీ రీడ్ ఎర్రర్ల కారణంగా పెద్ద DBలలో ఎవరూ దీనిని ఉపయోగించరు.READ COMMITTED:(పోస్ట్గ్రెస్ కోసం డిఫాల్ట్). మూడవ పక్షం COMMITని జారీ చేసిన వెంటనే మీరు కొత్త డేటాను తక్షణమే చూస్తారు, కానీ మీరు ఫాంటమ్ రీడ్లకు (మీ సుదీర్ఘ వర్క్ఫ్లోల మధ్యలో కొత్త రికార్డ్లను చూడటం) లేదా నాన్-లీనియర్ స్థిరమైన వీక్షణకు బాధితులు కావచ్చు.REPEATABLE READ:భారీ. మీ పెద్ద టైమ్-విండో సెషన్ వ్యవధిలో, నా ప్రశ్న ప్రారంభమైన సమయంలో నేను డేటాబేస్ స్తంభింపజేసినట్లు "చూసాను", ఇతర వ్యక్తులు పూర్తి చేసిన అధికారిక కమిట్లను కూడా పూర్తిగా విస్మరించి, విస్మరించి! ఇది అద్భుతంగా కనిపించే రికార్డుల నుండి రక్షిస్తుంది, స్థిరత్వానికి హామీ ఇస్తుంది.SERIALIZABLE:గాడ్ టైర్ (సూపర్ స్లో). అతివ్యాప్తి చెందుతున్న ప్రతి లావాదేవీని అడ్డుకోవడం మరియు వాటిని ఒకే లేన్లో వరుస క్రమంలో అమలు చేయడం, ఢీకొన్న వాటిని నిర్దాక్షిణ్యంగా రద్దు చేయడం, స్వల్పంగా ఢీకొనే శాస్త్రీయ అవకాశాన్ని కూడా తొలగించడం, 90% అధిక త్రూపుట్ను త్యాగం చేయడం ద్వారా పరిగణిస్తుంది.
మీరు దీన్ని ఎలా సెట్ చేస్తారు?
మీరు టైప్ చేసే సాధారణ BEGIN;కి బదులుగా:
BEGIN ISOLATION LEVEL SERIALIZABLE;
-- and you proceed normally with your hermetically sealed isolation
UPDATE products SET stock = 10;
COMMIT;లేదా కొన్ని వేరియంట్లు మరియు పాత ఇంజిన్లలో మీరు దీన్ని ప్రారంభించిన తర్వాత కేటాయిస్తారు:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;మీరే ప్రయత్నించండి
స్తంభింపచేసిన, రక్షిత మార్పిడిని సృష్టించడానికి ప్రశ్న యొక్క జీవితకాలం కోసం గ్లోబల్ స్థాయిని రీపీట్ చేయగలిగేలా రీడ్ చేయడానికి లాంఛనప్రాయంగా సెట్ చేయడం ద్వారా లావాదేవీని ప్రారంభించండి.\nప్రశ్న స్థాయిలో వేరొకదానిని అనుసరించే వరకు అది ఎటువంటి ప్రయోజనాన్ని అందించదని గుర్తుంచుకోండి, కాబట్టి దాన్ని 'కమిట్'తో ఖాళీగా మూసివేయండి.
సూచనను చూపించు
ప్రారంభ ఐసోలేషన్ స్థాయి పునరావృతమయ్యే రీడ్తో తెరవండి; మరియు COMMITతో మూసివేయండి;
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
క్రేజీ సీరియలైజ్ చేయదగిన స్థాయిని ప్రయత్నించండి మరియు కొంత కల్పిత డేటాను చొప్పించండి.\n'SERIALIZABLE' బ్లాక్ను తెరవండి.\nకేటగిరీ Id=2 పేరును 'Nuovo Nome Segreto'కి అప్డేట్ చేయండి.\nఆఖరి అటామిక్ని అమలు చేయండి, కమిట్ని పరిష్కరించండి.
సూచనను చూపించు
ఐసోలేషన్ స్థాయి క్రమీకరించదగినది;\nఅప్డేట్ కేటగిరీలు సెట్ పేరు = 'నువో నోమ్ సెగ్రెటో' ఎక్కడ id = 2;\nకమిట్;
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది