2.1 నిబద్ధత లేకుండా చదవండి

"లావాదేవీ ఐసోలేషన్ స్థాయి" అనేది DBMS యొక్క అంతర్గత మెకానిజమ్‌ల ద్వారా అందించబడిన రక్షణ స్థాయిని సూచిస్తుంది (అంటే ప్రత్యేక ప్రోగ్రామింగ్ అవసరం లేదు) లావాదేవీల యొక్క సమాంతర అమలు సమయంలో సంభవించే అన్ని లేదా పైన పేర్కొన్న కొన్ని రకాల డేటా అసమానతల నుండి. SQL-92 ప్రమాణం నాలుగు ఐసోలేషన్ స్థాయిల స్థాయిని నిర్వచిస్తుంది:

  • నిబద్ధత లేకుండా చదవండి
  • నిబద్ధతతో చదివారు
  • పునరావృత పఠనం
  • సీరియలైజ్ చేయదగినది

వాటిలో మొదటిది బలహీనమైనది, చివరిది బలమైనది, ప్రతి తదుపరిది మునుపటి వాటిని కలిగి ఉంటుంది.

అత్యల్ప (మొదటి) ఐసోలేషన్ స్థాయి. అనేక సమాంతర లావాదేవీలు ఒకే పట్టిక వరుసను సవరించడానికి ప్రయత్నిస్తే, చివరి వరుస విజయవంతంగా పూర్తయిన లావాదేవీల మొత్తం సెట్ ద్వారా నిర్ణయించబడిన విలువను కలిగి ఉంటుంది. ఈ సందర్భంలో, తార్కికంగా అస్థిరమైన డేటా మాత్రమే కాకుండా, మార్పులు ఇంకా నమోదు చేయని డేటాను కూడా చదవడం సాధ్యమవుతుంది.

ఈ ఐసోలేషన్ స్థాయిని అమలు చేయడానికి ఒక సాధారణ మార్గం అప్‌డేట్ కమాండ్ యొక్క వ్యవధి కోసం డేటాను లాక్ చేయడం, ఇది సమాంతరంగా అమలు చేయబడిన అదే వరుసలలోని సవరణ ఆదేశాలు వాస్తవానికి వరుసగా అమలు చేయబడుతుందని మరియు మార్పులు ఏవీ కోల్పోకుండా నిర్ధారిస్తుంది. ఈ ఐసోలేషన్ స్థాయి కింద చదవడానికి మాత్రమే లావాదేవీలు ఎప్పుడూ నిరోధించబడవు.

2.2 కట్టుబడి చదవండి

చాలా పారిశ్రామిక DBMS, ప్రత్యేకించి Microsoft SQL సర్వర్, PostgreSQL మరియు Oracle, డిఫాల్ట్‌గా ఈ స్థాయిని ఉపయోగిస్తాయి. ఈ స్థాయిలో, డ్రాఫ్ట్ నుండి రక్షణ, "డర్టీ" రీడింగ్ అందించబడుతుంది, అయితే, ఒక లావాదేవీ యొక్క ఆపరేషన్ సమయంలో, మరొకటి విజయవంతంగా పూర్తి చేయబడుతుంది మరియు దాని ద్వారా చేసిన మార్పులు పరిష్కరించబడతాయి. ఫలితంగా, మొదటి లావాదేవీ వేరే డేటా సెట్‌తో పని చేస్తుంది.

పూర్తి రీడ్ యొక్క అమలు రెండు విధానాలలో ఒకదానిపై ఆధారపడి ఉంటుంది: నిరోధించడం లేదా సంస్కరణ చేయడం.

చదవగలిగే మరియు మార్చగల డేటాను నిరోధించడం.

ఇది పూర్తయ్యే వరకు రీడ్ కమిట్డ్ లెవల్ లేదా అంతకంటే ఎక్కువ స్థాయిలో నిర్వహించే లావాదేవీలను రీడింగ్ చేయడానికి వ్రాత లావాదేవీ మార్చగల డేటాను బ్లాక్ చేస్తుంది, తద్వారా "డర్టీ" రీడింగ్‌ను నివారిస్తుంది మరియు రీడింగ్ లావాదేవీ ద్వారా లాక్ చేయబడిన డేటా ఆపరేషన్ పూర్తయిన వెంటనే విడుదల చేయబడుతుంది. SELECT(అందువలన, ఇచ్చిన ఐసోలేషన్ స్థాయిలో "పునరావృతం కాని రీడ్" పరిస్థితి ఏర్పడవచ్చు).

సమాంతరంగా మారే అడ్డు వరుసల బహుళ సంస్కరణలను సేవ్ చేస్తోంది.

