.
- 1 1. MySQL EXPLAIN සමාලෝචනය
- 2 EXPLAIN කියන්නේ මොනවාද?
- 3 EXPLAIN වැදගත් වීමේ හේතු
- 4 2. MySQL EXPLAIN මූලික භාවිතය
- 5 මූලික EXPLAIN ව්යාකරණය
- 6 EXPLAIN ප්රතිඵලය විග්රහ කිරීම
- 7 3. EXPLAIN භාවිතයෙන් ප්රශ්න සුදුසුකම් කිරීම
- 8 නිවැරදි සූචි භාවිතය
- 9 පේළි පරික්ෂා කිරීම අඩු කිරීම
- 10 4. EXPLAIN හි උසස් විශේෂාංග
- 11 ප්රතිඵල ආකෘතිය තේරීම
- 12 රියල්-ටයිම් ප්රශ්න විශ්ලේෂණය
- 13 5. ප්රායෝගික උදාහරණ
- 14 සරල ප්රශ්නයක් විශ්ලේෂණය කිරීම
- 15 සංකීර්ණ ප්රශ්නයක් සුදුසුකම් කිරීම
- 16 ක්රියාත්මක කිරීමේ සැලැස්ම දෘශ්යමාන කිරීම
- 17 6. EXPLAIN සඳහා හොඳම ක්රියාමාර්ග
- 18 ගැටලු නැවත නැවත ධාවනය කිරීම
- 19 SHOW STATUS සමඟ ඒකකව භාවිතා කිරීම
- 20 7. පොදු ගැටළු සහ වැරදි අවබෝධ
- 21 EXPLAIN අනුමාන සහ වාස්තුකතාව අතර වෙනස්කම්
- 22 දර්ශකයන්ට අධික පරමාර්ථය සහ ඒවායේ කාර්යක්ෂමතාව
- 23 8. සාරාංශය
- 24 ප්රධාන ග්රහණයන්
- 25 ගැටලු අනුකූල කිරීමේ ඊළඟ පියවර
- 26 අවසාන සටහන්
1. MySQL EXPLAIN සමාලෝචනය
EXPLAIN විධානය MySQL හි ප්රශ්න ක්රියාත්මක සැලැස්ම විශ්ලේෂණය කර, සුදුසුකම් උපදෙස් ලබා දෙන අත්යවශ්ය මෙවලමකි. විශාල පරිමාණ දත්ත ගබඩා පරිසරවල, ප්රශ්න කාර්යක්ෂමතාව වැඩි කිරීම සමස්ත කාර්ය සාධනයට වැදගත් බලපෑමක් ඇති කරයි.
EXPLAIN කියන්නේ මොනවාද?
EXPLAIN MySQL එකේ ප්රශ්නයක් කෙසේ ක්රියාත්මක වේදැයි දෘශ්යමාන කරයි. මෙය ඔබට ප්රශ්නය ක්රියාත්මක වන විස්තර, උදාහරණයක් ලෙස සූචි (index) භාවිතය, වගුවක් පූර්ණයෙන් පරික්ෂා කරන්නේද, සහ සම්බන්ධතා (join) ක්රමය යනාදිය ලබා දේ.
EXPLAIN වැදගත් වීමේ හේතු
ප්රශ්න සුදුසුකම් කිරීම දත්ත ගබඩා කාර්ය සාධනය වැඩි කිරීමට අත්යවශ්ය වේ. EXPLAIN භාවිතා කිරීමෙන් ඔබට කාර්ය සාධන bottleneck (අඩුබල) හඳුනාගෙන, වඩා කාර්යක්ෂම ප්රශ්න සකස් කළ හැක. එමඟින් දත්ත ලබා ගැනීම වේගවත් වන අතර, සේවාදායක සම්පත් වඩා කාර්යක්ෂමව භාවිතා වේ.
2. MySQL EXPLAIN මූලික භාවිතය
මෙම කොටසේ, EXPLAIN විධානයේ මූලික භාවිතය සහ එහි ප්රතිඵලය කෙසේ විග්රහ කරන්නේද යන්න පැහැදිලි කරමු.
මූලික EXPLAIN ව්යාකරණය
ඔබට විමසා බලන්න අවශ්ය ප්රශ්නයට පෙර EXPLAIN තබා භාවිතා කළ හැක. උදාහරණයක් ලෙස:
EXPLAIN SELECT * FROM users WHERE age > 30;
මෙම විධානය ප්රශ්න ක්රියාත්මක සැලැස්ම පෙන්වා, සූචි භාවිතය සහ වගුව පූර්ණ පරික්ෂා කරන්නේද යන්න පරීක්ෂා කිරීමට ඉඩ සලසයි.
EXPLAIN ප්රතිඵලය විග්රහ කිරීම
ප්රතිඵලය පහත වැනි තීරුවලින් සමන්විත වේ:
- id : ප්රශ්නයේ එක් එක් කොටසකට නියමිත හැඳුනුම්පත
- select_type : ප්රශ්නයේ වර්ගය (සරල, උපප්රශ්නය, ආදිය)
- table : භාවිතා වන වගුවේ නාමය
- type : වගුවට ප්රවේශ වීමේ ක්රමය (ALL, index, range, ආදිය)
- possible_keys : ප්රශ්නය සඳහා ලබා ගත හැකි සූචි
- key : ඇත්තෙන්ම භාවිතා වූ සූචිය
- rows : පරික්ෂා කළ යුතු පේළි ගණනේ අනුමානය
- Extra : අතිරේක තොරතුරු (Using index, Using temporary, ආදිය)
මෙම තොරතුරු භාවිතා කර ඔබට ප්රශ්න කාර්යක්ෂමතාව ඇගයීමට සහ සුදුසුකම් අවස්ථා සොයා ගැනීමට හැකියාව ලැබේ.
3. EXPLAIN භාවිතයෙන් ප්රශ්න සුදුසුකම් කිරීම
මෙම කොටස EXPLAIN භාවිතයෙන් ප්රශ්න කෙලින්ම කෙසේ සුදුසුකම් කරගත හැකිද යන්න පැහැදිලි කරයි.
නිවැරදි සූචි භාවිතය
සූචි ප්රශ්න කාර්යක්ෂමතාව වැඩි කිරීමට අත්යවශ්ය වේ. EXPLAIN භාවිතා කර ඔබේ ප්රශ්නය සූචි නිවැරදිව භාවිතා කරන්නේද යන්න පරීක්ෂා කරන්න.
EXPLAIN SELECT * FROM orders USE INDEX (order_date_idx) WHERE order_date > '2024-01-01';
ප්රතිඵලයෙන් සූචිය ප්රभावශීලීව භාවිතා වෙමින් තිබේද, නැතහොත් අතිරේක සූචි අවශ්යද යන්න තීරණය කළ හැක.
පේළි පරික්ෂා කිරීම අඩු කිරීම
EXPLAIN හි rows තීරුව ප්රශ්නය විසින් පරික්ෂා කරන පේළි ගණන පෙන්වයි. බොහෝ පේළි පරික්ෂා කිරීම කාර්ය සාධනය අඩු කරයි; එබැවින් සුදුසු සූචි සකස් කර පේළි ගණන අඩු කිරීම වැදගත් වේ.
4. EXPLAIN හි උසස් විශේෂාංග
EXPLAIN ප්රශ්න ක්රියාත්මක සැලැස්ම වඩා විස්තරාත්මකව විශ්ලේෂණය කිරීමට උසස් විශේෂාංග ලබා දේ.
ප්රතිඵල ආකෘතිය තේරීම
EXPLAIN පහත ආකෘතිවලින් ප්රතිඵල ලබා දේ:
- Traditional : පෙරනිමි තීරුව ආකෘතිය
- JSON : විස්තරාත්මක තොරතුරු සමඟ JSON ආකෘතිය (MySQL 5.7 සහ පසුගිය)
- Tree : ප්රශ්න ක්රියාත්මක ව්යුහය වෘක්ෂ ආකෘතියෙන් පෙන්වයි (MySQL 8.0.16 සහ පසුගිය)
උදාහරණයක් ලෙස, JSON ආකෘතිය මෙසේ නියම කළ හැක:
EXPLAIN FORMAT = JSON SELECT * FROM users WHERE age > 30;
මෙය ප්රශ්න ක්රියාත්මක සැලැස්මගේ විස්තරාත්මක තොරතුරු ගැඹුරු ලෙස විශ්ලේෂණය කිරීමට ඉඩ සලසයි.
රියල්-ටයිම් ප්රශ්න විශ්ලේෂණය
EXPLAIN FOR CONNECTION භාවිතා කර, වත්මන් ක්රියාත්මක වන ප්රශ්නයේ ක්රියාත්මක සැලැස්ම රියල්-ටයිම් ලෙස ලබා ගත හැක. මෙය නියමිත ප්රශ්නය දත්ත ගබඩාවට කරන පූර්ණ භාරය ඇගයීමට උපකාරී වේ.
5. ප්රායෝගික උදාහරණ
EXPLAIN භාවිතයෙන් ප්රශ්න සුදුසුකම් කිරීමේ විශේෂ උදාහරණ මෙහි ඉදිරිපත් කරමු.
සරල ප්රශ්නයක් විශ්ලේෂණය කිරීම
පළමුව, සරල ප්රශ්නයකට EXPLAIN යොදන්න.
EXPLAIN SELECT * FROM employees WHERE department = 'Sales';
මෙම ප්රතිඵලයෙන් සූචි නිවැරදිව භාවිතා වෙමින් තිබේද, හෝ සම්පූර්ණ වගු පරික්ෂා (full table scan) සිදු වෙමින් තිබේද යන්න පරීක්ෂා කළ හැක.
සංකීර්ණ ප්රශ්නයක් සුදුසුකම් කිරීම
බහු වගු සම්බන්ධතා (joins) ඇතුළත් ප්රශ්නයක ක්රියාත්මක සැලැස්ම විශ්ලේෂණය කරන්න.
EXPLAIN SELECT e.name, d.name FROM employees e INNER JOIN departments d ON e.department_id = d.id WHERE e.salary > 50000;
මෙම ප්රතිඵලයෙන්, ඔබට සම්බන්ධතා අනුක්රමය සහ දර්ශක භාවිතය සුදුසුද යන්න තීරණය කළ හැක.
ක්රියාත්මක කිරීමේ සැලැස්ම දෘශ්යමාන කිරීම
ගැටලුවේ ක්රියාත්මක කිරීමේ සැලැස්ම වෘක්ෂ ආකාරයෙන් දෘශ්යමාන කරන්න.
EXPLAIN FORMAT = tree SELECT * FROM employees WHERE department = 'Sales';
වෘක්ෂ-ආකාරයේ දෘශ්ය විශ්ලේෂණය සංකීර්ණ ගැටලු අනුකූල කිරීම සඳහා ඉතා ප්රයෝජනවත් වේ.
6. EXPLAIN සඳහා හොඳම ක්රියාමාර්ග
මෙම කොටස EXPLAIN කාර්යක්ෂමව භාවිතා කිරීම සඳහා කිහිපයක් හොඳම ක්රියාමාර්ග හඳුන්වා දෙයි.
ගැටලු නැවත නැවත ධාවනය කිරීම
ගැටලුවේ ක්රියාත්මක වේගය කෑෂ් තත්ත්වයෙන් බලපාන බැවින්, EXPLAIN භාවිතා කරන විට, ගැටලුව බහු වරක් ධාවනය කර කෑෂ් උණුසුම් වූ පසු කාර්ය සාධනය ඇගයන්න.
SHOW STATUS සමඟ ඒකකව භාවිතා කිරීම
SHOW STATUS විධානය භාවිතා කර ගැටලුව ක්රියාත්මක වූ පසු තත්ත්වය පරීක්ෂා කිරීමෙන්, කියවූ පේළි සංඛ්යාව සහ දර්ශක භාවිතය වැනි විස්තරාත්මක තොරතුරු ලබා ගත හැක.
7. පොදු ගැටළු සහ වැරදි අවබෝධ
මෙම කොටස EXPLAIN භාවිතා කිරීමේදී වැදගත් සටහන් සහ පොදු වැරදි අවබෝධ පැහැදිලි කරයි.
EXPLAIN අනුමාන සහ වාස්තුකතාව අතර වෙනස්කම්
EXPLAIN හි ප්රතිඵල MySQL අනුකූලකය විසින් කරන ලද අනුමාන මත පදනම් වේ, එබැවින් ඒවා වාස්තුක ගැටලුවේ ක්රියාත්මක ප්රතිඵලවලින් වෙනස් විය හැක. අනුමාන වලට අධික විශ්වාස නොකර, සැමවිටම සැබෑ කාර්ය සාධනය තහවුරු කරන්න.
දර්ශකයන්ට අධික පරමාර්ථය සහ ඒවායේ කාර්යක්ෂමතාව
දර්ශකයන් ගැටලුවේ කාර්යක්ෂමතාව වැඩි කිරීමට ප්රයෝජනවත් වන නමුත් ඒවා සෑම අවස්ථාවකම සම්පූර්ණ විසඳුමක් නොවේ. දර්ශකයන් බොහෝමයක් තිබේ නම්, ඇතුළත් කිරීම සහ යාවත්කාලීන කිරීමේදී අධික පිරිවැය සිදු විය හැක. තවද, දර්ශක භාවිතය සුදුසු නොවන්නේ නම්, MySQL දර්ශක නොසලකා සම්පූර්ණ වගුවේ පරික්ෂණයක් තෝරා ගනු ඇත.
8. සාරාංශය
මෙම ලිපියේ, MySQL EXPLAIN විධානය භාවිතා කර ගැටලු විශ්ලේෂණය සහ අනුකූල කිරීමේ ක්රම පැහැදිළි කර ඇත.
ප්රධාන ග්රහණයන්
- මූලික භාවිතය : ගැටලුවේ ක්රියාත්මක සැලැස්ම පරීක්ෂා කර දර්ශක භාවිතය සහ වගුව ප්රවේශ ක්රම ඇගයීමට
EXPLAINභාවිතා කරන්න. - උසස් විශේෂාංග : JSON සහ වෘක්ෂ ආකාර භාවිතා කර වැඩි විස්තරාත්මක ක්රියාත්මක සැලැස්ම විශ්ලේෂණය කරන්න. රියල්-ටයිම් ගැටලු විශ්ලේෂණය කරමින් ධාවනය වන ගැටලු වල පූර්ණභාරය ඇගයීමටද උපකාරී වේ.
- හොඳම ක්රියාමාර්ග : ගැටලු බහු වරක් ධාවනය කර ස්ථාවර ක්රියාත්මක කාලය ඇගයීමෙන් කෑෂ් බලපෑම් සැලකිල්ලට ගන්න. තවද,
SHOW STATUSභාවිතා කර වාස්තුක ගැටලු ප්රතිඵල විශ්ලේෂණය කර අනුකූලතාවයට සහය වන්න.
ගැටලු අනුකූල කිරීමේ ඊළඟ පියවර
EXPLAIN ප්රතිඵල මත පදනම්ව ගැටලු අනුකූල කිරීම දිගටම කරමින් සමස්ත දත්ත ගබඩා කාර්යක්ෂමතාව වැඩි කරන්න. මෙයට දර්ශක එකතු කිරීම හෝ වෙනස් කිරීම, ගැටලු ව්යුහය උත්තරදීම, සහ වගු සැලසුම සමාලෝචනය කිරීම ඇතුළත් වේ.
අවසාන සටහන්
EXPLAIN විධානය දත්ත ගබඩා ගැටලු අනුකූල කිරීම සඳහා මූලික සහ බලවත් මෙවලමකි. එය නිසි ලෙස භාවිතා කිරීමෙන්, ගැටලු කාර්යක්ෂමතාව වැඩි කර සමස්ත දත්ත ගබඩා කාර්යක්ෂමතාව අනුකූල කළ හැක. මෙම ලිපියේ අන්තර්ගතය යොමු කර දෛනික දත්ත ගබඩා කළමනාකරණය සහ ගැටලු අනුකූල කිරීමේ වැඩ කරගන්න. ගැටලු අනුකූල කිරීම නිතර සිදු වන ක්රියාවලියක් වන අතර, දත්ත ගබඩා ප්රමාණය සහ භාවිත රටාවන් වෙනස් වීමත් සමඟ වෙනස්කම් අවශ්ය වේ. කාර්යක්ෂම දත්ත ගබඩා මෙහෙයුම් සඳහා EXPLAIN භාවිතා කරන්න.


