1. TRUNCATE ප්රකාශය කුමක්ද?
TRUNCATE ප්රකාශයේ මූලික සංකල්පය
MySQL TRUNCATE ප්රකාශය යනු වගුවක සියලු දත්ත එකවර ඉවත් කිරීමට භාවිතා කරන විධානයකි. පේළි තනි තනිව ඉවත් කරන DELETE ප්රකාශයට වඩා, TRUNCATE වගුව අභ්යන්තරයෙන් නැවත සෑදීමෙන් දත්ත මකා දමයි. එබැවින්, විශාල ප්රමාණයේ දත්ත කාර්යක්ෂමව ඉවත් කිරීමේදී එය ඉතා ප්රයෝජනවත් වේ.
මූලික ව්යවස්ථාව
TRUNCATE ප්රකාශයේ මූලික ව්යවස්ථාව පහත පරිදි වේ:
TRUNCATE TABLE table_name;
මෙය නියමිත වගුවේ සියලු පේළි ඉවත් කර, වගුව මුල් තත්ත්වයට පත් කරයි. කෙසේ වෙතත්, මකා දමන ලද දත්ත නැවත ලබා ගත නොහැකි බැවින්, මෙම විධානය අවධානයෙන් භාවිතා කළ යුතුය.
උදාහරණය: මූලික භාවිතය
පහත උදාහරණයේ users නමැති වගුවක් සාදමින්, එහි සියලු දත්ත මකා දැමීමට TRUNCATE ප්රකාශය භාවිතා කරයි.
CREATE TABLE users (
id INT AUTO_INCREMENT,
name VARCHAR(100),
PRIMARY KEY (id)
);
INSERT INTO users (name) VALUES ('Taro'), ('Hanako'), ('Jiro');
-- Execute TRUNCATE
TRUNCATE TABLE users;
-- The table becomes empty, and AUTO_INCREMENT is reset.
මෙම උදාහරණයේ, වගුවේ සියලු දත්ත මකා දමන අතර, නව දත්ත ඇතුළත් කරන විට id තීරුව 1 සිට නැවත ආරම්භ වේ.

2. TRUNCATE සහ DELETE අතර වෙනස්කම්
වේගය සහ කාර්ය සාධන වෙනස්කම්
TRUNCATE විශේෂයෙන් සම්පූර්ණ වගුවක දත්ත ඉවත් කිරීම සඳහා අනුකූල කර ඇති බැවින් DELETE ට වඩා ඉතා වේගවත් වේ. DELETE පේළි තනි තනිව ඉවත් කරන බැවින්, පේළි ගණන වැඩි වීමත් සමඟ එය මන්දගාමී විය හැක. එයට විරුද්ධව, TRUNCATE අභ්යන්තරයෙන් වගුව නැවත සෑදීමෙන් දත්ත ඉවත් කරන බැවින්, විශාල ප්රමාණයේ දත්ත මකා දැමීමේදී ඉතා කාර්යක්ෂම වේ.
උදාහරණය: කාර්ය සාධන සැසඳීම
මිලියන ගණනක පේළි මකා දැමීමට DELETE ප්රකාශය පහත පරිදි ලියයි:
DELETE FROM users WHERE condition;
එයට විරුද්ධව, TRUNCATE භාවිතා කිරීමෙන් සියලු පේළි එකවර ඉවත් කළ හැක:
TRUNCATE TABLE users;
වගුව විශාල වන විට මෙම වෙනස්කම විශේෂයෙන් පෙනේ. DELETE සමඟ ගතවන වැඩි කාලය TRUNCATE සමඟ තත්ක්ෂණිකව අවසන් විය හැක.
Rollback වෙනස්කම්
TRUNCATE ප්රකාශය rollback කළ නොහැක. ක්රියාත්මක කිරීමෙන් පසු දත්ත ස්ථිරවම මකා දමනු ලැබේ සහ නැවත ලබා ගත නොහැක. අනෙක් පැත්තට, DELETE ප්රකාශය transaction එකක් තුළ භාවිතා කරන විට, දෝෂයක් සිදුවුවහොත් rollback කරමින් දත්ත ප්රතිසාධනය කළ හැක. මෙය ආරක්ෂක පැතිකඩෙන් වැදගත් වෙනස්කමකි.
තේරීම් මකා දැමීමේ වෙනස්කම්
DELETE ප්රකාශය WHERE කොටස භාවිතා කර තේරීම් මත පදනම්ව පේළි මකා දැමීමට ඉඩ දෙයි, නමුත් TRUNCATE තේරීම් මකා දැමීමේ හැකියාව නොදේ. උදාහරණයක් ලෙස, ඔබට විශේෂිත පරිශීලකයෙකු පමණක් මකා දැමීමට අවශ්ය නම්, පහත පරිදි DELETE භාවිතා කරයි:
DELETE FROM users WHERE id = 1;
TRUNCATE සියලු පේළි මකා දමන බැවින්, විශේෂිත රෙකෝඩ් පමණක් මකා දැමීමට DELETE වඩා සුදුසු වේ.
3. AUTO_INCREMENT මත TRUNCATE හි බලපෑම
AUTO_INCREMENT නැවත සකස් කිරීම
TRUNCATE ප්රකාශය භාවිතා කරන විට, වගුවේ සියලු දත්ත මකා දමන අතර AUTO_INCREMENT අගයත් එකවර නැවත සකස් වේ. එමනිසා, නව දත්ත ඇතුළත් කරන විට ID 1 සිට නැවත ආරම්භ වේ. උදාහරණයක් ලෙස, users වගුවට නව දත්ත ඇතුළත් කරන විට එය මෙසේ පෙනේ:
INSERT INTO users (name) VALUES ('Ken');
-- The id starts again from 1
මෙම නැවත සකස් කිරීම සමහර අවස්ථාවල පහසුකමක් සපයයි. නමුත්, ID වෙනත් වගුවල foreign key ලෙස භාවිතා කරන්නේ නම්, අනපේක්ෂිත දත්ත අසමතුලිතතා ඇති විය හැක. එබැවින් TRUNCATE භාවිතා කිරීමට පෙර එහි ප්රතිඵල සලකා බැලීම අත්යවශ්ය වේ.
4. TRUNCATE භාවිතා කිරීමේ වැදගත් සැලකිලි
දත්ත නැවත ලබා ගත නොහැක
TRUNCATE ප්රකාශයේ විශාලතම අවදානම වන්නේ දත්ත නැවත ලබා ගත නොහැකි වීමයි. වැදගත් දත්ත අහඹු ලෙස මකා දැමුවහොත්, ඒවා ප්රතිසාධනය කළ නොහැක. එබැවින්, මෙම විධානය ක්රියාත්මක කිරීමට පෙර දත්ත පිටපත් (backup) ගත කිරීම ඉතාමත්ම නිර්දේශිත වේ.
විදේශීය යතුරු (Foreign Key) සීමා
The TRUNCATE ප්රකාශය විදේශීය යතුරු සීමා සක්රිය කර ඇති වගු වලට භාවිතා කළ නොහැක. එවැනි අවස්ථාවල, ඔබට පළමුව විදේශීය යතුරු සීමා ඉවත් කළ යුතුය හෝ සම්බන්ධිත දත්ත වෙනත් ක්රමයන් මඟින් සැලසුම් කළ යුතුය.
Execution Privileges
TRUNCATE ප්රකාශය ක්රියාත්මක කිරීමට, ඔබට වගුව මකා දැමීමේ අවසරය (DROP අවසරය) තිබිය යුතුය. අවශ්ය අවසර නොමැති පරිශීලකයන් මෙම විධානය ක්රියාත්මක කළ නොහැක, එබැවින් පෙරම අවශ්ය අවසර පරීක්ෂා කිරීම අත්යවශ්යයි.