అడ్డు వరుసను మార్చిన ప్రతిసారి, DBMS ఈ అడ్డు వరుస యొక్క కొత్త సంస్కరణను సృష్టిస్తుంది, దానితో డేటాను మార్చిన లావాదేవీ పని చేస్తూనే ఉంటుంది, అయితే ఏదైనా ఇతర “పఠనం” లావాదేవీ చివరిగా కట్టుబడి ఉన్న సంస్కరణను అందిస్తుంది. ఈ విధానం యొక్క ప్రయోజనం ఏమిటంటే ఇది వేగంగా ఉంటుంది ఎందుకంటే ఇది నిరోధించడాన్ని నిరోధిస్తుంది. అయినప్పటికీ, ఇది మొదటిదానితో పోల్చితే, RAM యొక్క గణనీయంగా ఎక్కువ వినియోగం అవసరం, ఇది వరుస సంస్కరణలను నిల్వ చేయడానికి ఖర్చు చేయబడుతుంది.

అదనంగా, బహుళ లావాదేవీలు డేటాను సమాంతరంగా మార్చినప్పుడు, అనేక ఏకకాల లావాదేవీలు ఒకే డేటాకు అస్థిరమైన మార్పులను చేసే పరిస్థితిని సృష్టించవచ్చు (తాళాలు లేనందున, ఇది జరగకుండా ఏమీ నిరోధించదు). అప్పుడు మొదట చేసే లావాదేవీ ప్రధాన డేటాబేస్లో దాని మార్పులను సేవ్ చేస్తుంది మరియు మిగిలిన సమాంతర లావాదేవీలు చేయడం అసాధ్యం (ఇది మొదటి లావాదేవీ యొక్క నవీకరణ యొక్క నష్టానికి దారి తీస్తుంది). అటువంటి పరిస్థితిలో DBMS చేయగలిగే ఏకైక విషయం ఏమిటంటే, మిగిలిన లావాదేవీలను వెనక్కి తిప్పికొట్టడం మరియు "రికార్డు ఇప్పటికే మార్చబడింది" అనే దోష సందేశాన్ని జారీ చేయడం.

నిర్దిష్ట అమలు పద్ధతిని DBMS డెవలపర్‌లు ఎంచుకున్నారు మరియు కొన్ని సందర్భాల్లో దీనిని అనుకూలీకరించవచ్చు. కాబట్టి, డిఫాల్ట్‌గా, MS SQL లాక్‌లను ఉపయోగిస్తుంది, అయితే (వెర్షన్ 2005 మరియు అంతకంటే ఎక్కువ) డేటాబేస్ పరామితిని సెట్ చేసేటప్పుడు READ_COMMITTED_SNAPSHOT, ఇది సంస్కరణ వ్యూహానికి మారుతుంది, ఒరాకిల్ ప్రారంభంలో సంస్కరణ పథకం ప్రకారం మాత్రమే పనిచేస్తుంది. ఇన్‌ఫార్మిక్స్‌లో, రీడ్ ట్రాన్సాక్షన్‌కు తాజా నిబద్ధత ఉన్న డేటాను అందుకోవడానికి కారణమయ్యే కాన్ఫిగరేషన్ ఎంపికను USELASTCOMMITTED(వెర్షన్ 11.1 ప్రకారం) సెట్ చేయడం ద్వారా మీరు రీడ్ మరియు రైట్ లావాదేవీల మధ్య వైరుధ్యాలను నిరోధించవచ్చు.

2.3 పునరావృత పఠనం

రీడింగ్ లావాదేవీ "చూడని" స్థాయి అది గతంలో చదివిన డేటాకు మారుతుంది. అదే సమయంలో, ప్రస్తుత లావాదేవీ ద్వారా చదివిన డేటాను అది ముగిసే వరకు ఏ ఇతర లావాదేవీ కూడా మార్చదు.

లావాదేవీలో ఏదైనా సూచన ద్వారా చదివిన మొత్తం డేటాకు షేర్డ్ మోడ్‌లోని లాక్‌లు వర్తింపజేయబడతాయి మరియు లావాదేవీ పూర్తయ్యే వరకు ఉంచబడతాయి. పెండింగ్‌లో ఉన్న లావాదేవీ ద్వారా చదవబడిన అడ్డు వరుసలను సవరించకుండా ఇది ఇతర లావాదేవీలను నిరోధిస్తుంది. అయితే, ఇతర లావాదేవీలు ప్రస్తుత లావాదేవీలో ఉన్న సూచనల కోసం శోధన పరిస్థితులకు సరిపోలే కొత్త లైన్‌లను చేర్చవచ్చు. ప్రస్తుత లావాదేవీ ద్వారా స్టేట్‌మెంట్ పునఃప్రారంభించబడినప్పుడు, కొత్త అడ్డు వరుసలు పొందబడతాయి, ఫలితంగా ఫాంటమ్ రీడ్ అవుతుంది.

