MySQL හි තීරුවක දත්ත වර්ගය ආරක්ෂිතව වෙනස් කිරීම (ALTER TABLE MODIFY vs CHANGE)

目次

1. හැඳින්වීම

ඔබ කවදාවත් MySQL වගුවේ සැලසුම් කිරීම සහ මෙහෙයුම් කිරීමේදී “මට මේ තීරුවේ දත්ත වර්ගය වෙනස් කරන්න ඕන” කියලා සිතලා තිබේද? උදාහරණයක් ලෙස, මුලින් VARCHAR(50) ලෙස හොඳයි කියලා සිතූ තීරුවක්, සැබෑ දත්ත වැඩි වීමත් සමඟ විශාල වර්ගයක් අවශ්‍ය විය හැක. හෝ සංඛ්‍යාත්මක අගයන් අපේක්ෂිතයට වඩා වැඩි අංක ගණනක් ඇති බව ඔබට පෙනී, INT සිට BIGINT වෙත වෙනස් කිරීමට අවශ්‍ය විය හැක. මේ වගේ තත්ත්වයන් අසාමාන්‍ය නොවේ.

තීරුවේ වර්ගය වෙනස් කිරීම MySQL වැඩිදුර භාවිතා කරන තරමට ඔබට වැළැක්විය නොහැකි කාර්යයකි. නමුත්, එය වැරදි ආකාරයෙන් කළහොත් දත්ත අහිමි වීම හෝ සේවා අඩු වීම වැනි අනපේක්ෂිත ගැටළු ඇති විය හැක. විශේෂයෙන්ම නිෂ්පාදන දත්ත ගබඩා වල, තීරුවේ වර්ග වෙනස් කිරීම සම්පූර්ණ පද්ධතියට වැදගත් බලපෑමක් ඇති කරයි, එබැවින් අවධානයෙන් කළ යුතුය.

මෙම ලිපියේ, MySQL හි “තීරුවේ වර්ගය ආරක්ෂිතව සහ කාර්යක්ෂමව වෙනස් කිරීම” පිළිබඳව සවිස්තරාත්මකව පැහැදිලි කරමු—ප්‍රායෝගික ALTER TABLE උදාහරණ මත අවධානය යොමු කරමින්, ඒවා වාස්තුක පරිසරයන්හි සාමාන්‍යයෙන් භාවිතා වන අතර, පොදු අසාර්ථක රටා, මූලික අවධානම්, සහ ගැටළු විසඳුම් සමඟ. මෙය කේත රීති පමණක් නොව, ක්ෂේත්‍රයේ ප්‍රයෝජනවත් ප්‍රායෝගික දැනුමත් ඇතුළත් කරයි.

ඔබ “මට MySQL තීරුවේ වර්ගය වෙනස් කරන්න ඕන, නමුත් මොන පියවර සහ අවධානම් ගත යුතුද?” කියලා සිතන්නේ නම්, හෝ දෛනික මෙහෙයුම් ආරක්ෂිතව සහ විශ්වාසදායකව සිදු කිරීමට අවශ්‍ය නම්, මෙම ලිපිය සන්දර්භයක් ලෙස භාවිතා කරන්න. අපි ඔබේ දත්ත ගබඩා මෙහෙයුම් වඩාත් සවිස්තරාත්මක සහ ආරක්ෂිත කර ගැනීමට අවශ්‍ය දැනුම ලබා දෙනු ඇත.

2. ALTER TABLE … MODIFY/CHANGE මූලික කරුණු

MySQL හි තීරුවේ දත්ත වර්ගය වෙනස් කිරීමට අවශ්‍ය වන විට, සාමාන්‍යයෙන් භාවිතා වන ප්‍රකාශනය ALTER TABLE වේ. මෙම විධානය වගුවේ ව්‍යුහයම වෙනස් කරයි සහ තීරුවක් එකතු කිරීම, ඉවත් කිරීම, සහ වර්ග වෙනස් කිරීම වැනි විවිධ මෙහෙයුම් සඳහා සහය දක්වයි.

තීරුවේ වර්ගය වෙනස් කිරීම සඳහා ප්‍රධාන වශයෙන් දෙකේ සින්ටැක්ස් ඇත: MODIFY සහ CHANGE. ඒවා අතර වෙනස්කම් සහ එක් එක් භාවිතා කරන ආකාරය තේරුම් ගතහොත්, ඔබේ තත්ත්වයට සුදුසුම ක්‍රමය තෝරා ගත හැක.

