- 1 1. හැඳින්වීම
- 2 2. MySQL ඉන්ඩෙක්ස් යනු කුමක්ද?
- 3 3. MySQL ඉන්ඩෙක්ස් පරීක්ෂා කිරීමේ ක්රමය
- 4 4. සුචි භාවිතය පරීක්ෂා කරන්නේ කෙසේද
- 5 5. සුචි කළමනාකරණය
- 6 6. Index Optimization (Performance Improvement)
- 7 7. FAQ About Indexes (Frequently Asked Questions)
- 7.1 Will search speed improve as I add more indexes?
- 7.2 Which columns should have indexes?
- 7.3 Are indexes created automatically?
- 7.4 B-Tree, Hash, සහ FULLTEXT දර්ශක අතර තෝරා ගැනීමට මට කෙසේද?
- 7.5 දර්ශකවල ප්රමාණය පරීක්ෂා කිරීමට මට කෙසේද?
- 7.6 දර්ශකයක් භාවිතා කරමින් තිබේදැයි පරීක්ෂා කිරීමට මට කෙසේද?
- 7.7 දර්ශකයක් ඉවත් කිරීමට කවදාද?
- 8 8. සාරාංශය
1. හැඳින්වීම
MySQL යනු බොහෝ වෙබ් යෙදුම් සහ දත්ත කළමනාකරණ පද්ධතිවල භාවිතා වන සම්බන්ධක දත්ත ගබඩා වේ. දත්ත ලබා ගැනීමේ වේගය වැඩි කිරීමට “ඉන්ඩෙක්ස්” (index) නමැති යන්ත්රයක් ඇත. නමුත්, එය නිසි ලෙස කළමනාකරණය නොකළහොත්, ඉන්ඩෙක්ස් පණිවිඩ කාර්ය සාධනය අඩු කරයි.
ඉන්ඩෙක්ස් පරීක්ෂා කිරීම ඇයි වැදගත්?
දත්ත ගබඩාවේ ඉන්ඩෙක්ස් එකක් පොතක ඉන්ඩෙක්ස් කොටස වැනි දෙයක් වේ. නිසි ලෙස නිර්මාණය කරන ලද ඉන්ඩෙක්ස් සෙවුම් විමසුම් වල ක්රියාත්මක වේගය වැඩි කරයි. නමුත්, පහත සඳහන් ගැටළු සිදු විය හැකිය:
- ඉන්ඩෙක්ස් නිසි ලෙස නිර්මාණය නොකෙරේ → මන්දගාමී සෙවුම් සිදු වේ
- අවශ්ය නොවන ඉන්ඩෙක්ස් පවතී → යාවත්කාලීන කිරීම සහ ඇතුළත් කිරීම මන්දගාමී වේ
- කොන ඉන්ඩෙක්ස් භාවිතා කරයිද යන්න නොදැනීම → භාවිත නොවන ඉන්ඩෙක්ස් ඉවත් කළ යුතුදැයි තීරණය කිරීම අමාරු වේ
මෙම ලිපියෙන් ඔබ ඉගෙන ගන්නා දේ
- MySQL ඉන්ඩෙක්ස් වල මූලික යන්ත්රණය
- වත්මන් ඉන්ඩෙක්ස් පරීක්ෂා කිරීම (SQL විධාන භාවිතා කර)
- ඉන්ඩෙක්ස් කළමනාකරණය සහ සුදුසුකම් වැඩි කිරීම
- ඉන්ඩෙක්ස් භාවිතය විශ්ලේෂණය කිරීමේ තාක්ෂණික ක්රම
දැන්, MySQL ඉන්ඩෙක්ස් පිළිබඳ පද්ධතිමයව ඉගෙනගෙන, මෙම දැනුම භාවිතා කර දත්ත ගබඩා කාර්ය සාධනය වැඩි කරමු.
2. MySQL ඉන්ඩෙක්ස් යනු කුමක්ද?
ඉන්ඩෙක්ස් යනු දත්ත ගබඩා කාර්ය සාධනය වැඩි කිරීමට අත්යවශ්ය ලක්ෂණයකි. මෙම කොටසේ, ඉන්ඩෙක්ස් වල මූලික සංකල්පය, වර්ග, වාසි හා අවාසි පැහැදිලි කරමු.
ඉන්ඩෙක්ස් වල මූලික සංකල්පය
දත්ත ගබඩාවේ ඉන්ඩෙක්ස් යනු නියමිත තීරුවල අගයන් ඉක්මනින් සොයා ගැනීමට උපකාරී යන්ත්රණයකි. උදාහරණයක් ලෙස, විශාල ප්රමාණයේ දත්ත අඩංගු වගුවක නියමිත රෙකෝඩ් එකක් සොයන විට, ඉන්ඩෙක්ස් නොමැතිව නම්, දත්ත ගබඩාව සියලු රෙකෝඩ් පරීක්ෂා (සම්පූර්ණ වගුව පරික්ෂා) කළ යුතුය. ඉන්ඩෙක්ස් යෙදීමෙන් දත්ත ලබා ගැනීම කාර්යක්ෂම වේ හා සැකසීමේ වේගය ගණනීය ලෙස වැඩි වේ.
MySQL ඉන්ඩෙක්ස් වර්ග
MySQL විවිධ ඉන්ඩෙක්ස් වර්ග කිහිපයක් සහය දක්වයි, ඒවාට සුවිශේෂී භාවිතා අවස්ථා ඇත.
- PRIMARY KEY (ප්රාථමික යතුරු ඉන්ඩෙක්ස්)
- වගුවකට එක් වරක් පමණක් සකස් කළ හැකිය
- වගුවේ ඒකකත්වය (uniqueness) සහතික කරයි
- ක්ලස්ටරඩ් ඉන්ඩෙක්ස් (clustered index) ලෙස ක්රියා කරයි
- UNIQUE Index
- නියමිත තීරුවේ අගයන් පිළිවෙලට නැවත නොපැමිණීම සහතික කරයි
- NULL අගයන්ට ඉඩ ඇත (බහු NULL අගයන් ඉඩ ඇත)
- INDEX (සාමාන්ය ඉන්ඩෙක්ස්)
- සෙවුම් වේගය වැඩි කිරීමට භාවිතා වේ
- අනුපිළිවෙලේ දත්ත ඉඩ ඇත
- FULLTEXT Index (පෙළ සෙවුම් සඳහා)
- පෙළ සෙවුම් සුදුසු කරයි
MATCH ... AGAINSTවාක්ය සමඟ භාවිතා වේ
- SPATIAL Index (භූගෝලීය දත්ත සඳහා)
- ස්පේෂල් (GIS) දත්ත සඳහා නිර්මාණය කර ඇත
ඉන්ඩෙක්ස් වල වාසි හා අවාසි
වාසි
- විමසුම් සෙවුම් වේගය වැඩි කරයි
- JOIN ක්රියාකාරකම් සහ WHERE කොන්දේසි වල කාර්ය සාධනය වැඩි කරයි
- නියමිත දත්ත ලබා ගැනීම කාර්යක්ෂම කරයි
අවාසි
- බහු ඉන්ඩෙක්ස් INSERT, UPDATE, DELETE ක්රියාකාරකම් මන්දගාමී කරයි
- තැටි (disk) ඉඩ ගනී
- නරක ලෙස නිර්මාණය කරන ලද ඉන්ඩෙක්ස් කාර්ය සාධනය අඩු කරයි

