- 1 1. MySQL ගනුදෙනුවක් කියන්නේ මොනවාද?
- 2 2. MySQL හි මූලික ගනුදෙනු ක්රියාකාරකම්
- 3 3. අයිසලේෂන් මට්ටම් සහ ඒවායේ බලපෑම
- 4 4. ප්රායෝගික ගනුදෙනු අවස්ථා
- 5 5. සාමාන්ය වැරදි සහ කාර්ය සාධන අභිප්රේරණය
- 6 6. ඔබ අඩුවෙන්ම දකින්නා වූ උසස් උපදෙස්
- 7 7. Frequently Asked Questions (FAQ)
- 8 8. Summary
1. MySQL ගනුදෙනුවක් කියන්නේ මොනවාද?
ගනුදෙනු වල විවරණය සහ වැදගත්කම
ගනුදෙනුවක් යනු බහු දත්ත ගබඩා ක්රියාකාරකම් එකම තාර්කික කණ්ඩායමක් ලෙස සැලකෙන වැඩකාරකයක් වේ. උදාහරණයක් ලෙස, බැංකු මාරුකිරීමක් ගැන සිතන්න. පුද්ගල Aගේ ගිණුමෙන් මුදලක් ඉවත් කර පුද්ගල Bගේ ගිණුමට තැන්පත් කිරීම සඳහා SQL විමසුන දෙකක් අවශ්ය වේ. මෙම ක්රියාකාරකම් වලින් එකක් පමණක් සාර්ථකව ක්රියාත්මක වූහොත්, මූල්ය සමතුලිතතාවය බිඳ වැටේ.
එබැවින් අපට සියලු ක්රියාකාරකම් සාර්ථකව සිදු විය යුතුය හෝ සියල්ලම ආපසු හැරවිය යුතුය යන යන්ත්රණයක් අවශ්ය වේ. එම යන්ත්රණය ගනුදෙනුව ලෙස හැඳින්වේ. ගනුදෙනු දත්ත අඛණ්ඩතාවය රැක ගැනීමට අත්යවශ්ය භූමිකාවක් ඉටු කරයි.
ACID ගුණාංග මොනවාද?
විශ්වාසනීය සැකසීමක් සඳහා, ගනුදෙනු ACID ලෙස හැඳින්වෙන හතරේ ගුණාංග පුරවා ගත යුතුය.
- අණුකත්වය (Atomicity) ගනුදෙනුව තුළ ඇති සියලු ක්රියාකාරකම් සම්පූර්ණයෙන් සාර්ථක විය යුතුය හෝ සම්පූර්ණයෙන් අසාර්ථක විය යුතුය. මැද මොහොතේ දෝෂයක් සිදු වූහොත්, සියලු වෙනස්කම් අවලංගු වේ.
- අනුකූලතාව (Consistency) දත්ත ගබඩා අඛණ්ඩතාවය ගනුදෙනු පෙර සහ පසු රැකගැනේ. උදාහරණයක් ලෙස, ගබඩා ප්රමාණය කිසිවිටෙකත් ඍණාත්මක නොවිය යුතුය.
- විසන්ධිත්වය (Isolation) බහු ගනුදෙනු එකවර ක්රියාත්මක වුවද, ඒවා එක්‑අන්යයට අතුරුදහන් නොවී සැකසිය යුතුය. මෙය අනෙකුත් ගනුදෙනු වලින් බලපෑම නොලැබෙන ස්ථාවර ක්රියාත්මක කිරීමක් සලසයි.
- දෘඪතාව (Durability) ගනුදෙනුව සාර්ථකව කමිටු (commit) කරනු ලැබූ පසු, එහි වෙනස්කම් දත්ත ගබඩාවේ ස්ථිරව සුරැකුම් කරයි. බලශක්ති අඩු වීමක් වුවද දත්ත අහිමි නොවේ.
ACID ගුණාංග පාලනය කිරීමෙන්, යෙදුම් ඉතා විශ්වාසනීය දත්ත මෙහෙයුම් ලබා ගත හැක.
MySQL හි ගනුදෙනු භාවිතයේ ප්රතිලාභ
MySQL හි, InnoDB ගබඩා එන්ජින් භාවිතා කරන විට ගනුදෙනු සහාය ලබා දේ. MyISAM වැනි පැරණි එන්ජින් ගනුදෙනු සපෝට් නොකරන බැවින් අවධානයෙන් සිටින්න.
MySQL හි ගනුදෙනු භාවිතයෙන් ලැබෙන ප්රතිලාභ:
- දෝෂ සිදුවූ විට දත්ත තත්ත්වය ප්රතිස්ථාපනය (ROLLBACK)
- බහු‑පියවර ක්රියාකාරකම් එක තාර්කික ඒකකයක් ලෙස කළමනාකරණය
- පද්ධති අසාර්ථකතා අතරතුරත් අනුකූලතාව රැක ගැනීම
විශේෂයෙන්, ඊ‑වාණිජ්ය වේදිකා, මූල්ය පද්ධති, සහ ගබඩා කළමනාකරණය වැනි සංකීර්ණ ව්යාපාරික තර්කයන් ඇති පද්ධතිවල, ගනුදෙනු සහාය සම්පූර්ණ විශ්වාසනීයතාවයට සෘජු බලපෑමක් කරයි.
2. MySQL හි මූලික ගනුදෙනු ක්රියාකාරකම්
ගනුදෙනු ආරම්භ කිරීම, කමිටු කිරීම, සහ ආපසු හැරවීම
MySQL හි ගනුදෙනු සඳහා භාවිතා කරන මූලික නියෝග තුන මෙසේය:
START TRANSACTIONහෝBEGIN: ගනුදෙනුව ආරම්භ කිරීමCOMMIT: වෙනස්කම් තහවුරු කර සුරැකුම් කිරීමROLLBACK: වෙනස්කම් අවලංගු කර පෙර තත්ත්වයට පත් කිරීම
මූලික වැඩපිළිවෙළ උදාහරණය:
START TRANSACTION;
UPDATE accounts SET balance = balance - 10000 WHERE id = 1;
UPDATE accounts SET balance = balance + 10000 WHERE id = 2;
COMMIT;
START TRANSACTION සමඟ ආරම්භ කර COMMIT සමඟ අවසන් කිරීමෙන්, දෙවන යාවත්කාලීන ක්රියාකාරකම් එක තාර්කික ක්රියාවලියක් ලෙස එකවර යෙදේ. මැද මොහොතේ දෝෂයක් සිදු වූහොත්, ROLLBACK භාවිතයෙන් සියලු වෙනස්කම් අවලංගු කළ හැක.
ROLLBACK;
Autocommit සැකසුම් සහ හැසිරීමේ වෙනස්කම්
පෙරනිමියෙන්, MySQL autocommit ප්රකාරය සක්රිය කරයි. මෙම ප්රකාරය තුළ, සෑම SQL ප්රකාශයක්ම ක්රියාත්මක වීමෙන් පසු ස්වයංක්රීයව කමිටු (commit) කරයි.
වත්මන් සැකසීම පරීක්ෂා කිරීම:
SELECT @@autocommit;
Autocommit අක්රිය කිරීම:
SET autocommit = 0;
Autocommit අක්රිය කර ඇති විට, වෙනස්කම් ඔබ ගනුදෙනුව අවසන් කරන තුරු පෙන්වී නොසිටී. මෙය බහු ක්රියාකාරකම් එකට කළමනාකරණය කිරීමට ඉඩ සලසයි.
උදාහරණය: බහු UPDATE ප්රකාශයන් ආරක්ෂිතව ක්රියාත්මක කිරීම
පහත උදාහරණය ගබඩා අඩු කිරීම සහ විකුණුම් රෙකෝඩ් ඇතුළත් කිරීම එක ගනුදෙනුවක් තුළ ගොඩනැගී ඇත:
START TRANSACTION;
UPDATE products SET stock = stock - 1 WHERE id = 10 AND stock > 0;
INSERT INTO sales (product_id, quantity, sale_date) VALUES (10, 1, NOW());
COMMIT;
මෙහි මූලික කරුණ වන්නේ stock > 0 යන කොන්දේසිය භාවිතා කර ගබඩා ඍණාත්මක නොවීම තහවුරු කිරීමයි. අවශ්ය නම්, බලපෑම් ලැබූ පේළි ගණන පරීක්ෂා කර, කිසිදු පේළියක් යාවත්කාලීන නොවූ විට ROLLBACK ක්රියාත්මක කළ හැක.
3. අයිසලේෂන් මට්ටම් සහ ඒවායේ බලපෑම
අයිසලේෂන් මට්ටමක් කියන්නේ කුමක්ද? හතරේ වර්ග සමඟ සංසන්දනය
RDBMS (Relational Database Management Systems) වල, MySQL ඇතුළුව, එකම වේලාවේ බහු ගනුදෙනු ක්රියාත්මක වීම සාමාන්යයයි. ගනුදෙනු එකිනෙකට අතුරුදහන් නොවීමට පාලනය කරන ක්රමය අයිසලේෂන් මට්ටම ලෙස හැඳින්වේ.
අයිසලේෂන් මට්ටම් හතරක් ඇත. ඉහළ මට්ටම් ගනුදෙනු අතර අතුරුදහන් වීම තදින් අඩු කරයි, නමුත් ඒවා කාර්ය සාධනයටත් බලපෑම් කළ හැක.
| Isolation Level | Description | MySQL Default |
|---|---|---|
| READ UNCOMMITTED | Can read uncommitted data from other transactions | × |
| READ COMMITTED | Can read only committed data | × |
| REPEATABLE READ | Always reads the same data within the same transaction | ◎ (Default) |
| SERIALIZABLE | Fully serialized execution; most strict but slowest | × |
අයිසලේෂන් මට්ටමකට අනුව සිදුවිය හැකි සිදුවීම්
අයිසලේෂන් මට්ටම අනුව, තත්ත්ව-සම්බන්ධිත ගැටළු තුනක් සිදුවිය හැක. ඒවා කුමක්ද, සහ කුමන අයිසලේෂන් මට්ටම් ඒවා වැළැක්වෙනවාද යන්න තේරුම් ගැනීම වැදගත්.
- Dirty Read
- තවත් ගනුදෙනුවක් තවමත් කැපී නොමැති දත්ත කියවීම.
- වැළැක්වෙන්නේ: READ COMMITTED හෝ ඉහළ මට්ටම
- Non-Repeatable Read
- එකම විමසුම බහු වරක් ක්රියාත්මක කිරීම විවිධ ප්රතිඵල ලබා දේ, තවත් ගනුදෙනුව දත්ත වෙනස් කර ඇති නිසා.
- වැළැක්වෙන්නේ: REPEATABLE READ හෝ ඉහළ මට්ටම
- Phantom Read
- තවත් ගනුදෙනුවක් පේළි එකතු හෝ ඉවත් කිරීමෙන්, එකම සෙවුම් කොන්දේසිය වෙනස් ප්රතිඵල කට්ටලයක් ලබා දේ.
- වැළැක්වෙන්නේ: SERIALIZABLE පමණක්
අයිසලේෂන් මට්ටම් සැකසීමේ ක්රම (උදාහරණ සමඟ)
MySQL හි, අයිසලේෂන් මට්ටම් සැසියකට අනුව හෝ ගෝලීයව සකස් කළ හැක.
සැසි මට්ටමේ සැකසීම (සාමාන්ය ක්රමය)
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
වත්මන් අයිසලේෂන් මට්ටම පරීක්ෂා කිරීම
SELECT @@transaction_isolation;
උදාහරණය: REPEATABLE READ සහ READ COMMITTED අතර වෙනස
-- Session A
START TRANSACTION;
SELECT * FROM products WHERE id = 10;
-- Session B
UPDATE products SET stock = stock - 1 WHERE id = 10;
COMMIT;
-- Session A
SELECT * FROM products WHERE id = 10; -- No change under REPEATABLE READ
ඉහත පෙන්වා ඇති පරිදි, ආදර්ශ අයිසලේෂන් මට්ටම සැකසීම දත්ත අඛණ්ඩතාව රැක ගැනීමට අත්යවශ්යය. නමුත්, තද මට්ටම් කාර්ය සාධනයට අහිතකර බලපෑම් කළ හැක, එබැවින් ඔබේ භාවිතය අනුව ඒවා සකස් කළ යුතුය.