2.1 MODIFY සහ CHANGE අතර වෙනස්කම්

  • MODIFY MODIFY යනු තීරුවේ දත්ත වර්ගය හෝ ගුණාංග (උදා: NOT NULL, DEFAULT, ආදිය) වෙනස් කිරීමට අවශ්‍ය වන විට භාවිතා කරයි. තීරුවේ නාමය වෙනස් නොවේ.
  • CHANGE CHANGE යනු තීරුවේ නාමය වෙනස් කිරීමට භාවිතා කරයි. නමුත්, ඒ සමඟ වර්ගය සහ ගුණාංගද එකවර නියම කළ යුතුය.

2.2 මූලික සින්ටැක්ස් සහ උදාහරණ

ALTER TABLE table_name MODIFY column_name new_data_type [attributes];
ALTER TABLE table_name CHANGE old_column_name new_column_name new_data_type [attributes];

2.3 ප්‍රායෝගික උදාහරණ

උදාහරණයක් ලෙස, users වගුවේ name තීරුවේ වර්ගය VARCHAR(50) සිට TEXT වෙත වෙනස් කිරීමට අවශ්‍ය නම්, මෙසේ ලියන්න:

ALTER TABLE users MODIFY name TEXT;

age තීරුවේ නාමය user_age ලෙස වෙනස් කර, එහි වර්ගය INT සිට BIGINT වෙතද වෙනස් කිරීමට අවශ්‍ය නම්, මෙය භාවිතා කරන්න:

ALTER TABLE users CHANGE age user_age BIGINT;

2.4 සටහන්

CHANGE භාවිතා කරන විට, තීරුවේ නාමය වෙනස් කිරීමට අවශ්‍ය නොවූවත්, “නව තීරුවේ නාමය” සහ “දත්ත වර්ගය” දෙකම නියම කළ යුතුය. අනෙක් පැත්තේ, නාමය නොවෙනස් කර වර්ගය පමණක් වෙනස් කිරීමට අවශ්‍ය නම්, MODIFY සරල හා නිර්දේශිත වේ.

MODIFY සහ CHANGE සමාන ලෙස පෙනුනත්, ඒවා වෙනස් අරමුණු සඳහා සේවය කරයි. තත්ත්වය අනුව නිවැරදි එක තෝරා ගැනීම MySQL වගු සැලසුම් කිරීම සහ මෙහෙයුම් වල ඔබට කළ හැකි දේවල් විශාල ලෙස විස්තාර කරයි.

3. එකවර බහු තීරු වෙනස් කිරීම

MySQL හි, එකවර බහු තීරු වෙනස් කිරීම සඳහා ALTER TABLE ප්‍රකාශනය භාවිතා කළ හැක. එක් එක් තීරුව සඳහා ALTER TABLE නැවත නැවත ක්‍රියාත්මක කළහොත්, වගුව සෑම වරක්ම අගුළු වැටී, කාර්ය සාධනය අඩු විය හැක. ඒ නිසා, හැකි තරම් වෙනස්කම් එකම මෙහෙයුමක් තුළ එකතු කිරීම හොඳ පුරුද්දකි.

3.1 මූලික සින්ටැක්ස් සහ භාවිතය

එකවර බහු තීරු වෙනස් කිරීමට, ALTER TABLE ප්‍රකාශනය තුළ වෙනස්කම් කොමා (,) මගින් වෙන් කර ලැයිස්තුගත කරන්න.
උදාහරණයක් ලෙස, email සහ score තීරු දෙකේ වර්ගය හෝ ගුණාංග වෙනස් කිරීමට, ඔබ මෙසේ ලියන්න පුළුවන්:

ALTER TABLE users
  MODIFY email VARCHAR(255) NOT NULL,
  MODIFY score INT UNSIGNED DEFAULT 0;

By කොමා වලින් වෙන් කර ඇති MODIFY හෝ CHANGE වාක්‍ය බහුලව සම්බන්ධ කිරීම, ඔබට එක් ක්‍රියාත්මක කිරීමකදී බහු තීරුවල වෙනස්කම් අයදුම් කළ හැක.

