2.1 உறுதியற்ற வாசிப்பு

"பரிவர்த்தனை தனிமை நிலை" என்பது பரிவர்த்தனைகளின் இணையான செயல்பாட்டின் போது ஏற்படும் மேலே உள்ள அனைத்து அல்லது சில வகையான தரவு முரண்பாடுகளிலிருந்தும் (அதாவது சிறப்பு நிரலாக்கம் தேவையில்லை) DBMS இன் உள் வழிமுறைகளால் வழங்கப்படும் பாதுகாப்பின் அளவைக் குறிக்கிறது. SQL-92 தரநிலை நான்கு தனிமை நிலைகளின் அளவை வரையறுக்கிறது:

  • உறுதியில்லாமல் படியுங்கள்
  • உறுதியுடன் படிக்கவும்
  • திரும்ப திரும்ப படிக்கலாம்
  • வரிசைப்படுத்தக்கூடியது

அவற்றில் முதலாவது பலவீனமானது, கடைசியானது வலிமையானது, ஒவ்வொன்றும் முந்தையவை அனைத்தையும் உள்ளடக்கியது.

குறைந்த (முதல்) தனிமை நிலை. பல இணையான பரிவர்த்தனைகள் ஒரே அட்டவணை வரிசையை மாற்ற முயற்சித்தால், இறுதி வரிசை வெற்றிகரமாக முடிக்கப்பட்ட பரிவர்த்தனைகளின் முழுத் தொகுப்பால் தீர்மானிக்கப்படும் மதிப்பைக் கொண்டிருக்கும். இந்த வழக்கில், தர்க்கரீதியாக முரண்பாடான தரவை மட்டுமல்லாமல், மாற்றங்கள் இன்னும் பதிவு செய்யப்படாத தரவையும் படிக்க முடியும்.

இந்த தனிமைப்படுத்தல் நிலையை செயல்படுத்துவதற்கான ஒரு பொதுவான வழி, புதுப்பிப்பு கட்டளையின் காலத்திற்கு தரவைப் பூட்டுவதாகும், இது இணையாக இயங்கும் அதே வரிசைகளில் மாற்றியமைக்கும் கட்டளைகள் உண்மையில் தொடர்ச்சியாக செயல்படுத்தப்படுவதை உறுதிசெய்கிறது மற்றும் மாற்றங்கள் எதுவும் இழக்கப்படாது. படிக்க மட்டுமேயான பரிவர்த்தனைகள் இந்த தனிமைப்படுத்தப்பட்ட நிலையில் ஒருபோதும் தடுக்கப்படாது.

2.2 படிக்க உறுதி

பெரும்பாலான தொழில்துறை DBMS, குறிப்பாக Microsoft SQL Server, PostgreSQL மற்றும் Oracle, இயல்புநிலையாக இந்த அளவைப் பயன்படுத்துகின்றன. இந்த மட்டத்தில், வரைவு, "அழுக்கு" வாசிப்புக்கு எதிரான பாதுகாப்பு வழங்கப்படுகிறது, இருப்பினும், ஒரு பரிவர்த்தனையின் செயல்பாட்டின் போது, ​​மற்றொரு பரிவர்த்தனையை வெற்றிகரமாக முடிக்க முடியும் மற்றும் அதில் செய்யப்பட்ட மாற்றங்கள் சரி செய்யப்படுகின்றன. இதன் விளைவாக, முதல் பரிவர்த்தனை வேறு தரவுத் தொகுப்பில் வேலை செய்யும்.

முழுமையான வாசிப்பை செயல்படுத்துவது இரண்டு அணுகுமுறைகளில் ஒன்றை அடிப்படையாகக் கொண்டது: தடுப்பது அல்லது பதிப்பித்தல்.

படிக்கக்கூடிய மற்றும் மாற்றக்கூடிய தரவைத் தடுக்கிறது.

எழுத்துப் பரிவர்த்தனையானது படிக்கும் அளவிலோ அல்லது அதற்கும் அதிகமான அளவிலோ செயல்படும் பரிமாற்றங்களைப் படிக்கும் மாற்றத்தக்கத் தரவைத் தடுக்கிறது, இதனால் "அழுக்கு" வாசிப்பைத் தடுக்கிறது, மேலும் வாசிப்புப் பரிவர்த்தனையால் பூட்டப்பட்ட தரவு செயல்பாடு முடிந்தவுடன் உடனடியாக வெளியிடப்படும். SELECT(இதனால், கொடுக்கப்பட்ட தனிமைப்படுத்தப்பட்ட நிலையில் "மீண்டும் படிக்க முடியாத" சூழ்நிலை ஏற்படலாம்).

இணையாக மாறும் வரிசைகளின் பல பதிப்புகளைச் சேமிக்கிறது.

