ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-23, Thursday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

PostgreSQL මයිග්‍රේෂන් වල ලොක් වීම වැලැක්වීමේ 6 ක්‍රම – 3am දී සේවා බිඳවැටීම නැවතී!

PostgreSQL මයිග්‍රේෂන් වල ලොක් වීම වැලැක්වීමේ 6 ක්‍රම – 3am දී සේවා බිඳවැටීම නැවතී!

PostgreSQL දත්ත ගබඩා භාවිතා කරන බොහෝ සංවර්ධකයින්ට මයිග්‍රේෂන් එකක් “සහජ” ලෙස පෙනේ. නමුත් කාලය 3am වගේ අඩු පාවිච්චියක් ඇති වෙලාවේ, අනිසි ACCESS EXCLUSIVE ලොක් එකක් තබා ගැනීම නිසා අඩුම පරිමාණයේම සේවා බිඳවැටීමක් සිදු විය හැක.

උදාහරණයක් ලෙස ALTER TABLE users ALTER COLUMN email SET NOT NULL කියන SQL එක, සම්පූර්ණ වගුව පිරික්සීමට ලොක් එක තබා ගනී. විශාල වගුවක් නම්, මේ ලොක් එක මිනිත්තු කිහිපයක් පුරා කියවීම්‑ලියීම් සියල්ල අත්හිටුවයි. එමගින් “outage” එකක් ඇති වේ.

ඒත් මේ ගැටළුවට සරළ විසඳුම් තිබේ. එකක් CREATE INDEX CONCURRENTLY භාවිත කිරීම. මෙය ලොක් එක තබා නොගෙන ඉන්ඩෙක්ස් එක තනයි, නමුත් Flyway, Liquibase වැනි මෙවලම් මයිග්‍රේෂන් එක transaction තුළ ගොඩනැගීම නිසා අසාර්ථක වේ. ඒ සඳහා ඒ මයිග්‍රේෂන් එකේ transaction wrapping අක්‍රීය කළ යුතුය.

දෙවන ප්‍රධාන ගැටළුව SET NOT NULL ක්‍රියාවලියයි. මෙය සම්පූර්ණ වගුව පිරික්සීමෙන් පසු ලොක් එක තබයි. PostgreSQL 12+ අනුව, පළමුව ADD CONSTRAINT ... CHECK (email IS NOT NULL) NOT VALID එකක් එක්කර, පසුව VALIDATE CONSTRAINT සහ ALTER COLUMN ... SET NOT NULL ක්‍රමය භාවිත කළහොත් ලොක් එක SHARE UPDATE EXCLUSIVE ලෙස පමණක් පවතී, ලියීම් තවත් අඩංගු වේ.

ඉතින්, පහත සඳහන් හය (6) ක්‍රමයන් අනුගමනය කිරීමෙන් ඔබේ මයිග්‍රේෂන් ගැටළු නිරෝගී කරගත හැක:

  • CREATE INDEX CONCURRENTLY – transaction එකෙන් පිටත කරගන්න.
  • ADD CONSTRAINT … NOT VALID පසු VALIDATE CONSTRAINT – ලොක් එක අඩු කරයි.
  • ADD FOREIGN KEY NOT VALID පසු validate – ලොක් එක බර නොවේ.
  • වෙනස් DEFAULT (volatile) නොදෙන්න; constant default එකක් පමණක් භාවිත කරන්න.
  • වගුවට නව column එකක් එකතු කරන විට, පළමුව nullable කර, පසුව batch backfill කර, අවසානදී default එක සකස් කරන්න.
  • Column type වෙනස් කිරීමේදී, binary‑coercible වර්ගයන්ට පමණක් සීමා කර, අනෙක් විට ALTER TABLE … TYPE යොදා ගැනීමේදී පූර්ණ rewrite සිදු වීමේ අවදානම පරීක්ෂා කරන්න.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

ශ්‍රී ලංකාවේ තාක්ෂණ සමාගම්, startup කණ්ඩායම් සහ විශ්වවිද්‍යාල සිසුන් බොහොමයක් PostgreSQL භාවිතා කරයි. මේ ලොක් ගැටළු හඳුනා ගැනීමෙන්, රාත්‍රී 3am වැනි අඩු පාවිච්චි වේලාවල සේවා බිඳවැටීමක් නොසිදු වේ. එමඟින් පාරිභෝගික විශ්වාසය තවත් ඉහළ යයි, ඩේටා විශ්ලේෂණ ව්‍යාපෘති වල continuity රැකගත හැක. තවත්, DevOps pipelines වලට මේ ආරක්ෂිත ක්‍රම එකතු කිරීමෙන් CI/CD පරිසරයේ අස්ථිච්ඡේදනයක් නොවේ.

ඉන්පසු, නවක සංවර්ධකයින්ට මෙම ප්‍රායෝගික උපදෙස් මඟින් දත්ත ගබඩාවල safe migration ක්‍රම අධ්‍යයනයේ අත්දැකීම් ලැබේ. එමෙන්ම, ශ්‍රී ලංකාවේ තාක්ෂණික සමාජයට දත්ත ආරක්ෂාව, ක්‍රියාකාරිත්වය පිළිබඳ වඩාත් ගැඹුරු අවබෝධයක් ලබාදෙයි.

අද සිට, ඔබේ PostgreSQL මයිග්‍රේෂන් වල ලොක් ගැටළු අවසන් කර, 24/7 සේවාවන් පවත්වාගෙන යාමට සූදානම් වන්න.

💡 ඔබේ PostgreSQL මයිග්‍රේෂන් දැන් ආරක්ෂිත කරමු!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#PostgreSQL #Migration #Database #Performance #SriLanka