3.2 CHANGE භාවිතයෙන් බහු වෙනස්කම් උදාහරණය

ඔබට තීරුවල නාමය වෙනස් කිරීම සහ ඒවායේ වර්ගය වෙනස් කිරීම එකම ප්‍රකාශනයකින් කළ හැක:

ALTER TABLE users
  CHANGE nickname user_nickname VARCHAR(100),
  CHANGE points user_points BIGINT;

3.3 බහු තීරුවල බැච්-වෙනස්කම් කිරීමේ ප්‍රතිලාභ

  • දක්ෂතා වැඩිදියුණු කිරීම එක් ALTER TABLE ක්‍රියාත්මක කිරීමක් පමණක් අවශ්‍ය වන බැවින්, වගුව ලොක් කර ඇති කාලය අවම කළ හැක.
  • ඉහළ නඩත්තු කාර්යක්ෂමතාව ස්ක්‍රිප්ට් හෝ මයිග්‍රේෂන් මෙවලම් භාවිතයෙන් වෙනස්කම් කළමනාකරණය කරන විට, බහු වෙනස්කම් එකට විස්තර කළ හැකි බැවින් කළමනාකරණය පහසු වේ.
  • කාර්ය සාධන සමගිත්වය බහු වෙනස්කම් එකම ALTER TABLE ප්‍රකාශනයකට එකතු කිරීමෙන්, ඔබට සැකැස්ම වෙනස්කම් එකම ආකාරයෙන් අයදුම් කරන බව සහතික කරයි. මෙය කාර්ය සාධන සංකීර්ණතාවය අඩු කරයි සහ අර්ධ-අත්කාරක වෙනස්කම් හෝ අසමත් සැකැස්ම තත්ත්වයන්ගේ අවදානම අඩු කරයි.

3.4 සටහන් සහ උපදෙස්

  • ආකෘති දෝෂ වලට අවධානය කොමා වලට අදාළ වැරදි හෝ MODIFY සහ CHANGE අතර ගැලපීමේ දෝෂයන් දෝෂ ඇති කරයි. පළමුව SQL එක පරීක්ෂණ පරිසරයකින් සත්‍යාපනය කරන්න.
  • විශාල වගු වල බලපෑම තහවුරු කරන්න බැච් වෙනස්කම් පහසු වුවද, ඉතා විශාල වගු අපේක්ෂිත කාලයට වඩා වැඩි කාලයක් ගත විය හැක. පෙර පිටපත් (බැකප්) සකස් කිරීම වැනි ආරක්ෂක පියවර ගන්න.

බහු තීරුවල බැච්-වෙනස්කම් කිරීම කාර්යක්ෂම සහ ආරක්ෂිත වගු කළමනාකරණයට අත්‍යවශ්‍ය තාක්ෂණයකි. එය ඉගෙන ගැනීමට වග බලා ගන්න.

4. සීමා, පෙරනිමි, සහ NULL ගුණාංග කළමනාකරණය

තීරුවක වර්ගය වෙනස් කරන විට, සීමා (උදාහරණként NOT NULL සහ UNIQUE), පෙරනිමි අගයන්, සහ NULL ඉඩදීම යන කරුණු වලට අවධානය යොමු කළ යුතුය. මෙම ගුණාංග අනිසි ලෙස අහිමි විය හැකි අතර, වෙනස්කමෙන් පසු වෙනත් තත්ත්වයකට පත්විය හැක.

4.1 MODIFY/CHANGE සමඟ සාමාන්‍ය වැරදි

MODIFY හෝ CHANGE භාවිතයෙන් MySQL හි තීරුවක වර්ගය වෙනස් කරන විට, ඔබ පවතින සීමා සහ පෙරනිමි අගයන් පැහැදිලිව සඳහන් නොකළහොත්, ඒ තොරතුරු අහිමි විය හැක.
උදාහරණයක් ලෙස, ඔබට පහත තීරුවක් ඇති බව ගණනය කරමු:

CREATE TABLE members (
  id INT PRIMARY KEY,
  status VARCHAR(20) NOT NULL DEFAULT 'active'
);

status තීරුව VARCHAR(50) ලෙස වෙනස් කර, පහත පරිදි ලියන්න අවශ්‍ය නම්:

ALTER TABLE members MODIFY status VARCHAR(50);

එවිට මුල් NOT NULL සහ DEFAULT 'active' අහෝසි විය හැකි අතර, status තීරුව NULL ඉඩදීම සහ පෙරනිමි අගයක් නොමැතිව පවතී.

4.2 සීමා සහ පෙරනිමි අගයන් රැක ගැනීමේ ක්‍රමය

වර්ගය වෙනස් කරන අතරතුර සීමා සහ පෙරනිමි අගයන් රැක ගැනීමට, ඔබ සියලු පවතින ගුණාංග නැවත සඳහන් කළ යුතුය:

ALTER TABLE members MODIFY status VARCHAR(50) NOT NULL DEFAULT 'active';

මෙය වර්ගය වෙනස් කළ පසුද මුල් සීමා සහ පෙරනිමි අගය රැක ගනී.

4.3 NULL සීමා පිළිබඳ සටහන්

  • NOT NULL ඉවත් කරන විට තීරුවට NULL ඉඩදීමට NULL ලෙස පැහැදිලිව ලියන්න.
  • NOT NULL වෙත වෙනස් කරන විට පවතින දත්ත වල NULL අගයන් ඇත්නම්, වෙනස්කම අසාර්ථක වේ. සීමාව යෙදීමට පෙර (UPDATE භාවිතයෙන්) NULL අගයන් පුරවා ගත යුතුය.

4.4 අනෙකුත් සීමා සමඟ සම්බන්ධතාව

  • UNIQUE හෝ INDEX වර්ග වෙනස්කම් ඉන්ඩෙක්ස් වලට බලපායි, එබැවින් වෙනස්කමෙන් පසු වැදගත් ඉන්ඩෙක්ස් සහ ඒකකත්ව සීමා නැවත පරීක්ෂා කරන්න.
  • CHECK සීමා (MySQL 8.0+) සකසා ඇති නම්, වර්ගය වෙනස් කිරීමෙන් සීමා කොන්දේසි අසත්‍ය විය හැක—ඉතා සැලකිලිමත් වන්න.

4.5 සාරාංශය

තීරුවක වර්ගය වෙනස් කරන විට, සීමා, පෙරනිමි අගයන්, සහ NULL ගුණාංග සැමවිටම පැහැදිලිව ඇතුළත් කරන්න. ඔබ අහඹු ලෙස ඒවා අත්හැරුවහොත්, වගුවේ හැසිරීම වෙනස් විය හැකි අතර, අනපේක්ෂිත දෝෂ හෝ සේවා අස්ථාවරතා ඇති විය හැක. ALTER TABLE නියෝගය ලබා දීමට පෙර, වත්මන් තීරුවේ විස්තර තහවුරු කර, අවශ්‍ය ගුණාංග ගෙන යාමට සහතික වන්න.

5. කාර්ය සාධන සහ මෙහෙයුම් සලකා බැලීම්

Changing a column type may seem like just running an SQL statement, but in real operations you must be highly aware of performance and the overall system impact. Especially when executing ALTER TABLE on large production tables, careful planning is essential.

5.1 වගු අගුළු සහ අඩු කාලය

MySQL හි ALTER TABLE භාවිතයෙන් වර්ගයක් වෙනස් කරන විට, බොහෝ අවස්ථාවල පූර්ණ වගුව අගුළු ලැබේ. එම කාලය තුළ, අනෙකුත් විමසුම් වගුවට ප්‍රවේශ වීමට නොහැකි වන අතර, ඔබේ සේවාව අඩු කාලයක් අත්විඳිය හැක. විශාල වගු සඳහා, වර්ග වෙනස් කිරීම මිනිත්තු කිහිපයක්, හෝ සමහර අවස්ථාවල දශක ගණනක් මිනිත්තු ගත වීම අසාමාන්‍ය නොවේ.

5.2 වගු-පිටපත් vs ස්ථාන-අභ්‍යන්තර ඇල්ගොරිතම්