4. ප්රායෝගික ගනුදෙනු අවස්ථා
ඉන්වෙන්ටරි කළමනාකරණය සහ eCommerce හි උදාහරණ
eCommerce පද්ධතිවල, ඇණවුම් සැකසීමේදී නිෂ්පාදන ඉන්වෙන්ටරි යාවත්කාලීන කළ යුතුය. එකම වේලාවේ බහු පරිශීලකයන් එකම නිෂ්පාදනය මිලදී ගැනීමට උත්සාහ කළහොත්, ඉන්වෙන්ටරි අසත්ය විය හැක. ගනුදෙනු භාවිතා කිරීමෙන්, සමකාලීන ක්රියාකාරකම් හසුරවමින් දත්ත තත්ත්වය රැකගත හැක.
උදාහරණය: ඉන්වෙන්ටරි අඩු කිරීම සහ ඇණවුම් ඉතිහාසය එක් ගනුදෙනුවක ඇතුළත් කිරීම
START TRANSACTION;
UPDATE products SET stock = stock - 1 WHERE id = 101 AND stock > 0;
INSERT INTO orders (product_id, quantity, order_date) VALUES (101, 1, NOW());
COMMIT;
ප්රධාන කරුණ වන්නේ stock > 0 භාවිතා කර ඉන්වෙන්ටරි ඍණ වීම වැළැක්වීමයි. අවශ්ය නම්, යාවත්කාලීන කළ පේළි ගණන පරීක්ෂා කර, කිසිවක් යාවත්කාලීන නොවූ විට ROLLBACK ක්රියාත්මක කළ හැක.
බැංකු මාරු සඳහා ගනුදෙනු සැලසුම් කිරීම
ගිණුම් අතර බැංකු මාරු කිරීම ගනුදෙනු සඳහා සාම්ප්රදායික භාවිතයක් වේ.
- ගිණුම A හි ශේෂය අඩු කිරීම
- ගිණුම B හි ශේෂය එකම මුදලින් වැඩි කිරීම
ඕනෑම ක්රියාකාරකමක් අසාර්ථක වූහොත්, ඔබට සම්පූර්ණ ක්රියාවලිය (ROLLBACK) ආපසු ගෙන යාම අවශ්ය වේ.
උදාහරණය: මාරු සැකසීම
START TRANSACTION;
UPDATE accounts SET balance = balance - 10000 WHERE id = 1;
UPDATE accounts SET balance = balance + 10000 WHERE id = 2;
COMMIT;
ආදර්ශ ලෝක නිෂ්පාදන පද්ධතිවල, යෙදුම සාමාන්යයෙන් අතිරේක සත්යාපනයක් එක් කරයි—උදාහරණයක් ලෙස ඍණ ශේෂ වැළැක්වීම හෝ මාරු සීමා ක්රියාත්මක කිරීම—ව්යාපාරික තර්කයේ කොටසක් ලෙස.
Laravel සහ PHP හි ගනුදෙනු උදාහරණ
අවසන් වසර කිහිපයේ, ගනුදෙනු පද්ධති රාමුවලින් කළමනාකරණය කිරීම වැඩි වශයෙන් පවතිනවා. මෙහිදී, ජනප්රිය PHP රාමුව Laravel හි ගනුදෙනු භාවිතා කරන ආකාරය බලමු.
Laravel හි ගනුදෙනු
DB::transaction(function () {
DB::table('accounts')->where('id', 1)->decrement('balance', 10000);
DB::table('accounts')->where('id', 2)->increment('balance', 10000);
});
DB::transaction() ක්රමය භාවිතා කිරීමෙන්, Laravel ස්වයංක්රීයව BEGIN, COMMIT, සහ ROLLBACK අභ්යන්තරව කළමනාකරණය කරයි, එමඟින් ආරක්ෂිත සහ කියවීමට පහසු කේතයක් ලැබේ.
උදාහරණය: try-catch සමඟ අත්යවශ්ය ගනුදෙනු
DB::beginTransaction();
try {
// Processing logic
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
// Logging or notification, etc.
}
ෆ්රේම්වර්ක් සහ භාෂා විශේෂාංග භාවිතා කිරීමෙන්, ඔබට කොළ SQL ලියවීමේ අවශ්යතාවය නොමැතිව ගනුදෙනු කළමනාකරණය කළ හැක.
5. සාමාන්ය වැරදි සහ කාර්ය සාධන අභිප්රේරණය
ගනුදෙනු ශක්තිමත් වේ, නමුත් වැරදි භාවිතය කාර්ය සාධන අඩු වීම සහ අනපේක්ෂිත ගැටළු ඇති කරයි. මෙම කොටසේ, MySQL හි ගනුදෙනු භාවිතා කරන විට සැලකිලිමත් විය යුතු වැදගත් කරුණු සහ ප්රතිකාර පිළිබඳ විස්තර කරමු.
පසුබැසිය නොහැකි ක්රියා (DDL)
ගනුදෙනු වල ප්රධාන වාසියක් වනුයේ ROLLBACK භාවිතයෙන් වෙනස්කම් ප්රතිස්ථාපනය කිරීමයි. නමුත් සියලු SQL ප්රකාශන පසුබැසිය නොහැක.
Data Definition Language (DDL) භාවිතා කරන ක්රියාකාරකම් පිළිබඳ විශේෂයෙන් අවධානයෙන් සිටින්න. පහත ප්රකාශන පසුබැසිය නොහැක:
CREATE TABLEALTER TABLEDROP TABLE
මෙම ප්රකාශන ක්රියාත්මක වීමත් සමඟම වහාම කමිට් කරයි සහ ගනුදෙනු පාලනයෙන් බලපෑමක් නොලැබේ. එබැවින්, DDL ක්රියාකාරකම් සැමවිටම ගනුදෙනු වලින් පිටත ක්රියාත්මක කළ යුතුය.
ඩෙඩ්ලොක්ස්: හේතු සහ පූර්ව ප්රතිරෝධය
ගනුදෙනු බහුලව භාවිතා කරන විට, බහු ගනුදෙනු එකිනෙකාගේ සම්පත් සඳහා සීමා රහිතව රැඳී සිටිය හැක. මෙම තත්ත්වය ඩෙඩ්ලොක් ලෙස හැඳින්වේ.
ඩෙඩ්ලොක් උදාහරණයක් (සරල කළ)
- Transaction A පේළිය 1 අගුළු දමා පේළිය 2 සඳහා රැඳේ
- Transaction B පේළිය 2 අගුළු දමා පේළිය 1 සඳහා රැඳේ
මෙම සිදුවීමේදී, MySQL ස්වයංක්රීයව ගනුදෙනු වලින් එකක් පසුබැසීමට බල කරයි.
පූර්ව ප්රතිරෝධන ක්රම
- අගුළු අනුපිළිවෙළ සම්මත කරන්න එකම වගුවේ පේළි යාවත්කාලීන කරන විට, සෑම විටම ඒවා එකම අනුපිළිවෙළින් ප්රවේශ වන්න.
- ගනුදෙනු කෙටි තබා ගන්න ගනුදෙනු තුළ අනිවාර්ය නොවන සැකසීම් වලින් වළකින්න සහ
COMMITහෝROLLBACKඉක්මනින් ක්රියාත්මක කරන්න. - පැහැදිලි පේළි ගණන සීමා කරන්න සම්පූර්ණ වගු අගුළු දැමීම වැළැක්වීමට නිරවද්ය WHERE කොටස් භාවිතා කරන්න.
ගනුදෙනු මන්දගාමී බවක් පෙනේ නම් පරීක්ෂා ලැයිස්තුව
ගනුදෙනු මන්දගාමී වීමේ බොහෝ හේතු ඇත. පහත කරුණු සමාලෝචනය කිරීමෙන් bottleneck හඳුනා ගැනීමට උපකාරී වේ:
- ඉන්ඩෙක්ස් නිවැරදිව සකසා තිබේද? WHERE කොටස් හෝ JOIN කොන්දේසි වල භාවිතා වන තීරුවල ඉන්ඩෙක්ස් තිබිය යුතුය.
- අයිසලේෂන් මට්ටම ඉතා ඉහළද? SERIALIZABLE වැනි දැඩි මට්ටම් අනිවාර්ය නොව භාවිතා නොකරන බව තහවුරු කරන්න.
- autocommit අනිත්යව සක්රියව තිබේද? අවශ්ය තැන්වල ගනුදෙනු පැහැදිලිව කළමනාකරණය කරන බවට විශ්වාස කරන්න.
- ගනුදෙනු දිගු කාලයක් විවෘතව තබා ඇතද? START TRANSACTION සහ COMMIT අතර දිගු කාල පරතරයක් අගුළු තරඟයට හේතු විය හැක.
- InnoDB බෆර් පූල් සහ ලොග් ප්රමාණය සුදුසුද? සේවාදායක සැකසුම් ඔබේ දත්ත ප්රමාණයට ගැළපෙනවාද කියා පරීක්ෂා කර, අවශ්ය නම් සැකසීම සිදු කරන්න.
6. ඔබ අඩුවෙන්ම දකින්නා වූ උසස් උපදෙස්
බොහෝ තාක්ෂණික වෙබ් අඩවි MySQL ගනුදෙනු මූලික කරුණු පැහැදිලි කරන අතර, නිෂ්පාදන සහ ගැටළු විසඳීමට ප්රායෝගික තාක්ෂණ පිළිබඳ ලිපි අඩුය. මෙම කොටස ඔබේ අවබෝධය ගැඹුරු කිරීමට ප්රායෝගික උපදෙස් හඳුන්වා දෙයි.
ක්රියාත්මක ගනුදෙනු පරීක්ෂා කිරීමේ ක්රමය
බහු ගනුදෙනු එකවර ක්රියාත්මක වන විට, ඒවායේ තත්ත්වය පරීක්ෂා කිරීම අවශ්ය විය හැක. MySQL හි, පහත විධානය භාවිතා කර InnoDB අගුළු තත්ත්වය සහ ගනුදෙනු තොරතුරු පරීක්ෂා කළ හැක:
SHOW ENGINE INNODB STATUS\G
මෙම විධානය අභ්යන්තර InnoDB තත්ත්වය, ඇතුළත් කරමින්:
- ක්රියාත්මක ගනුදෙනු ලැයිස්තුව
- අගුළු සඳහා රැඳී සිටින ගනුදෙනු
- ඩෙඩ්ලොක් ඉතිහාසය
සංකීර්ණ ගැටළු ඇති වූ විට, මෙම තොරතුරු සාමාන්යයෙන් ඩිබග් කිරීමේ පළමු පියවර වේ.
SQL ලොග් සහ මන්දගාමී විමසුම් ලොග් සමඟ හැසිරීම විශ්ලේෂණය කිරීම
To diagnose transaction issues, log analysis is essential. MySQL provides several logging features:
- General Log : Records all SQL statements
- Slow Query Log : Records only queries that exceed a specified execution time
Example: Enabling the Slow Query Log (my.cnf)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
With this configuration, queries taking longer than one second are recorded. If a transaction contains slow queries, this log helps identify the cause of performance degradation.
Experimenting with Multiple Sessions to Understand Behavior
Understanding transactions conceptually is important, but hands-on experimentation is equally valuable. By opening two terminals and executing queries in separate sessions, you can observe isolation level differences and lock behavior.
Experiment Example: Behavior Under REPEATABLE READ
- Session A
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; START TRANSACTION; SELECT * FROM products WHERE id = 1; -- Hold the result
- Session B
UPDATE products SET name = 'Updated Product Name' WHERE id = 1; COMMIT;
- Session A
SELECT * FROM products WHERE id = 1; -- The change is still not visible (due to REPEATABLE READ) COMMIT;
Through experiments like this, you can eliminate mismatches between logic and actual behavior and implement more accurate systems.
7. Frequently Asked Questions (FAQ)
In addition to basic usage, many practical questions arise when working with MySQL transactions in real-world environments. In this section, we summarize common questions and answers in a Q&A format.
Q1. Are there situations where transactions cannot be used in MySQL?
Yes. If the MySQL storage engine is not InnoDB, transaction functionality is not supported. In older systems, MyISAM may still be used, and in such cases, transactions will not work.
How to check:
SHOW TABLE STATUS WHERE Name = 'table_name';
Make sure that the Engine column shows InnoDB.
Q2. Does using transactions always make processing slower?
Not necessarily. However, poor transaction design can negatively impact performance.
Possible causes include:
- Keeping transactions open for too long
- Using unnecessarily strict isolation levels
- Insufficient indexing that broadens the locking scope
In such cases, lock contention and buffer pool load may reduce performance.
Q3. Does disabling autocommit automatically make everything a transaction?
When you execute SET autocommit = 0;, all subsequent queries remain pending until an explicit COMMIT or ROLLBACK is executed. This can unintentionally include multiple operations in the same transaction and may cause unexpected issues.
Therefore, if you disable autocommit, it is important to clearly manage the start and end of transactions.
Q4. What should I do if an error occurs during a transaction?
If an error occurs during a transaction, you should generally execute ROLLBACK to restore the previous state. On the application side, transaction control is typically combined with exception handling.
Example (PHP + PDO)
try {
$pdo->beginTransaction();
// SQL processing
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
// Record error logs, etc.
}
Proper error handling helps prevent incomplete data writes and improve overall system reliability.
8. Summary
In this article, we explored the topic of “MySQL Transactions” from fundamentals to practical applications, including troubleshooting strategies and advanced tips. Let’s recap the key points.
Transactions Are the Key to Reliability
අර්ථ ක්රියාවක් යනු SQL මෙහෙයුම් ගණනාවක් එක ඒකකයකට ගලපා දත්ත අඛණ්ඩතාව සහ විශ්වාසනීයභාවය ආරක්ෂා කිරීම සඳහා මූලික විශේෂාංගයකි. මූල්ය වේදිකා, ඉන්වෙන්ටරි කළමනාකරණය සහ රිසර්වේෂන් පද්ධති වැනි පද්ධතිවලදී, නිවරදි අර්ථ ක්රියාව නිර්මාණය අත්යවශ්ය වේ.
නිවරදි පාලනය සහ අවබෝධය ඉතා වැදගත්
START TRANSACTIONසිටCOMMITසහROLLBACKදක්වා මූලික ගලනය ප්රබලව දැනගන්න- autocommit ආකාරය සහ පැහැදිලි අර්ථ ක්රියාව කළමනාකරණය අතර වෙනස අවබෝධ කරගන්න
- කාර්ය සාධනය සහ අනුකූලභාවය සමබර කිරීමට වෙන්කිරීම් මට්ටම් නිවරදිව සකසන්න
ප්රායෝගික තත්ත්වයන් සහ උපදෙස් නිෂ්පාදනයේදී ඔබව ශක්තිමත් කරයි
සැබෑ සංවර්ධන සහ මෙහෙයුම් පරිසරවලදී, ව්යාකරණය දැනගැනීම ප්රමාණවත් නොවේ. ඔබ විචල්ය අර්ථ ක්රියාව පරීක්ෂා කිරීම සහ ලොග් සහ නිරීක්ෂණ මෙවලම් භාවිතයෙන් ගැටලු විසඳීම කෙසේදැයි අවබෝධ කළ යුතුය.
MySQL අර්ථ ක්රියාව බොහෝ විට ගැටලු ඇති වූ විට පමණක් පර්යේෂා කෙරේ. ඒවා පෙර සංවිධිතව ඉගෙනීමෙන්, ඔබ පද්ධතියේ විශ්වාසනීයභාවය සහ කාර්ය සාධනය සෘජුව වැඩිදියුණු කරන ශක්තිමත් කුසලතාවක් ලබයි.
අපි මෙම මාර්ගෝපදේශය අර්ථ ක්රියාව පිළිබඳ ඔබේ අවබෝධය ගැඹුරු කරනු ඇති බවට සහ ඔබේ දෛනික සංවර්ධන සහ මෙහෙයුම් කාර්යයන්හි ඔබට විශ්වාසයක් ලබා දෙනු ඇති බවට බලාපොරොත්තු වෙමු.
ඔබට ප්රශ්න හෝ වැඩි විස්තරයකින් ආවරණය කිරීමට අවශ්ය මාතෘකා තිබේ නම්, අදහසක් ඉතිරි කිරීමට ස්වාධීන වන්න. අපි ප්රායෝගික සහ ක්රියාකාරී තාක්ෂණික තීක්ෂ්ණ බුද්ධියන් ලබා දීම දිගටම කරගනිමු.