ஒவ்வொரு முறையும் ஒரு வரிசையை மாற்றும்போது, ​​DBMS ஆனது இந்த வரிசையின் புதிய பதிப்பை உருவாக்குகிறது, இதன் மூலம் தரவை மாற்றிய பரிவர்த்தனை தொடர்ந்து செயல்படும், அதே சமயம் வேறு எந்த “வாசிப்பு” பரிவர்த்தனையும் கடைசியாக உறுதிசெய்யப்பட்ட பதிப்பை வழங்கும். இந்த அணுகுமுறையின் நன்மை என்னவென்றால், இது தடுப்பதைத் தடுக்கிறது, ஏனெனில் இது வேகமானது. இருப்பினும், இது முதல் ஒன்றோடு ஒப்பிடுகையில், ரேமின் குறிப்பிடத்தக்க அதிக நுகர்வு தேவைப்படுகிறது, இது வரிசை பதிப்புகளை சேமிப்பதில் செலவிடப்படுகிறது.

கூடுதலாக, பல பரிவர்த்தனைகள் தரவை இணையாக மாற்றும் போது, ​​ஒரே தரவுகளில் ஒரே நேரத்தில் பல பரிவர்த்தனைகள் சீரற்ற மாற்றங்களைச் செய்யும் சூழ்நிலையை உருவாக்கலாம் (பூட்டுகள் இல்லாததால், இது நடப்பதை எதுவும் தடுக்காது). முதலில் செய்யும் பரிவர்த்தனை அதன் மாற்றங்களை பிரதான தரவுத்தளத்தில் சேமிக்கும், மேலும் மீதமுள்ள இணையான பரிவர்த்தனைகள் செய்ய இயலாது (இது முதல் பரிவர்த்தனையின் புதுப்பிப்பு இழப்புக்கு வழிவகுக்கும்). அத்தகைய சூழ்நிலையில் DBMS செய்யக்கூடிய ஒரே விஷயம், மீதமுள்ள பரிவர்த்தனைகளை திரும்பப் பெறுவது மற்றும் "பதிவு ஏற்கனவே மாற்றப்பட்டுள்ளது" என்ற பிழை செய்தியை வெளியிடுவதுதான்.

ஒரு குறிப்பிட்ட செயலாக்க முறை DBMS டெவலப்பர்களால் தேர்ந்தெடுக்கப்படுகிறது, மேலும் சில சந்தர்ப்பங்களில் இது தனிப்பயனாக்கப்படலாம். எனவே, முன்னிருப்பாக, MS SQL பூட்டுகளைப் பயன்படுத்துகிறது, ஆனால் (பதிப்பு 2005 மற்றும் அதற்கு மேல்) READ_COMMITTED_SNAPSHOTதரவுத்தள அளவுருவை அமைக்கும் போது, ​​அது பதிப்பு மூலோபாயத்திற்கு மாறுகிறது, ஆரக்கிள் ஆரம்பத்தில் பதிப்புத் திட்டத்தின் படி மட்டுமே செயல்படுகிறது. Informix இல், படிக்கும் மற்றும் எழுதும் பரிவர்த்தனைகளுக்கு இடையே ஏற்படும் முரண்பாடுகளைத் தடுக்க, உள்ளமைவு விருப்பத்தை USELASTCOMMITTED(பதிப்பு 11.1 இன் படி) அமைப்பதன் மூலம், படிக்கும் பரிவர்த்தனை சமீபத்திய உறுதியளிக்கப்பட்ட தரவைப் பெறுகிறது.

2.3 மீண்டும் மீண்டும் படிக்கலாம்

வாசிப்பு பரிவர்த்தனை "பார்க்காத" நிலை, அது முன்பு படித்த தரவுக்கு மாறுகிறது. அதே நேரத்தில், தற்போதைய பரிவர்த்தனையின் மூலம் படிக்கப்பட்ட தரவை அது முடியும் வரை வேறு எந்த பரிவர்த்தனையும் மாற்ற முடியாது.

பகிர்ந்த பயன்முறையில் உள்ள பூட்டுகள், பரிவர்த்தனையின் எந்த அறிவுறுத்தலின் மூலம் படிக்கப்பட்ட எல்லா தரவிற்கும் பயன்படுத்தப்படும் மற்றும் பரிவர்த்தனை முடியும் வரை வைத்திருக்கும். இது நிலுவையில் உள்ள பரிவர்த்தனையின் மூலம் படிக்கப்பட்ட வரிசைகளை மாற்றுவதைத் தடுக்கிறது. இருப்பினும், பிற பரிவர்த்தனைகள் தற்போதைய பரிவர்த்தனையில் உள்ள வழிமுறைகளுக்கான தேடல் நிபந்தனைகளுடன் பொருந்தக்கூடிய புதிய வரிகளைச் செருகலாம். தற்போதைய பரிவர்த்தனையின் மூலம் அறிக்கையை மறுதொடக்கம் செய்யும் போது, ​​புதிய வரிசைகள் பெறப்படும், இதன் விளைவாக பாண்டம் ரீட் கிடைக்கும்.