අභ්‍යන්තරව, MySQL ALTER TABLE සඳහා දෙකේ එකක් භාවිතා කරයි:

  • වගු-පිටපත් ඇල්ගොරිතම MySQL නව වගුවක් සාදයි, සියලු දත්ත පිටපත් කර, පසු ඒවා පරණ වගුව සමඟ හුවමාරු කරයි. විශාල දත්ත කට්ටල සඳහා, පිටපත් කිරීම bottleneck (අඩුපාඩුව) වේ.
  • ස්ථාන-අභ්‍යන්තර ඇල්ගොරිතම MySQL ඇති වගු ව්‍යුහය හැකි තරම් වෙනස් කරයි, එමඟින් අගුළු කාලය අඩු කරයි. එහෙත්, සියලු වර්ග වෙනස් කිරීම් ස්ථාන-අභ්‍යන්තරව සිදු කළ නොහැක.

කොහොමද මෙම ඇල්ගොරිතම භාවිතා කරන්නේ යැයි තීරණය වන්නේ වෙනස් කිරීම, ඔබේ MySQL අනුවාදය, සහ ගබඩා එන්ජින් (ප්‍රධාන වශයෙන් InnoDB) මත පදනම් වේ.

5.3 ALGORITHM විකල්පය භාවිත කිරීම

MySQL 5.6 සිට, ඔබට ALTER TABLE වෙත ALGORITHM විකල්පය එක් කර ප්‍රකාරය නියම කළ හැක:

ALTER TABLE users ALGORITHM=INPLACE, MODIFY name TEXT;

මෙය ස්ථාන-අභ්‍යන්තර සැකසීම බල කරයි සහ ස්ථාන-අභ්‍යන්තරය සහාය නොදක්වන විට ඔබට ඉක්මනින් අසාර්ථක වීමට උපකාරී වේ (දෝෂයක් උත්පාදනය වේ).

5.4 උපස්ථාපනය සහ පසු-පෙරළීමේ සූදානම

තීරුවක වර්ග වෙනස් කිරීම සම්පූර්ණ දත්ත ගබඩාවට බලපාන වැදගත් මෙහෙයුමක් වේ.

  • සම්පූර්ණ උපස්ථාපනය එකක් පෙර ගන්න
  • හැකි නම්, පූර්ව පරිසරයක පරීක්ෂා කරන්න
  • ආපසු ලබා ගැනීමේ ක්‍රියාවලීන් සූදානම් කරගන්න, එවිට කිසිවක් අසාර්ථක වූ විට ඉක්මනින් පසු-පෙරළිය හැක

මෙම පියවරයන් ආරක්ෂිත මෙහෙයුම් සඳහා අත්‍යවශ්‍ය වේ.

5.5 නිෂ්පාදනයේ හොඳම පුරුදු

  • උච්ච කාලයන් වලින් වැළකී සිටින්න හැකි තරම් පසු-උච්ච කාලයන් (රෑ පළාත, නිවාඩු) තුළ වෙනස්කම් ක්‍රියාත්මක කරන්න.
  • දත්ත සෑම විටම පෙර සහ පසු පරීක්ෂා කරන්න පේළි ගණන, දර්ශක, සහ සීමා පරීක්ෂා කර, සියල්ල නිවැරදිව රැකගෙන ඇති බව තහවුරු කරන්න.
  • වෙනස්කම් ඉතිහාසය ලියා තබන්න ඔබ වෙනස් කළ දේ සහ එය කෙසේ කළා (SQL ඇතුළත්) ලොග් කරන්න. මෙය ගැටළු ඇති වූ විට හේතුව හඳුනා ගැනීමට පහසු කරයි.

වර්ග වෙනස්කම් බලවත් වන නමුත් විශාල පද්ධති බලපෑමක් ඇති කරයි. සවිස්තරාත්මක සූදානම, කාලය, පරීක්ෂාව, සහ උපස්ථාපන යනු ගැටළු වලින් වැළැක්වීමට මූලික කරුණු වේ.

6. සාමාන්‍ය දෝෂ සහ ගැටළු විසඳුම්

MySQL හි තීරුවක වර්ගය වෙනස් කරන විට, ඔබට අනපේක්ෂිත දෝෂ හෝ ගැටළු මුහුණ දිය හැක. සාමාන්‍ය අසාර්ථක රටා සහ ඒවාට මුහුණ දීමට පෙර දැන ගැනීම මෘදු මෙහෙයුම් සලසයි. මෙන්න නිතර සිදුවන දෝෂ සහ ඒවාගේ විසඳුම්.

