1.1 அறிமுகம்
இப்போது வேடிக்கை தொடங்குகிறது - பரிவர்த்தனைகள் எவ்வாறு செயல்படுகின்றன என்பதற்கான கோட்பாடு. ஒரே டேட்டாவை வெவ்வேறு த்ரெட்களில் மாற்றும்போது சிஸ்டத்தை எப்படிச் செயல்பட வைப்பது? அல்லது ஒரு பரிவர்த்தனையை மற்றொன்றில் செய்ய விரும்புகிறீர்களா? பரிவர்த்தனைகளின் தனிமைப்படுத்தலைப் படிப்பதன் மூலம் இந்த கேள்விகளுக்கான பதில்களைத் தேடத் தொடங்குவோம் ...
பரிவர்த்தனை தனிமைப்படுத்தல் நிலை என்பது ஒரு நிபந்தனை மதிப்பாகும், இது DBMS இல் தர்க்கரீதியாக இணையான பரிவர்த்தனைகளின் செயல்பாட்டின் விளைவாக, சீரற்ற தரவு அனுமதிக்கப்படும் அளவை தீர்மானிக்கிறது. பரிவர்த்தனை தனிமைப்படுத்தல் நிலைகளின் அளவு, குறைந்த அளவிலிருந்து உயர்ந்தது வரை தரவரிசைப்படுத்தப்பட்ட பல மதிப்புகளைக் கொண்டுள்ளது; அதிக தனிமைப்படுத்தல் நிலை சிறந்த தரவு நிலைத்தன்மையுடன் ஒத்துள்ளது, ஆனால் அதன் பயன்பாடு உடல் ரீதியாக இணையான பரிவர்த்தனைகளின் எண்ணிக்கையைக் குறைக்கலாம்.
மாறாக, குறைந்த தனிமைப்படுத்தல் நிலை அதிக இணையான பரிவர்த்தனைகளை அனுமதிக்கிறது, ஆனால் தரவு துல்லியத்தை குறைக்கிறது. இவ்வாறு, பயன்படுத்தப்படும் பரிவர்த்தனை தனிமைப்படுத்தலின் அளவைத் தேர்ந்தெடுப்பது, தகவல் அமைப்பின் டெவலப்பர், ஒரு குறிப்பிட்ட அளவிற்கு, வேலையின் வேகத்திற்கும் கணினியிலிருந்து பெறப்பட்ட தரவின் உத்தரவாதமான நிலைத்தன்மையை உறுதி செய்வதற்கும் இடையே ஒரு தேர்வை வழங்குகிறது.
பரிவர்த்தனைகளைப் பயன்படுத்தி ஒரே நேரத்தில் அணுகுவதில் சிக்கல்கள்
பரிவர்த்தனைகள் இணையாக செயல்படுத்தப்படும் போது, பின்வரும் சிக்கல்கள் சாத்தியமாகும்:
- இழந்த புதுப்பிப்பு - வெவ்வேறு பரிவர்த்தனைகளால் ஒரே நேரத்தில் ஒரு தரவுத் தொகுதி மாற்றப்பட்டால், கடைசி ஒன்றைத் தவிர அனைத்து மாற்றங்களும் இழக்கப்படும்;
- "அழுக்கு" வாசிப்பு (eng. டர்ட்டி ரீட்) - ஒரு பரிவர்த்தனையின் மூலம் சேர்க்கப்பட்ட அல்லது மாற்றப்பட்ட தரவுகளைப் படித்தல், அது பின்னர் உறுதிப்படுத்தப்படாது (பின்னர் உருட்டப்பட்டது);
- திரும்பத் திரும்பப் படிக்க முடியாத வாசிப்பு (இங்கி. மீண்டும் மீண்டும் படிக்க முடியாதது) - அதே பரிவர்த்தனைக்குள் மீண்டும் படிக்கும் போது, முன்பு படித்த தரவு மாற்றப்படும்;
- phantom reads - அதன் செயல்பாட்டின் போது ஒரு பரிவர்த்தனை பல முறை ஒரே அளவுகோலின் படி பல வரிசைகளைத் தேர்ந்தெடுக்கிறது. இந்தப் பெறுதல்களுக்கு இடையே உள்ள மற்றொரு பரிவர்த்தனையானது, முதல் பரிவர்த்தனையின் பெறுதல் அளவுகோலில் பயன்படுத்தப்பட்ட சில வரிசைகளின் வரிசைகளை அல்லது நெடுவரிசைகளை மாற்றியமைத்து வெற்றிகரமாக முடிவடைகிறது. இதன் விளைவாக, முதல் பரிவர்த்தனையின் அதே தேர்வுகள் வெவ்வேறு வரிசைகளை வழங்குகின்றன.
இந்த சிக்கல்கள் ஏற்படக்கூடிய சூழ்நிலைகளைக் கவனியுங்கள்.
1.2 புதுப்பிப்பை இழந்தது
வெவ்வேறு பரிவர்த்தனைகளால் ஒரே நேரத்தில் ஒரு தரவுத் தொகுதி மாற்றப்படும்போது, மாற்றங்களில் ஒன்று இழக்கப்படும் சூழ்நிலை.
ஒரே நேரத்தில் இரண்டு பரிவர்த்தனைகள் இயங்குகின்றன என்று வைத்துக்கொள்வோம்:
பரிவர்த்தனை 1 | பரிவர்த்தனை 2 |
---|---|
புதுப்பி tbl1 SET f2=f2+20 எங்கே f1=1; | புதுப்பி tbl1 SET f2=f2+25 எங்கே f1=1; |
இரண்டு பரிவர்த்தனைகளிலும், f2 புலத்தின் மதிப்பு மாறுகிறது; முடிந்ததும், புலத்தின் மதிப்பு 45 ஆல் அதிகரிக்கப்பட வேண்டும். உண்மையில், பின்வரும் செயல்களின் வரிசை ஏற்படலாம்:
- இரண்டு பரிவர்த்தனைகளும் ஒரே நேரத்தில் புலத்தின் தற்போதைய நிலையைப் படிக்கும். துல்லியமான இயற்பியல் ஒத்திசைவு இங்கே தேவையில்லை, மற்றொரு பரிவர்த்தனை அதன் முடிவை எழுதுவதற்கு முன் இரண்டாவது வாசிப்பு செயல்பாட்டை முடித்தாலே போதுமானது.
- இரண்டு பரிவர்த்தனைகளும் முன்பு படித்த மதிப்புடன் முறையே 20 மற்றும் 25ஐச் சேர்ப்பதன் மூலம் புதிய புல மதிப்பைக் கணக்கிடுகின்றன.
- பரிவர்த்தனைகள் கணக்கீட்டின் முடிவை புலம் f2 க்கு எழுத முயற்சிக்கின்றன. ஒரே நேரத்தில் இரண்டு எழுத்துக்களை நிகழ்த்துவது உடல் ரீதியாக சாத்தியமற்றது என்பதால், உண்மையில் எழுதும் செயல்பாடுகளில் ஒன்று முன்னதாகவும் மற்றொன்று பின்னர் செய்யப்படும். இரண்டாவது எழுதும் செயல்பாடு முதல் ஒன்றின் முடிவை மேலெழுதும்.
இதன் விளைவாக, இரண்டு பரிவர்த்தனைகளும் முடிந்ததும், f2 புலத்தின் மதிப்பு, 45 ஆக அதிகரிக்காமல், 20 அல்லது 25 ஆக அதிகரிக்கலாம், அதாவது தரவை மாற்றும் பரிவர்த்தனைகளில் ஒன்று "மறைந்துவிடும்".
1.3 "அழுக்கு" வாசிப்பு
ஒரு பரிவர்த்தனை மூலம் சேர்க்கப்பட்ட அல்லது மாற்றியமைக்கப்பட்ட தரவைப் படித்தல், அது பின்னர் செய்யத் தவறிவிடும் (ரோல்பேக்).
பின்வரும் SQL அறிக்கைகளை இயக்கும் வெவ்வேறு பயன்பாடுகளால் இரண்டு பரிவர்த்தனைகள் திறக்கப்பட்டுள்ளன என்று வைத்துக்கொள்வோம்:
பரிவர்த்தனை 1 | பரிவர்த்தனை 2 |
---|---|
tbl1 SET ஐப் புதுப்பிக்கவும் f2=f2+1 எங்கே f1=1; | |
tbl1 இலிருந்து f2 ஐத் தேர்ந்தெடு எங்கே f1=1; | |
பின்னடைவு வேலை; |
பரிவர்த்தனை 1 இல், புலம் f2 இன் மதிப்பு மாற்றப்பட்டது, பின்னர் பரிவர்த்தனை 2 இல், இந்த புலத்தின் மதிப்பு தேர்ந்தெடுக்கப்பட்டது. அதன் பிறகு, பரிவர்த்தனை 1 திரும்பப் பெறப்படுகிறது. இதன் விளைவாக, இரண்டாவது பரிவர்த்தனை மூலம் பெறப்பட்ட மதிப்பு தரவுத்தளத்தில் சேமிக்கப்பட்ட மதிப்பிலிருந்து வேறுபடும்.
1.4 திரும்பத் திரும்பச் சொல்ல முடியாத வாசிப்பு
அதே பரிவர்த்தனைக்குள் மீண்டும் படிக்கும் போது, முன்பு படித்த தரவு மாற்றப்படும் சூழ்நிலை.
பின்வரும் SQL அறிக்கைகளை இயக்கும் வெவ்வேறு பயன்பாடுகளால் இரண்டு பரிவர்த்தனைகள் திறக்கப்பட்டுள்ளன என்று வைத்துக்கொள்வோம்:
பரிவர்த்தனை 1 | பரிவர்த்தனை 2 |
---|---|
tbl1 இலிருந்து f2 ஐத் தேர்ந்தெடு எங்கே f1=1; | |
tbl1 SET ஐப் புதுப்பிக்கவும் f2=f2+3 எங்கே f1=1; | |
COMMIT; | |
tbl1 இலிருந்து f2 ஐத் தேர்ந்தெடு எங்கே f1=1; |
பரிவர்த்தனை 2 இல், புலம் f2 இன் மதிப்பு தேர்ந்தெடுக்கப்பட்டது, பின்னர் பரிவர்த்தனை 1 இல், புலம் f2 இன் மதிப்பு மாற்றப்பட்டது. பரிவர்த்தனை 2 இல் உள்ள f2 புலத்திலிருந்து மதிப்பைத் தேர்ந்தெடுக்க நீங்கள் மீண்டும் முயற்சித்தால், வேறு முடிவு கிடைக்கும். தரவை ஓரளவு மாற்றியமைத்து மீண்டும் தரவுத்தளத்தில் எழுதும் பொருட்டு இந்த சூழ்நிலை குறிப்பாக ஏற்றுக்கொள்ள முடியாதது.
1.5 "பாண்டம்ஸ்" படித்தல்
ஒரே பரிவர்த்தனைக்குள் மீண்டும் மீண்டும் படிக்கும் போது, ஒரே தேர்வு வெவ்வேறு வரிசைகளை வழங்கும் சூழ்நிலை.
பின்வரும் SQL அறிக்கைகளை இயக்கும் வெவ்வேறு பயன்பாடுகளால் இரண்டு பரிவர்த்தனைகள் திறக்கப்பட்டுள்ளன என்று வைத்துக்கொள்வோம்:
பரிவர்த்தனை 1 | பரிவர்த்தனை 2 |
---|---|
tbl1 இலிருந்து SUM(f2) ஐ தேர்ந்தெடு; | |
tbl1 (f1,f2) மதிப்புகளில் (15,20) செருகவும்; | |
COMMIT; | |
tbl1 இலிருந்து SUM(f2) ஐ தேர்ந்தெடு; |
பரிவர்த்தனை 2 ஆனது F2 புலத்தின் அனைத்து மதிப்புகளையும் பயன்படுத்தும் SQL அறிக்கையை செயல்படுத்துகிறது. பரிவர்த்தனை 1 இல் ஒரு புதிய வரிசை செருகப்பட்டு, பரிவர்த்தனை 2 இல் SQL அறிக்கையை மீண்டும் செயல்படுத்துவதன் மூலம் வேறுபட்ட முடிவை உருவாக்குகிறது. இந்த நிலை பாண்டம் ரீடிங் (பாண்டம் ரீடிங்) என்று அழைக்கப்படுகிறது. இது மீண்டும் மீண்டும் செய்ய முடியாத வாசிப்பில் இருந்து வேறுபடுகிறது, மீண்டும் மீண்டும் தரவு அணுகலின் விளைவாக மாறியது தரவுகளின் மாற்றம்/நீக்கத்தால் அல்ல, மாறாக புதிய (பாண்டம்) தரவின் தோற்றத்தின் காரணமாக.
GO TO FULL VERSION