భాగస్వామ్య తాళాలు ప్రతి స్టేట్‌మెంట్ చివరిలో విడుదల కాకుండా లావాదేవీ ముగిసే వరకు ఉంచబడినందున, ఏకాభిప్రాయ స్థాయి ఐసోలేషన్ స్థాయి కంటే తక్కువగా ఉంటుంది READ COMMITTED. అందువల్ల, ఇది మరియు అధిక లావాదేవీ స్థాయిలను అనవసరంగా ఉపయోగించడం సాధారణంగా సిఫార్సు చేయబడదు.

2.4 సీరియలైజ్ చేయదగినది

ఐసోలేషన్ యొక్క అత్యధిక స్థాయి; లావాదేవీలు ఒకదానికొకటి పూర్తిగా వేరుచేయబడతాయి, ప్రతి ఒక్కటి సమాంతర లావాదేవీలు లేనట్లుగా అమలు చేయబడతాయి. ఈ స్థాయిలో మాత్రమే ఉమ్మడి లావాదేవీలు "ఫాంటమ్ రీడ్" ప్రభావానికి లోబడి ఉండవు.

2.5 నిజమైన DBMSలో లావాదేవీ ఐసోలేషన్‌కు మద్దతు

లావాదేవీ DBMS ఎల్లప్పుడూ నాలుగు స్థాయిలకు మద్దతు ఇవ్వదు మరియు అదనపు వాటిని కూడా పరిచయం చేయవచ్చు. ఇన్సులేషన్ అందించడంలో వివిధ సూక్ష్మ నైపుణ్యాలు కూడా ఉన్నాయి.

కాబట్టి, సూత్రప్రాయంగా, ఒరాకిల్ సున్నా స్థాయికి మద్దతు ఇవ్వదు, ఎందుకంటే దాని లావాదేవీల అమలు "డర్టీ రీడ్‌లు" మినహాయించబడుతుంది మరియు అధికారికంగా పునరావృతమయ్యే రీడ్ స్థాయిని సెట్ చేయడానికి అనుమతించదు, అంటే, ఇది (డిఫాల్ట్‌గా) Read committedమరియు Serializable. అదే సమయంలో, వ్యక్తిగత ఆదేశాల స్థాయిలో, ఇది వాస్తవానికి రీడ్ రిపీటబిలిటీకి హామీ ఇస్తుంది ( SELECTమొదటి లావాదేవీలో ఒక కమాండ్ డేటాబేస్ నుండి వరుసల సమితిని ఎంచుకుంటే, మరియు ఈ సమయంలో సమాంతర రెండవ లావాదేవీ ఈ వరుసలలో కొన్నింటిని మారుస్తుంది, అప్పుడు మొదటి లావాదేవీ ద్వారా అందుకున్న ఫలితం సెట్‌లో రెండవ లావాదేవీ లేనట్లుగా మారని అడ్డు వరుసలు ఉంటాయి). ఒరాకిల్ ట్రాన్సాక్షన్స్ అని పిలవబడే READ-ONLYవాటికి కూడా మద్దతిస్తుంది Serializable, ఇది .

మరియు మైక్రోసాఫ్ట్ SQL సర్వర్ మొత్తం నాలుగు ప్రామాణిక లావాదేవీల ఐసోలేషన్ స్థాయిలకు మద్దతు ఇస్తుంది మరియు అదనంగా, SNAPSHOT స్థాయి, లావాదేవీ ప్రారంభించబడటానికి ముందు కట్టుబడి ఉన్న డేటా స్థితిని అలాగే స్వయంగా చేసిన మార్పులను చూస్తుంది, అంటే ఇది ఇలా ప్రవర్తిస్తుంది ఇది స్టార్టప్‌లో స్వీకరించబడితే, DB డేటా యొక్క స్నాప్‌షాట్ మరియు దానితో పని చేస్తుంది. సీరియలైజ్డ్ నుండి తేడా ఏమిటంటే తాళాలు ఏవీ ఉపయోగించబడవు, కానీ ఫలితంగా, ఏకకాలిక లావాదేవీ ఇంతకు ముందు అదే డేటాను మార్చినట్లయితే మార్పులు చేయడం సాధ్యం కాదు; ఈ సందర్భంలో, రెండవ లావాదేవీ, అమలు చేయడానికి ప్రయత్నిస్తున్నప్పుడు, COMMITఒక దోష సందేశాన్ని లేవనెత్తుతుంది మరియు రద్దు చేయబడుతుంది.