6.1 දත්ත වර්ග පරිවර්තන දෝෂ

වර්ගයක් වෙනස් කරන විට, පවතින දත්ත නව වර්ගයේ සීමා පුරවා නොගත් නම් දෝෂයක් සිදුවේ.

  • උදාහරණය: VARCHAR(5) සිට INT වෙත වෙනස් කිරීම, 문자열 දත්ත ඉන්ටීජර් වලට පරිවර්තනය නොහැකි නම් අසාර්ථක වේ.
  • සැකසීම: පූර්ව පරීක්ෂා කර නොපරිවර්තනය කළ හැකි දත්ත සොයා, අවශ්‍ය පරිදි (උදාහරණයක් ලෙස, UPDATE හෝ DELETE භාවිතයෙන් අසත්‍ය අගයන් ඉවත් කිරීම) සකස් කරන්න.

6.2 NULL සීමා උල්ලංඝන

ඔබ තීරුවක් NOT NULL බවට වෙනස් කර, පවතින දත්ත තුළ NULL අගයන් ඇතුළත් නම්, දෝෂයක් ලැබේ.

  • සැකසීම: වෙනස් කිරීමට පෙර UPDATE භාවිතයෙන් NULL අගයන් සුදුසු අගයන්ගෙන් ප්‍රතිස්ථාපනය කරන්න.
    UPDATE users SET score = 0 WHERE score IS NULL;
    

6.3 පෙරනිමි අගයන් අහිමි වීම

වර්ග වෙනස් කිරීමේදී DEFAULT ගුණාංගය නැවත සඳහන් නොකළහොත්, පෙරනිමි අගය ඉවත් විය හැකි අතර, අනපේක්ෂිත හැසිරීම හෝ දෝෂ ඇති විය හැක.

  • සැකසීම: ඔබේ ALTER TABLE ප්‍රකාශයේ මුල් DEFAULT ගුණාංගය සෑම විටම නැවත සඳහන් කරන්න.

6.4 දර්ශක සහ UNIQUE සීමා මත බලපෑම

වර්ග වෙනස් කිරීම දර්ශක අවිශ්වාසී කර හෝ UNIQUE සීමා උල්ලංඝනයට හේතු විය හැක.

  • උදාහරණය: දිග අඩු කිරීමෙන් පිටපත් (ඩුප්ලික්) පෙන්විය හැක.
  • සැකසීම: වෙනස් කිරීමට පෙර ඉලක්ක තීරුවේ පිටපත් හෝ සම්භාව්‍ය සීමා උල්ලංඝන පරීක්ෂා කරන්න.

6.5 විදේශීය යතුරු සීමා දෝෂ

If you change the type of a column with a foreign key constraint, an error occurs if the referenced column type doesn’t match.

  • Fix: Change the referenced column type as well, or temporarily drop the foreign key constraint before changing the type

6.6 ගැටළු සිදුවූ විට පරීක්ෂා කිරීමේ ක්‍රම

  • SHOW WARNINGS; භාවිතා කර නවතම දෝෂ සහ අනතුරු ඇඟවීම් සමාලෝචනය කරන්න
  • DESCRIBE table_name; භාවිතා කර වගුවේ නිර්වචනය නැවත පරීක්ෂා කරන්න
  • MySQL දෝෂ ලොග් පරීක්ෂා කරන්න

6.7 වෙනස්කම් පසුබැසීම (Rollback)

සාමාන්‍යයෙන්, ALTER TABLE ප්‍රකාශන පසුබැසිය නොහැක. ඔබ වැරදි වර්ග වෙනස්කමක් යොදන්නේ නම්, ඔබට උපස්ථානයෙන් (backup) ප්‍රතිස්ථාපනය කළ යුතුය.

  • Fix: සැමවිටම පෙර උපස්ථානයක් (backup) ගන්න
  • උපස්ථානයන්ගෙන් තනි වගු ප්‍රතිස්ථාපනය කළ හැකි නම් එය ආරක්ෂිත වේ

තීරුවක වර්ගය වෙනස් කිරීමේදී බොහෝ සුක්ෂ්ම අවදානම් ඇත. දෝෂ රටා තේරුම්ගෙන, පෙර සැලසුම් කර පරීක්ෂා කිරීමෙන් ඔබට ස්ථාවර මෙහෙයුම් ලබා ගත හැක.

