முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 11 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 44/57~12 min
தொகுதி பாடங்கள் (4/4)

தனிமை நிலைகள்

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

  • READ UNCOMMITTED: அராஜகப் பைத்தியக்காரத்தனம், உங்கள் பரிவர்த்தனையானது, மற்றவர்களின் தற்காலிகத் தரவு உட்பட, அவர்களின் சொந்த ஸ்கிரிப்ட்களின் பாதியிலேயே பிறர் செய்யும் ஒவ்வொரு மாற்றத்தையும் பார்க்கும். நிலையான டர்ட்டி ரீட் பிழைகள் காரணமாக யாரும் பெரிய DB களில் இதைப் பயன்படுத்துவதில்லை.
  • READ COMMITTED: (Postgres க்கான இயல்புநிலை). மூன்றாம் தரப்பினர் COMMITஐ வழங்கியவுடன் புதிய தரவை நீங்கள் உடனடியாகப் பார்ப்பீர்கள், ஆனால் நீங்கள் பாண்டம் ரீட்களுக்கு (உங்கள் நீண்ட பணிப்பாய்வுகளின் நடுவில் புதிய பதிவுகளைப் பார்ப்பது) அல்லது நேரியல் அல்லாத நிலையான பார்வைக்கு நீங்கள் பலியாகலாம்.
  • REPEATABLE READ: கனமானது. உங்கள் பெரிய நேர-சாளர அமர்வின் காலத்திற்கு, எனது வினவல் தொடங்கிய தருணத்தில் தரவுத்தளத்தை நான் "பார்க்கிறேன்", மற்ற நபர்களால் முடிக்கப்பட்ட அதிகாரப்பூர்வ கடமைகளை கூட முற்றிலும் புறக்கணித்து, புறக்கணிக்கிறேன்! இது மாயமாக தோன்றும் பதிவுகளிலிருந்து பாதுகாக்கிறது, நிலைத்தன்மைக்கு உத்தரவாதம் அளிக்கிறது.
  • SERIALIZABLE: கடவுள் அடுக்கு (சூப்பர் ஸ்லோ). ஒன்றுடன் ஒன்று செல்லும் ஒவ்வொரு பரிவர்த்தனையையும் தடுப்பதன் மூலமும், அவற்றை ஒரே பாதையில் தொடர்ச்சியாகச் செயல்படுத்துவதன் மூலமும், மோதுவதை இரக்கமின்றி நிறுத்துவதன் மூலமும், சிறிதளவு மோதலின் விஞ்ஞான சாத்தியக்கூறுகளைக் கூட வேரிலேயே நீக்கி, திடமான 90% உயர் செயல்திறன் தியாகம் செய்வதன் மூலம் நடத்துகிறது.

அதை எப்படி அமைக்கிறீர்கள்?

வழக்கமான BEGIN;க்கு பதிலாக நீங்கள் தட்டச்சு செய்க:

SQL
BEGIN ISOLATION LEVEL SERIALIZABLE;

-- and you proceed normally with your hermetically sealed isolation
UPDATE products SET stock = 10;
COMMIT;

அல்லது சில மாறுபாடுகள் மற்றும் பழைய இன்ஜின்களில் நீங்கள் தொடங்கிய பின் அதை ஒதுக்கலாம்:

SQL
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#sql.m11.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

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

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

BEGIN தனிமைப்படுத்தல் நிலை மீண்டும் மீண்டும் படிக்கலாம்; மற்றும் COMMIT உடன் மூடவும்;

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#sql.m11.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

கிரேஸி வரிசைப்படுத்தக்கூடிய நிலையை முயற்சிப்போம் மற்றும் சில கற்பனையான தரவைச் செருகுவோம்.\n'சீரியலிசபிள்' பிளாக்கைத் திறக்கவும்.\nவகை Id=2 இன் பெயரை 'Nuovo Nome Segreto' ஆகப் புதுப்பிக்கவும்.\nஇறுதி அணுவை இயக்கவும், உறுதிமொழியைத் தீர்க்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

ஐசோலேஷன் லெவல் வரிசையைத் தொடங்கு;\nவகைகளைப் புதுப்பி

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்