MySQL හි ඉන්ඩෙක්ස් පරීක්ෂා කිරීම සහ කළමනාකරණය කිරීම: SHOW INDEX, INFORMATION_SCHEMA, සහ EXPLAIN මාර්ගෝපදේශය

1. MySQL දර්ශකයක් කියන්නේ මොනවාද? දත්ත ගබඩා කාර්ය සාධනය වැඩිදියුණු කිරීමේ යතුර

MySQL දත්ත ගබඩාවක දර්ශක භාවිතා කිරීමෙන් ඔබට විමසුම් කාර්ය සාධනය ගණනාවක් වැඩිදියුණු කළ හැකිය. දර්ශකයක් යනු දත්ත වගුවක විශේෂිත තීරුවල (columns) සෑදෙන දත්ත ව්‍යුහයක් වන අතර, සෙවීම සහ පෙරහන් කිරීමේ වේගය වැඩි කරයි. උදාහරණයක් ලෙස, විශාල දත්ත කට්ටලයකින් විශේෂිත තොරතුරු ලබා ගැනීමට, දර්ශකයක් භාවිතා කිරීමෙන් MySQL සියලු පේළි (rows) පරීක්ෂා කිරීමෙන් වළකිමින්, දර්ශකය සම්බන්ධිත තීරුව පමණක් සෙවීමට හැකියාව ලැබේ.

දර්ශකවල භූමිකා සහ වර්ග

MySQL පහත වර්ගයේ දර්ශක ලබා දේ:

  • PRIMARY (ප්‍රාථමික යතුර) : වගුවකට එක් වරක් පමණක් ඉඩ දෙන අද්විතීය යතුරක්, වගුවේ ප්‍රධාන හැඳුනුම්කාරක ලෙස භාවිතා වේ.
  • UNIQUE Index : අද්විතීය බව අත්‍යවශ්‍ය කරමින්, නියමිත තීරුවට අනුලකුණු (duplicate) අගයන් ඇතුළත් වීම වැළැක්වෙන දර්ශකයක්.
  • Regular Index : අද්විතීය සීමාවක් නොමැති දර්ශකයක්, විශේෂිත තීරුවල සෙවීමේ කාර්ය සාධනය වැඩි කිරීමට භාවිතා වේ.

ඉහත පෙන්වා ඇති පරිදි, දර්ශකයන් වගු මත සෙවීම් සහ දත්ත මෙහෙයුම් කාර්ය සාධනය වැඩි කරයි, විශාල දත්ත කට්ටල සඳහා අත්‍යවශ්‍ය වේ. කෙසේ වෙතත්, දර්ශකයන් බොහොමයක් තිබීම INSERT සහ UPDATE මෙහෙයුම් මන්දගාමී කරනු ඇත, එබැවින් නිසි දර්ශක කළමනාකරණය වැදගත් වේ.

2. MySQL හි දර්ශක පරීක්ෂා කිරීමේ මූලික ක්‍රම

MySQL හි SHOW INDEX විධානය භාවිතා කරමින් පවතින දර්ශක පරීක්ෂා කළ හැකිය. මෙම සරල SQL විධානය නියමිත වගුවකට අදාළ දර්ශක තොරතුරු පෙන්වයි. විස්තරාත්මක ක්‍රියාවලිය පහත පරිදි වේ.

SHOW INDEX හි මූලික වාක්‍ය රචනය සහ ප්‍රතිඵලය

SHOW INDEX FROM table_name;

ප්‍රතිඵල තීරුවල විස්තරය

ඔබ මෙම විධානය ක්‍රියාත්මක කරන විට, පහත තොරතුරු පෙන්වනු ලැබේ:

  • Table : දර්ශකය අඩංගු වගුවේ නාමය
  • Non_unique : දර්ශකය අනුලකුණු (duplicate) අගයන් ඉඩ දෙනවාද (1) නැතහොත් අද්විතීයද (0) යනුවෙන් පෙන්වයි
  • Key_name : දර්ශකයේ නාමය
  • Column_name : දර්ශකය යෙදෙන තීරුවේ නාමය
  • Cardinality : දර්ශකයේ අද්විතීය අගයන් ගණනේ අනුමානයක්. මෙය සෙවීමේ කාර්ය සාධනයේ දර්ශකයක් ලෙස භාවිතා වේ.

මෙම තොරතුරු භාවිතා කර ඔබට වගුවක් තුළ දර්ශක තත්ත්වය සහ එක් එක් තීරුවට දර්ශකය කෙසේ යෙදෙනවාද යන්න දෘශ්‍යමය ලෙස අවබෝධ කරගත හැකිය. අවශ්‍ය නම් WHERE වාක්‍යය භාවිතා කර ප්‍රතිඵල සීමා කළ හැකිය.

3. INFORMATION_SCHEMA.STATISTICS වගුව භාවිතා කර දර්ශක පරීක්ෂා කිරීම