7. ප්‍රායෝගික උපදෙස් සහ උසස් තාක්ෂණ

තීරුවේ වර්ග වෙනස් කිරීම MySQL හි සාමාන්‍ය ALTER TABLE ප්‍රකාශනයක් ක්‍රියාත්මක කිරීමකට වඩා වැඩි දෙයක් අවශ්‍ය වේ. බොහෝ වාස්තුකාලීන අවස්ථා වල, ඔබට ප්‍රායෝගික තාක්ෂණ, කාර්යක්ෂමතාව වැඩි කිරීම, සහ නිරන්තර මෙහෙයුම් කළමනාකරණය අවශ්‍ය වේ. මෙම කොටස ක්ෂේත්‍ර-පරීක්ෂිත ක්‍රමවලට අදාළ වේ.

7.1 DDL (ALTER ප්‍රකාශන) සඳහා සංස්කරණ පාලනය

බහු සංවර්ධකයන් හෝ පරිසර (staging/production) සමඟ ඇති ව්‍යාපෘතිවල, ALTER TABLE ප්‍රකාශන වැනි DDL සඳහා සංස්කරණ පාලනය ඉතා වැදගත් වේ.
සාමාන්‍ය ක්‍රමයක් ලෙස DDL ස්ක්‍රිප්ට් Git වැනි සංස්කරණ පාලන පද්ධතියක සුරකිමින්, වර්ගය කවදා, කවුද, ඇයි වෙනස් කළේ යන ඉතිහාසය රැකගනී. මෙය සිදුවීම් අතර මූලික හේතු හඳුනා ගැනීමට පහසු කරයි සහ වේගවත් ප්‍රතිස්ථාපනය සලසයි.

7.2 DB මයිග්‍රේෂන් මෙවලම් භාවිතා කිරීම

අද, DB මයිග්‍රේෂන් මෙවලම් (උදාහරණයක් ලෙස Flyway, Liquibase, Rails Active Record Migrations) භාවිතා කිරීම ALTER TABLE මෙහෙයුම් ස්වයංක්‍රිය කර ආරක්ෂිතව කළමනාකරණය කිරීමට උපකාරී වේ.
මයිග්‍රේෂන් මෙවලම් පහත වැනි ප්‍රතිලාභ ලබා දෙයි:

  • සංවර්ධනය සහ නිෂ්පාදනය අතර සකස්කිරීම් අස්ථානගත වීම වැළැක්වීම
  • බහු පරිසරයන්හි එකවර යෙදවීම පහසු කිරීම
  • වෙනස්කම් ඉතිහාසය සහ වත්මන් තත්ත්වය දෘශ්‍යමාන කිරීම

7.3 පරීක්ෂණ පරිසරයේ පෙර-වලංගුකරණය

වර්ග වෙනස්කමේ බලපෑම ඔබ එය ක්‍රියාත්මක කරන තුරු සෑමවිටම පැහැදිලි නොවේ.

  • පළමුව, පරීක්ෂණ සඳහා නකල් වගුවක් සාදන්න සහ ඔබේ ALTER TABLE ප්‍රකාශනය පරීක්ෂා කර දෝෂ හෝ අනිසි හැසිරීමක් නොමැති බව තහවුරු කරන්න.
  • දත්ත මාරු කිරීම සහ වර්ග පරිවර්තන හැසිරීම පෙර වලංගුකරණය කිරීමෙන්, නිෂ්පාදන සිදුවීම් ගණන බොහෝ අඩු කළ හැක.

7.4 CI/CD පයිප්ලයින් එකේ ස්වයංක්‍රිය කිරීම

අවසන් වසර කිහිපයේ, DDL වෙනස්කම් CI/CD (අඛණ්ඩ ඒකාබද්ධ කිරීම / අඛණ්ඩ සැපයුම) ක්‍රියාවලියට එක් කිරීම ස්වයංක්‍රිය පරීක්ෂණ සහ නිකුත් කිරීම සඳහා සාමාන්‍ය වී ඇත.

  • උදාහරණයක් ලෙස, Git commit එකක් සිදු වූ විට DDL ස්වයංක්‍රියව පරීක්ෂණ පරිසරයට යෙදවීම, සියල්ල සාර්ථක නම් නිෂ්පාදනයට නිකුත් කිරීම
  • අසාර්ථක වූ විට තත්කාලීන දැනුම්දීම් සහ ප්‍රතිස්ථාපන පියවර

