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

PostgreSQL හි විශාල වගුවක දත්ත නිකුත් කිරීමේ වේගය වැඩි කරන රහස: අනුක්‍රමික කියවීම vs අහඹු කියවීම

PostgreSQL හි විශාල වගුවක දත්ත නිකුත් කිරීමේ වේගය වැඩි කරන රහස: අනුක්‍රමික කියවීම vs අහඹු කියවීම

ලොකු පරිමාණයේ වගුවක (සියයට අධික ගිගාබයිට්) සම්පූර්ණයෙන් නිකුත් කර, කණ්ඩායම්වලට බෙදාගත යුතු වූ විට, අපේ කණ්ඩායමට අධික වේගයක් ලැබීමට හැකි නොවුණා. ප්‍රශ්නය ගණනාවකට නොව, PostgreSQL එකෙන් දත්ත ලබාගැනීමේ ආකාරයට තිබුණා.

PostgreSQL දත්ත ගබඩාව කොහොමද සකස් කරන්නේ? ඩිස්ක් එකේ 8KB ප්‍රමාණයේ පේජ් කියන කොටස් වල සියල්ල අඩංගු. එක් පේජ් එකේ තබා ගත හැකි පේළි ගණන තොරතුරු ප්‍රමාණය අනුව 10-20 අතර වෙනස් වේ. පේළියක භෞතික ලිපිනය (page, slot) ලෙස හඳුන්වන ctid එකෙන් නියම වේ.

වගුවට id හෝ created_at වැනි අනුක්‍රමික තීරුවක් තිබුණත්, එය තැටිගත කිරීමේ ස්ථානයේ සම්බන්ධයක් නැත. දත්ත ඇතුළත් කිරීමේ කාලය අනුව පේළි heap එකේ අසමත්‍ර ලෙස පැතිරෙයි. ඒ නිසා id 1,2,3 වැනි අගයන් වෙන්වූ පේජ් වල තිබිය හැක.

එම id තීරුවේ B‑tree index එකක් නිර්මාණය කර ඇත්නම්, PostgreSQL එක WHERE id > X LIMIT 2000 වැනි විමසුමක් ක්‍රියාත්මක කරන විට, පළමුව index එක පරික්ෂා කර, පසුදා අහඹු පේජ් වලට පිවිස පේළි ලබා ගනී. 2000 පේළි සඳහා 2000 වාරයක් තරම් අහඹු පිවිසුමක් සිදු වන අතර, ගිගාබයිට් ගණනක වගුවක මෙය ධාවන වේගයට අතිශය බලපෑමක් කරයි.

ඉතා සරළ විසඳුමක් ලෙස cursor භාවිතා කර, heap එක අනුක්‍රමිකව පේජ් පේජ් කියවා ගත හැක. DECLARE rows_cursor CURSOR FOR SELECT * FROM events WHERE id > 0 ORDER BY id ලෙස ආරම්භ කර, එක් වරක් 2000 පේළි (ආසන්නව 130 පේජ්) ලබා ගත හැක. මෙයින් එක පේජ් එකක් කිසිදා දෙවරක් කියවන්නේ නැත, OS එකට පෙර-පෙර පේජ් ලබා ගැනීමට හැකි වේ.

එහෙත් cursor එක දිගු කාලයක් (පැය, දින) පවත්වා ගත යුතු නම්, vacuum ක්‍රියාකාරකම් අවහිර වේ, pg_wal ගොනු විශාල වෙයි, ලොක් ගැටළු උද්භව වේ. ප්‍රායෝගිකව, keyset pagination භාවිතා කර, අවසන් දර්ශන id එක සටහන් කර, නව සෙෂන් එකක් ආරම්භ කිරීමෙන් මෙම ගැටලුව තොලගා හැක.

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

  • දත්ත විශ්ලේෂණය, AI පුහුණුව, ව්‍යාපාරික රිප්‍රෝඩක්ශන් වැනි වැඩකටයුතු වලදී, විශාල PostgreSQL වගුවක් වේගයෙන් නිකුත් කළ හැකිවීමේ හැකියාව.
  • ශ්‍රී ලංකාවේ තාක්ෂණික ආරම්භකයන්ට, අහඹු කියවීමේ bottleneck එක තේරුම් ගෙන, කාර්යක්ෂම කේත රචනයේ පදනමක් ලැබේ.
  • ඉදිරි පරීක්ෂණ, ලොකු දත්ත මට්ටමේ SaaS සේවා සැපයුම්කරුවන්ට, පිරිවැය අඩු කර, සත්‍ය‑කාලීන සේවා ගුණාත්මකභාවය වැඩි කරයි.

සාරාංශයෙන්, PostgreSQL හි අනුක්‍රමික කියවීම (cursor) භාවිතා කිරීම, විශාල වගුවක නිකුත් කිරීමේ වේගය ගුණාත්මකව ඉහළ ගනී. එය ඉතා පහසු, කේත මට්ටමේ වෙනසක් පමණක්; නමුත් දීර්ඝකාලීන සෙෂන් කළමනාකරණය සඳහා සැලකිලිමත් විය යුතුය.

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