3. MySQL ඉන්ඩෙක්ස් පරීක්ෂා කිරීමේ ක්රමය
MySQL ඉන්ඩෙක්ස් නිසි ලෙස කළමනාකරණය කිරීම සඳහා, වගුවක වත්මන් නිර්වචිත ඉන්ඩෙක්ස් කුමනවාදැයි පරීක්ෂා කිරීම වැදගත් වේ. මෙම කොටසේ, SHOW INDEX විධානය, INFORMATION_SCHEMA.STATISTICS, සහ mysqlshow විධානය භාවිතා කර ඉන්ඩෙක්ස් පරීක්ෂා කිරීමේ ක්රමය පැහැදිලි කරමු.
SHOW INDEX විධානය (මූලික ක්රමය)
MySQL හි, SHOW INDEX විධානය භාවිතා කර නියමිත වගුවකට නිර්වචිත ඉන්ඩෙක්ස් ලැයිස්තුව ලබා ගත හැකිය. මෙම විධානය ඉන්ඩෙක්ස් නාමය, ඉන්ඩෙක්ස් ආවරණය කරන තීරුවල, සහ ඒකකත්ව (unique) සීමාවක් තිබේද යන තොරතුරු පරීක්ෂා කිරීමට ඉඩ සලසයි.
මූලික වාක්ය රචනය
SHOW INDEX FROM table_name;
උදාහරණය
උදාහරණයක් ලෙස, users වගුවේ නිර්වචිත ඉන්ඩෙක්ස් පරීක්ෂා කිරීමට පහත SQL ක්රියාත්මක කරන්න:
SHOW INDEX FROM users;
උදාහරණ ප්රතිඵල
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Index_type |
|---|---|---|---|---|---|---|---|
| users | 0 | PRIMARY | 1 | id | A | 1000 | BTREE |
| users | 1 | idx_email | 1 | A | 500 | BTREE |
INFORMATION_SCHEMA.STATISTICS භාවිතා කිරීම (විස්තරාත්මක තොරතුරු ලබා ගැනීම)
MySQL හි පද්ධති වගුව INFORMATION_SCHEMA.STATISTICS භාවිතා කර, SHOW INDEX සමඟ සමාන තොරතුරු වඩාත් ස flexibilily ලබා ගත හැකිය.
විශේෂිත වගුවකට ඉන්ඩෙක්ස් පරීක්ෂා කිරීම
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, NON_UNIQUE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'users';
සම්පූර්ණ දත්ත සමුදාය තුළ සුචි ලබා ගන්න
SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_database_name';
mysqlshow හුදකලාව (CLI වෙතින් පරීක්ෂා කරන්න)
ඔබට MySQL command-line මෙවලම් භාවිතා කරමින් සුචි තොරතුරු ලබා ගත හැක. මෙය විශේෂයෙන් MySQL සේවාදායකයක SSH හරහා වැඩ කිරීමේදී භාවිතාකාරී වේ.
හුදකලාව ධාවනය කරන්නේ කෙසේද
mysqlshow -u username -p password database_name table_name
උදාහරණය
mysqlshow -u root -p my_database users
සුචි නොමැති නම් කළ යුතු දේ
SHOW INDEX ධාවනය කිරීමෙන් පසු හෝ INFORMATION_SCHEMA.STATISTICS විමසීමෙන් පසු සුචි පෙන්වා නොමැති නම්, වගුවට සුදුසු සුචි නොමැති විය හැක. එවැනි අවස්ථාවකදී, අවශ්ය පරිදි සුචි සාදා සෙවුම් කාර්ය සාධනය වැඩි දියුණු කළ හැක.
නව සුචියක් සාදන්න
CREATE INDEX idx_column ON users (email);
ප්රධාන යතුරක් සකසන්න (PRIMARY KEY)
ALTER TABLE users ADD PRIMARY KEY (id);
අනවශ්ය සුචි ඉවත් කරන්න
ALTER TABLE users DROP INDEX idx_column;
4. සුචි භාවිතය පරීක්ෂා කරන්නේ කෙසේද
සුචි නිවරදිව ක්රියා කරන බව පරීක්ෂා කිරීම MySQL කාර්ය සාධනය වැඩිදියුණු කිරීමේදී වැදගත් පියවරකි. මෙම කොටසේදී, EXPLAIN හුදකලාව සහ Performance Schema භාවිතා කරමින් විමසුමක් භාවිතා කරන සුචි මොනවාද යන්න තීරණය කරන්නේ කෙසේද යන්න පැහැදිලි කරමු.
EXPLAIN සමඟ විමසුම විශ්ලේෂණය
EXPLAIN හුදකලාව භාවිතා කරමින් දක්වා ඇති SQL විමසුමක් ක්රියාත්මක වන ආකාරය දෘශ්යමය වශයෙන් පෙන්වයි. එය භාවිතා වන සුචි, ප්රවේශ ක්රම සහ ක්රියාත්මක සැලැස්ම විශ්ලේෂණය කිරීමට උපකාරී වන අතර, සුචි අනුවර්තනයට අනුව ක්රියා කරන බව තහවුරු කිරීමට එය භාවිතාකාරී වේ.
මූලික ව්යාකරණය
EXPLAIN SELECT * FROM table_name WHERE condition;
උදාහරණය
උදාහරණයක් ලෙස, users වගුව email සිලළුව තත්ත්වයක් ලෙස භාවිතා කරමින් සෙවීමට:
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
උදාහරණ ප්රතිදානය
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|---|---|---|---|---|---|---|---|---|---|
| 1 | SIMPLE | users | ref | idx_email | idx_email | 256 | const | 1 | Using index |
ප්රධාන කරුණු
type = ALLනම්, විමසුම සම්පූර්ණ වගු ස්කෑන් කරයි, එබැවි ඔබට සුචියක් අවශ්ය විය හැක.keyහි සුචි නාමයක් පෙනෙන නම්, එම සුචිය භාවිතා වේ.rowsවටිනාකම ඉතා විශාල නම්, විමසුම් වැඩිදියුණු කිරීම අවශ්ය විය හැක.
Performance Schema භාවිතය
MySQL හි performance_schema සමඟ, ඔබට විමසුම් ක්රියාත්මක වීමේදී විස්තරාත්මකව සුචි මොනවාද භාවිතා වනවාද සහ ඒවා භාවිතා වන බහුලත්වය කුමක්ද යන්න විශ්ලේෂණය කළ හැක.
විමසුම් ක්රියාත්මක සංඛ්යාලේඛන ලබා ගන්න
SELECT * FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST_TEXT LIKE '%SELECT%';
විශේෂිත වගුවක සුචි භාවිතය පරීක්ෂා කරන්න
SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME, COUNT_STAR, SUM_TIMER_WAIT
FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE OBJECT_SCHEMA = 'your_database_name' AND OBJECT_NAME = 'users';
සුචියක් භාවිතා නොවන්නේ නම් කළ යුතු දේ
1. විමසුම සමාලෝචනය කරන්න
සුචියක් භාවිතා නොවන්නේ නම්, විමසුම් ව්යුහය ගැටලුව විය හැක. උදාහරණයක් ලෙස, පහත රටාව සුචි භාවිතය වැළැක්විය හැක.
❌ වැරදි උදාහරණය (නිෂ්පාදනය සුචි භාවිතය අක්රිය කරයි)
SELECT * FROM users WHERE LOWER(email) = 'test@example.com';
→ LOWER(email) නිසා, email හි සුචිය නොසලකා හරිනු ලැබිය හැක.
✅ නිවැරදි කළ උදාහරණය (නිෂ්පාදනයක් භාවිතා කිරීමෙන් වළකින්න)
SELECT * FROM users WHERE email = 'test@example.com';
2. සුචිය නැවත සාදන්න
දැනට ඇති සුචියක් නිවරදිව ක්රියා නොකරන්නේ නම්, එය ඉවත් කර නැවත සාදීම කාර්ය සාධනය වැඩි දියුණු කළ හැක.
ALTER TABLE users DROP INDEX idx_email;
CREATE INDEX idx_email ON users(email);
3. සංඛ්යාලේඛන යාවත්කාලීන කරන්න
වගු සංඛ්යාලේඛන පැරණි වූවහොත්, MySQL සුචි උපරිමව භාවිතා නොකරයි. ඔබට පහත හුදකලාව සමඟ සංඛ්යාලේඛන යාවත්කාලීන කළ හැක:
ANALYZE TABLE users;
5. සුචි කළමනාකරණය
MySQL දර්ශක (indexes) දත්ත ලබා ගැනීමේ කාර්ය සාධනය වැඩිදියුණු කිරීම සඳහා අත්යවශ්ය වේ. එහෙත්, සුදුසු ලෙස කළමනාකරණය නොකළහොත්, ඒවා සමස්ත දත්ත ගබඩා කාර්ය සාධනය අඩු කරයි. මෙම කොටසේ, අපි අත්යවශ්ය නොවන දර්ශක නිර්මාණය, මකාදැමීම, සහ හඳුනා ගැනීම පිළිබඳ විස්තරාත්මකව පැහැදිලි කරමු.
Creating Indexes
සුදුසු දර්ශක නිර්මාණය කිරීමෙන්, ඔබට දත්ත සෙවීමේ වේගය ගණනාවක් වැඩි කළ හැක. MySQL හි, ඔබට CREATE INDEX හෝ ALTER TABLE භාවිතා කර දර්ශක එකතු කළ හැක.
Basic Syntax
CREATE INDEX index_name ON table_name(column_name);
Example
users වගුවේ email තීරුවට දර්ශක එකතු කිරීමට:
CREATE INDEX idx_email ON users(email);
Multi-Column Index (Composite Index)
CREATE INDEX idx_name_email ON users(last_name, first_name, email);
Unique Index
CREATE UNIQUE INDEX idx_unique_email ON users(email);
Setting a Primary Key (PRIMARY KEY)
ALTER TABLE users ADD PRIMARY KEY (id);
Dropping Indexes
අවශ්ය නොවන දර්ශක මකාදැමීම දත්ත ගබඩා බර අඩු කිරීමට උපකාරී වේ.
Basic Syntax
ALTER TABLE table_name DROP INDEX index_name;
Example
උදාහරණයක් ලෙස, idx_email නාමයෙන් දර්ශකයක් මැකීමට:
ALTER TABLE users DROP INDEX idx_email;
Identifying and Removing Unnecessary Indexes
Check for Unused Indexes
SELECT * FROM sys.schema_unused_indexes;
Check Table Status (Index Impact)
SHOW TABLE STATUS LIKE 'users';
Remove Unnecessary Indexes
ALTER TABLE users DROP INDEX idx_unused;
මකාදැමීමෙන් පසු, ANALYZE TABLE භාවිතා කර සංඛ්යාලේඛන යාවත්කාලීන කිරීම නිර්දේශ කරයි.
ANALYZE TABLE users;
6. Index Optimization (Performance Improvement)
සුදුසු දර්ශක කළමනාකරණය MySQL විමසුම් කාර්ය සාධනය ගණනාවක් වැඩි කළ හැක. එහෙත්, දර්ශක නිර්මාණය පමණක් ප්රමාණවත් නොවේ — සුදුසු නිර්මාණය, කළමනාකරණය, සහ නිරීක්ෂණය අවශ්ය වේ ඉහළම කාර්ය සාධනය රැක ගැනීමට.
Proper Index Design
හොඳින් නිර්මාණය කළ දර්ශක MySQL හි සෙවීමේ වේගය විශාල ලෙස වැඩි කළ හැක.
Cases Where Indexes Should Be Applied
| Recommended Use Case | Reason |
|---|---|
| Columns frequently used in WHERE clauses | Enables fast retrieval of specific data |
| Keys used in JOIN operations | Improves join performance |
| Columns used in ORDER BY / GROUP BY | Speeds up sorting and aggregation |
| Search columns in large datasets | Prevents full table scans |
Cases Where Indexes Should Not Be Applied
| Not Recommended Case | Reason |
|---|---|
| Small tables | Full table scans may be faster |
| Columns frequently updated or deleted | Increases index maintenance cost |
| Low cardinality columns (few distinct values) | Limited performance benefit (e.g., gender, boolean flags) |
Using the Slow Query Log
මන්දගාමී විමසුම් ලොග් ඔබට දිගු කාලීන විමසුම් හඳුනා ගැනීමට සහ කුමන දර්ශක යෙදෙන්නේ නැතිදැයි විශ්ලේෂණය කිරීමට ඉඩ සලසයි.
Enable the Slow Query Log
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- Log queries taking longer than 2 seconds
Check the Slow Query Log
SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;
Analyze a Slow Query
EXPLAIN SELECT * FROM users WHERE last_login > '2024-01-01';
Example of Applying an Index
CREATE INDEX idx_last_login ON users(last_login);
Updating Statistics (ANALYZE & OPTIMIZE)
ANALYZE TABLE (Update Statistics)
ANALYZE TABLE users;
OPTIMIZE TABLE (Defragmentation)
OPTIMIZE TABLE users;
7. FAQ About Indexes (Frequently Asked Questions)
MySQL දර්ශක දත්ත ගබඩා කාර්ය සාධනය වැඩිදියුණු කිරීම සඳහා අත්යවශ්ය යන්ත්රණයකි. එහෙත්, සුදුසු ලෙස කළමනාකරණය නොකළහොත්, ඒවා විරුද්ධ ප්රතිඵලයක් ලබා දිය හැක. මෙම කොටසේ, MySQL දර්ශක සම්බන්ධ නිතර අසන ප්රශ්න (FAQ) සහ පිළිතුරු සාරාංශ කර ඇත.
Will search speed improve as I add more indexes?
A. අනිවාර්ය නොවේ.
දර්ශක විමසුම් කාර්ය සාධනය වැඩිදියුණු කිරීම සඳහා නිර්මාණය කර ඇත, නමුත් බොහෝ දර්ශක එකතු කිරීම දත්ත ගබඩා කාර්ය සාධනය අඩු කරයි.
- ලියන පූර්ණභාරය (INSERT, UPDATE, DELETE) වැඩි කරයි
- දර්ශකයක් භාවිතා වේද යන්න විමසුම මත පදනම් වේ
- අවශ්ය නොවන දර්ශක මතකය භාවිතා කරයි
Which columns should have indexes?
A. පහත සඳහන් වර්ගයේ තීරු වල දර්ශක යෙදීම ප්රයෝජනවත් වේ:
| Recommended Columns | Reason |
|---|---|
| Columns frequently searched in WHERE clauses | Faster data retrieval |
| Columns used in JOIN operations | Optimizes table joins |
| Columns used in ORDER BY / GROUP BY | Improves sorting and aggregation performance |
Are indexes created automatically?
A. සමහර දර්ශක ස්වයංක්රීයව නිර්මාණය වේ, නමුත් අනෙකුත් මැනුවලින් එකතු කළ යුතුය.
ස්වයංක්රීයව නිර්මාණය කරන ලද දර්ශක
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- PRIMARY KEY index
email VARCHAR(255) UNIQUE -- Index automatically created by UNIQUE constraint
);
අතින් නිර්මාණය කරන ලද දර්ශක
CREATE INDEX idx_email ON users(email);
B-Tree, Hash, සහ FULLTEXT දර්ශක අතර තෝරා ගැනීමට මට කෙසේද?
| Index Type | Characteristics | Typical Use Case |
|---|---|---|
| B-Tree Index | Supports range searches | WHERE clauses, ORDER BY, JOIN |
| Hash Index | Exact match only (=) | High-speed lookups |
| FULLTEXT Index | Designed for text searching | Article search, full-text blog search |
දර්ශකවල ප්රමාණය පරීක්ෂා කිරීමට මට කෙසේද?
SHOW TABLE STATUS LIKE 'users';
දර්ශකයක් භාවිතා කරමින් තිබේදැයි පරීක්ෂා කිරීමට මට කෙසේද?
EXPLAIN SELECT * FROM users WHERE email = 'example@example.com';
දර්ශකයක් ඉවත් කිරීමට කවදාද?
| Indexes to Remove | Reason |
|---|---|
| Unused indexes | Wastes memory |
| Duplicate indexes | Redundant if similar indexes already exist |
අවශ්ය නොවන දර්ශකයක් ඉවත් කරන්න
ALTER TABLE users DROP INDEX idx_unused;
8. සාරාංශය
මෙම ලිපියේ, අපි MySQL දර්ශක ගැන සම්පූර්ණයෙන්ම ආවරණය කළෙමු—මූලික කරුණු, සත්යාපන ක්රම, කළමනාකරණය, වැඩිදියුණු කිරීම, සහ නිතර අසන ප්රශ්න. මෙහිදී, අපි එක් එක් කොටසෙහි ප්රධාන කරුණු සමාලෝචනය කර, MySQL දර්ශක කළමනාකරණය වැඩිදියුණු කිරීම සඳහා හොඳම ක්රියාමාර්ග සාරාංශ කරමු.
ප්රධාන සාරාංශ
MySQL දර්ශකයක් කුමක්ද?
- දර්ශකය යනු දත්ත ලබා ගැනීම වේගවත් කරන යන්ත්රයක් වේ.
- B-Tree, Hash, සහ FULLTEXT දර්ශක ඇතුළත් විවිධ වර්ග ඇත.
- WHERE කොටස, JOIN, සහ ORDER BY හි භාවිතා වන තීරුවලට යෙදූ විට ඉතා ප්රයෝජනවත් වේ.
MySQL දර්ශක පරීක්ෂා කිරීමේ ක්රම
SHOW INDEXවිධානය භාවිතා කර දර්ශක ලැයිස්තුව බලන්න.INFORMATION_SCHEMA.STATISTICSභාවිතා කර විස්තරාත්මක තොරතුරු ලබා ගන්න.
දර්ශක භාවිතය පරීක්ෂා කිරීම
EXPLAINභාවිතා කර ප්රශ්නයක් භාවිතා කරන දර්ශක පෙන්වන්න.- Performance Schema භාවිතා කර දර්ශක භාවිතය ප්රමාණය විශ්ලේෂණය කරන්න.
දර්ශක කළමනාකරණය
CREATE INDEXභාවිතා කර සුදුසු තීරුවලට දර්ශක යෙදීම.ALTER TABLE DROP INDEXභාවිතා කර අවශ්ය නොවන දර්ශක ඉවත් කිරීම.SHOW TABLE STATUSසමඟ දර්ශක ප්රමාණය පරීක්ෂා කර, අවශ්ය නම් වැඩිදියුණු කරන්න.
දර්ශක වැඩිදියුණු කිරීම (කාර්ය සාධන වැඩිදියුණු කිරීම)
- නිතර භාවිතා වන WHERE, JOIN, සහ ORDER BY තීරුවලට දර්ශක යෙදීම.
- Slow Query Log භාවිතා කර මන්දගාමී ප්රශ්න හඳුනාගෙන වැඩිදියුණු කරන්න.
ANALYZE TABLEසහOPTIMIZE TABLEසමඟ සංඛ්යාලේඛන යාවත්කාලීන කරන්න.
MySQL දර්ශක කළමනාකරණ හොඳම ක්රියාමාර්ග
- දර්ශක යෙදීමට පෙර ප්රශ්න බොත්තල (bottlenecks) හඳුනා ගන්න.
- සුදුසු දර්ශක තෝරන්න.
- තනි තීරුව සහ සංයුක්ත දර්ශක නිවැරදිව භාවිතා කරන්න.
- අද්විතීය අවශ්යතා ඇති තැන
UNIQUE INDEXභාවිතා කරන්න.
- නිතර අවශ්ය නොවන දර්ශක ඉවත් කරන්න.
SHOW INDEXසහschema_unused_indexesභාවිතා කර භාවිතා නොවන දර්ශක හඳුනා ගන්න.
- නිතර සංඛ්යාලේඛන යාවත්කාලීන කරන්න.
ANALYZE TABLEභාවිතා කර සංඛ්යාලේඛන යාවත්කාලීන කරන්න.OPTIMIZE TABLEක්රියාත්මක කර මකාදැමීම සහ යාවත්කාලීන කිරීමෙන් ඇති වූ කොටස් ව්යුහය (fragmentation) විසඳන්න.
ඊළඟ පියවර
✅ ප්රායෝගික පරීක්ෂා ලැයිස්තුව
✅ ඔබ SHOW INDEX භාවිතා කර වත්මන් දර්ශක පරීක්ෂා කර තිබේද?
✅ ඔබ Slow Query Log සක්රිය කර මන්දගාමී ප්රශ්න හඳුනාගෙන තිබේද?
✅ ඔබ EXPLAIN භාවිතා කර ප්රශ්න ක්රියාත්මක සැලැස්ම විශ්ලේෂණය කර තිබේද?
✅ ඔබ අවශ්ය නොවන දර්ශක ඉවත් කර, සුදුසු දර්ශක නිර්මාණය කර තිබේද?
✅ ඔබ ANALYZE TABLE භාවිතා කර සංඛ්යාලේඛන යාවත්කාලීන කර තිබේද?
අවසාන සාරාංශය
- නිසි ලෙස කළමනාකරණය කරන MySQL දර්ශක සෙවීමේ කාර්ය සාධනය ගණනාවෙන් වැඩිදියුණු කරයි.
- Slow Query Log සහ EXPLAIN භාවිතා කර දර්ශක ප්රභාවය විශ්ලේෂණය කර, ඒ අනුව වැඩිදියුණු කරන්න.
- සංඛ්යාලේඛන නිතර යාවත්කාලීන කර, වගු වැඩිදියුණු කිරීමෙන් දත්ත ගබඩා කාර්ය සාධනය රැකගන්න.
මෙය MySQL දර්ශක කළමනාකරණ සම්පූර්ණ මාර්ගෝපදේශය අවසන් කරයි.
මෙම දැනුම භාවිතා කර වේගවත් හා වැඩි කාර්යක්ෂමතාවක් ඇති දත්ත ගබඩා පද්ධති ගොඩනඟන්න. 💡🚀