මෙම වැඩපිළිවෙළ මනුෂ්‍ය දෝෂ සහ මෙහෙයුම් බර බොහෝ අඩු කරයි.

7.5 පසුබැසීමේยุත්‍රණය සහ සංරක්ෂණය

විශාල හෝ එකවර විශාල සැකැස්ම වෙනස්කම් සඳහා, පසුබැසීමේยุත්‍රණයක් සැලසුම් කරන්න.

  • වෙනස්කම්ට පෙර සහ පසු වගු තාවකාලිකව සංරක්ෂණය කරන්න
  • මයිග්‍රේෂන් කාලය තුළ පරණ සහ නව වගු දෙකම තබා ගැනීමට විකල්පයක්
  • කිසිවක් අසාර්ථක වූ විට පරණ වගුවට ඉක්මනින් පසුබැසීමට ස්ක්‍රිප්ට් සකස් කරන්න

7.6 නිල ලේඛන සහ යොමුකිරීම් භාවිතා කිරීම

ALTER TABLE හැසිරීම සහ සහය දක්වන මෙහෙයුම් MySQL අනුවාදය අනුව වෙනස් විය හැක.
ඉදිරියට යාමට පෙර නිතරම නවතම නිල MySQL ලේඛන සහ ඔබේ ගබඩා එන්ජින් (InnoDB, MyISAM, ආදිය) විශේෂණ පරීක්ෂා කරන්න.

මෙම ප්‍රායෝගික තාක්ෂණ සහ උසස් දැනුම අත්පත් කරගැනීමෙන්, ඔබ MySQL තීරුවේ වර්ග වෙනස්කම් ආරක්ෂිතව සහ කාර්යක්ෂමව කළ හැක. ඒවා වාස්තුකාලීන පරිසරවල විශ්වාසදායක මෙවලම් කට්ටලයක් ලෙස භාවිතා කරන්න.

8. සාරාංශය

Changing a MySQL column type is one of the most important tasks in table design and system operations. Without the right steps and precautions, it can lead to serious issues such as data loss, service downtime, and performance degradation.

In this article, we covered a wide range of topics—from the basic method of changing column types using ALTER TABLE, to batch-changing multiple columns, handling constraints and default values, performance and operational considerations, common error troubleshooting, and practical field-tested techniques.

අතිශය වැදගත් කරුණු සාරාංශ කිරීමට, මෙන්න පස් වැදගත් සාරාංශයන්:

  1. වර්ග වෙනස් කරන විට, සීමා සහ පෙරනිමි අගයන් සපයන්න
  2. විශාල වගු සඳහා, කාර්ය සාධන සහ අඩු වීමේ අවදානමට අවධානය යොමු කරන්න
  3. සාමාන්‍ය දෝෂ රටා දැනගන්න සහ දත්ත තත්ත්වයන් පෙර පරීක්ෂා කරන්න
  4. DDL ඉතිහාස කළමනාකරණය සහ මාරු මෙවලම් භාවිතා කර පනස්කාරීත්වය සහ ආරක්ෂාව වැඩි කරන්න
  5. සෑම විටම බැක්අප් ගන්න සහ ප්‍රතිස්ථාපන ක්‍රියාවලි සූදානම් කරන්න

මෙම කරුණු මතක තබා ගතහොත්, ඔබට අවදානම අඩු කර MySQL තීරුවේ වර්ග වෙනස් කිරීම සඳහා ආරක්ෂිත, වැඩි කාර්යක්ෂම දත්ත ගබඩා මෙහෙයුම් ලබා ගත හැක.

ඔබ පළමු තීරුවේ වර්ග වෙනස් කිරීම කිරීමට සූදානම් වුවත් හෝ දෛනික මෙහෙයුම් වැඩිදියුණු කිරීමට කැමති වුවත්, ඔබ මෙහි ඉගෙන ගත් දේ වාස්තුක ලෝකයේ යොදා ගැනීමට අපි බලාපොරොත්තු වෙමු.