SHOW INDEX ප්‍රකාශයට අමතරව, MySQL INFORMATION_SCHEMA.STATISTICS වගුව විමසීමෙන් දර්ශක පරීක්ෂා කළ හැකිය. මෙම ක්‍රමය සම්පූර්ණ දත්ත ගබඩාවක් පුරා දර්ශක ලැයිස්තුව ලබා දීමට සහ වැඩි විස්තරාත්මක තොරතුරු ලබා දීමට උපකාරී වේ.

INFORMATION_SCHEMA.STATISTICS සඳහා මූලික විමසුම

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, INDEX_NAME 
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'database_name';

විමසුම් ප්‍රතිඵලයේ විස්තර

  • TABLE_SCHEMA : දර්ශකය අයත් වන දත්ත ගබඩාවේ නාමය
  • TABLE_NAME : දර්ශකය අඩංගු වගුවේ නාමය
  • COLUMN_NAME : දර්ශකය යෙදෙන තීරුවේ නාමය
  • INDEX_NAME : දර්ශකයේ නාමය

මෙම ක්‍රමය එක ලැයිස්තුවකින් බහු වගු හෝ නියමිත දත්ත ගබඩාවක් පුරා දර්ශක තොරතුරු බැලීමට ඉඩ සලසයි. සම්පූර්ණ දත්ත ගබඩාවක දර්ශක කළමනාකරණය කිරීමේදී විශේෂයෙන් ප්‍රයෝජනවත් වේ.

4. දර්ශක එකතු කිරීම සහ ඉවත් කිරීම සහ ඒවායේ බලපෑම

දර්ශක එකතු කිරීමේ ක්‍රමය

අවශ්‍යතාවය අනුව පසුව දර්ශක එකතු කළ හැකිය. නියමිත තීරුවකට දර්ශකයක් සෑදීමට පහත විධානය භාවිතා කරන්න:

CREATE INDEX index_name ON table_name(column_name);

උදාහරණයක් ලෙස, users වගුවේ email තීරුවට දර්ශකයක් එකතු කිරීමට අවශ්‍ය නම්, පහත විධානය ක්‍රියාත්මක කරන්න:

CREATE INDEX idx_email ON users(email);

දර්ශක ඉවත් කිරීමේ ක්‍රමය

INSERT සහ UPDATE කාර්ය සාධනය වැඩිදියුණු කිරීම සඳහා අවශ්‍ය නොවන දර්ශක ඉවත් කළ හැකිය. දර්ශකයක් මැකීමට DROP INDEX විධානය භාවිතා කරන්න:

DROP INDEX index_name ON table_name;

අවශ්‍ය නොවන ඉන්ඩෙක්ස් එකක් උදාහරණයක් ලෙස, සෙවුම් කොන්දේසි (WHERE වාක්‍ය) තුළ භාවිතා නොවන තීරුවකට සාදන ලද ඉන්ඩෙක්ස් එකක් වේ. එවැනි ඉන්ඩෙක්ස් ඉවත් කිරීම දත්ත ඇතුළත් කිරීම සහ යාවත්කාලීන කිරීමේ වේගය වැඩි කරයි.

5. EXPLAIN ප්‍රකාශය භාවිතා කර ඉන්ඩෙක්ස් කාර්ය සාධනය පරීක්ෂා කිරීම

MySQL EXPLAIN ප්‍රකාශය ප්‍රශ්න ක්‍රියාත්මක සැලැස්ම පරීක්ෂා කිරීම සහ කුමන ඉන්ඩෙක්ස් භාවිතා කර ඇතිදැයි හඳුනා ගැනීමට ප්‍රයෝජනවත් වේ. මෙය ඉන්ඩෙක්ස් කාර්යක්ෂමතාවය ඇගයීමට සහ අවශ්‍ය විට කාර්ය සාධනය අනුකූල කිරීමේදී උදව් කරයි.

EXPLAIN ප්‍රකාශයේ මූලික භාවිතය

EXPLAIN SELECT * FROM table_name WHERE column_name = 'condition';

මෙම විධානය භාවිතා කරමින්, ඉන්ඩෙක්ස් එකක් භාවිතා කර ඇතිද නැතහොත් සම්පූර්ණ වගුව පරික්ෂා කර ඇතිද යන්න ඔබට තීරණය කළ හැක. ප්‍රතිඵලය පහත සඳහන් තීරුවලින් සමන්විත වේ:

  • type : ප්‍රශ්න වර්ගය (ALL යනු සම්පූර්ණ වගුව පරික්ෂා කිරීම; INDEX යනු ඉන්ඩෙක්ස් භාවිතා කිරීම).
  • possible_keys : ප්‍රශ්නය සඳහා භාවිතා කළ හැකි ඉන්ඩෙක්ස් ලැයිස්තුව.
  • key : වත්මන් භාවිතා කරන ලද ඉන්ඩෙක්ස් නාමය.
  • rows : පරික්ෂා කරන ලද පේළි සංඛ්‍යාව අනුමාන කර ඇත.

මෙම තොරතුරු මත පදනම්ව, ඔබට ඉන්ඩෙක්ස් කාර්යක්ෂමතාවය විශ්ලේෂණය කර සෙවුම් කාර්ය සාධනයේ සංවර්ධනය අවශ්‍යදැයි තීරණය කළ හැක.

6. නිගමනය

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

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