பகிரப்பட்ட பூட்டுகள் ஒவ்வொரு அறிக்கையின் முடிவிலும் வெளியிடப்படுவதற்குப் பதிலாக, பரிவர்த்தனையின் இறுதி வரை வைத்திருக்கப்படுவதால், ஒத்திசைவின் அளவு தனிமைப்படுத்தப்பட்ட அளவை விட குறைவாக உள்ளது READ COMMITTED. எனவே, பொதுவாக இதையும் அதிக பரிவர்த்தனை நிலைகளையும் தேவையில்லாமல் பயன்படுத்த பரிந்துரைக்கப்படுவதில்லை.

2.4 வரிசைப்படுத்தக்கூடியது

தனிமைப்படுத்தலின் மிக உயர்ந்த நிலை; பரிவர்த்தனைகள் ஒருவருக்கொருவர் முற்றிலும் தனிமைப்படுத்தப்படுகின்றன, ஒவ்வொன்றும் இணையான பரிவர்த்தனைகள் இல்லாதது போல் செயல்படுத்தப்படுகின்றன. இந்த நிலையில்தான் ஒரே நேரத்தில் நடக்கும் பரிவர்த்தனைகள் "பாண்டம் ரீட்" விளைவுக்கு உட்பட்டது அல்ல.

2.5 உண்மையான DBMS இல் பரிவர்த்தனை தனிமைப்படுத்தலுக்கான ஆதரவு

பரிவர்த்தனை DBMS எப்போதும் நான்கு நிலைகளையும் ஆதரிக்காது, மேலும் கூடுதல் ஒன்றையும் அறிமுகப்படுத்தலாம். காப்பு வழங்குவதில் பல்வேறு நுணுக்கங்களும் உள்ளன.

எனவே, கொள்கையளவில், ஆரக்கிள் பூஜ்ஜிய அளவை ஆதரிக்காது, ஏனெனில் பரிவர்த்தனைகளை செயல்படுத்துவது "அழுக்கு வாசிப்புகளை" விலக்குகிறது, மேலும் மீண்டும் மீண்டும் படிக்கக்கூடிய அளவை அமைப்பதை முறையாக அனுமதிக்காது, அதாவது, இது (இயல்புநிலையாக) Read committedமற்றும் Serializable. அதே நேரத்தில், தனிப்பட்ட கட்டளைகளின் மட்டத்தில், இது உண்மையில் மீண்டும் மீண்டும் படிக்கும் தன்மைக்கு உத்தரவாதம் அளிக்கிறது ( SELECTமுதல் பரிவர்த்தனையில் ஒரு கட்டளை தரவுத்தளத்திலிருந்து வரிசைகளின் தொகுப்பைத் தேர்ந்தெடுத்தால், இந்த நேரத்தில் இணையான இரண்டாவது பரிவர்த்தனை இந்த வரிசைகளில் சிலவற்றை மாற்றினால், பின்னர் முதல் பரிவர்த்தனை மூலம் பெறப்பட்ட முடிவுகளில், இரண்டாவது பரிவர்த்தனை இல்லாதது போல், மாறாத வரிசைகள் இருக்கும்). ஆரக்கிள் பரிவர்த்தனைகள் என்று அழைக்கப்படுவதை ஆதரிக்கிறது READ-ONLY, இது க்கு ஒத்திருக்கிறது Serializable, ஆனால் தரவை தாங்களாகவே மாற்ற முடியாது.

மைக்ரோசாப்ட் SQL சர்வர் நான்கு நிலையான பரிவர்த்தனை தனிமை நிலைகளையும் ஆதரிக்கிறது, மேலும், SNAPSHOT நிலை, பரிவர்த்தனை தொடங்கப்படுவதற்கு முன்பு செய்யப்பட்ட தரவு நிலையைப் பார்க்கிறது, அதே போல் தானாகச் செய்யப்பட்ட மாற்றங்களையும், அதாவது, அது செயல்படுகிறது தொடக்கத்தில் அது பெறப்பட்டால், DB தரவின் ஸ்னாப்ஷாட் மற்றும் அதனுடன் வேலை செய்கிறது. Serialized இலிருந்து வேறுபாடு என்னவென்றால், பூட்டுகள் எதுவும் பயன்படுத்தப்படவில்லை, ஆனால் இதன் விளைவாக, ஒரே நேரத்தில் ஒரே தரவை மாற்றியிருந்தால், மாற்றங்களைச் செய்வது சாத்தியமில்லை. இந்த வழக்கில், இரண்டாவது பரிவர்த்தனை, செயல்படுத்த முயற்சிக்கும் போது, COMMIT​​ஒரு பிழை செய்தியை எழுப்பி, ரத்து செய்யப்படும்.