5. When to Use TRUNCATE vs DELETE
ඔබට TRUNCATE භාවිතා කළ යුතු අවස්ථා
TRUNCATE ඔබට සම්පූර්ණ වගුවක් එකවර හිස් කිරීමට අවශ්ය වන විට සුදුසු වේ. ඔබට සියලු දත්ත ඉක්මනින් ඉවත් කිරීමට හෝ AUTO_INCREMENT නැවත සකස් කිරීම අවශ්ය වන විට මෙය විශේෂයෙන් ප්රයෝජනවත් වේ. උදාහරණයක් ලෙස, පරීක්ෂණ දත්ත නැවත නැවත සකස් කිරීමට ඔබට අවශ්ය වන විට මෙය ඉතා සුදුසුය.
ඔබට DELETE භාවිතා කළ යුතු අවස්ථා
අනෙක් පැත්තෙන්, තෝරාගත් පේළි මකා දැමීම හෝ ට්රිගර් ක්රියාත්මක කිරීම අවශ්ය නම්, ඔබට DELETE ප්රකාශය භාවිතා කළ යුතුය. විශේෂිත කොන්දේසි මත දත්ත ඉවත් කිරීම හෝ දත්ත ගබඩා අඛණ්ඩතාවය ආරක්ෂා කරමින් ක්රියා කිරීමේදී DELETE වඩාත් සුදුසු වේ.
6. TRUNCATE ආරක්ෂිතව භාවිතා කිරීම සඳහා හොඳ පුරුදු
උපස්ථාන (බැක්අප්) වල වැදගත්කම
TRUNCATE ප්රකාශය ක්රියාත්මක කිරීමට පෙර, දත්ත උපස්ථානය (බැක්අප්) සෑදීම අත්යවශ්ය වේ. අහඹු මකා දැමීමෙන් සිදුවන දත්ත අහිමිවීම ප්රතිහාර කළ නොහැකි බැවින්, විශේෂයෙන් නිෂ්පාදන පරිසරවල අතිරේක අවධානයක් අවශ්ය වේ.
පරීක්ෂණ පරිසරයක පරීක්ෂා කිරීම
නිෂ්පාදන පරිසරයක TRUNCATE ක්රියාත්මක කිරීමට පෙර, එය සංවර්ධන හෝ මට්ටම් පරිසරයක පරීක්ෂා කිරීම සුදුසුය. මෙය ඔබට එය අපේක්ෂිත ලෙස ක්රියා කරන බව තහවුරු කිරීමට සහ අනපේක්ෂිත ගැටළු වලින් වැළැක්වීමට උපකාරී වේ.
AUTO_INCREMENT තීරුවල කළමනාකරණය
TRUNCATE AUTO_INCREMENT නැවත සකස් කරන බැවින්, අනන්ය ID අඛණ්ඩතාවය රැක ගැනීම වැදගත් නම්, එය ක්රියාත්මක කිරීමට පෙර දත්ත උපස්ථාන සහ අනෙකුත් වගු සමඟ ඇති සම්බන්ධතා පරීක්ෂා කළ යුතුය.


