- 1 MySQL හි “Schema” යනු කුමක්ද? (පදවිභාග සහ මූලික සංකල්ප)
- 2 [Basics] MySQL Schema (List, Switch, Tables) පරීක්ෂා කිරීමේ ක්රමය
- 3 [Advanced] INFORMATION_SCHEMA භාවිතයෙන් විස්තරාත්මක තොරතුරු ලබා ගැනීම
- 4 [Expert] InnoDB Metadata සහ sys Schema භාවිතය (MySQL 8.0+)
- 5 [Quick Reference by Use Case] නිර්දේශිත විධාන
- 6 [Troubleshooting and Error Handling]
- 7 FAQ (නිතර අසන ප්රශ්න)
- 7.1 Q1. MySQL schema එක Oracle හෝ PostgreSQL හි schema වලින් කෙසේ වෙනස් වේ?
- 7.2 Q2. විස්තරාත්මක තීරුවේ තොරතුරු ලබා ගැනීමට අතිශය කාර්යක්ෂම ක්රමය කුමක්ද?
- 7.3 Q3. අක්ෂර සමුහය හෝ සම්බන්ධකය (collation) පරීක්ෂා කිරීමට කෙසේද?
- 7.4 Q4. මට තොරතුරු බැලීමට අවසර නැත. මට මොකද කළ යුතුද?
- 7.5 Q5. GUI මෙවලම් වල schema තොරතුරු පරීක්ෂා කිරීමට කෙසේද?
- 8 නිගමනය සහ සම්බන්ධිත සබැඳි
MySQL හි “Schema” යනු කුමක්ද? (පදවිභාග සහ මූලික සංකල්ප)
බොහෝ ආරම්භකයන් MySQL භාවිතා කිරීම අරඹන විට, හෝ වෙනත් දත්ත ගබඩා පද්ධති වලින් මාරු වන විට, “schema” යන පදය ගැන ගැටළුවට මුහුණ පාති. “schema” යන පදය විවිධ දත්ත ගබඩා පද්ධති තුළ භාවිතා කරන නමුත්, එහි අර්ථය පද්ධතිය අනුව වෙනස් විය හැක. ආරම්භයේ සිට මෙය පැහැදිලිව අවබෝධ කර ගැනීම අත්යවශ්යය.
මුලින්ම, “schema” යනු “ව්යුහය” හෝ “නිර්මාණය” යන අර්ථය දරයි. සම්බන්ධිත දත්ත ගබඩා කළමනාකරණ පද්ධති (RDBMS) සන්දර්භයේ, එය දත්ත ගබඩාවක් තුළ ඇති සම්පූර්ණ ව්යුහය, වගු සැකසුම්, තීරුවේ තොරතුරු, ඉන්ඩෙක්සස්, දෘශ්ය, ගබඩා කරන ක්රියාවලි සහ තවත් බොහෝ දේ යන අර්ථය ලබා දෙයි.
කෙසේ වෙතත්, MySQL හි “schema” සහ “database” යන පද දෙකම 거의 එකම ලෙස සැලකේ. නිල MySQL ලේඛනය පැහැදිලිව “schema = database” යනුවෙන් සඳහන් කරයි, එම නිසා දෙකම අන්යෝන්යව භාවිතා වේ. උදාහරණයක් ලෙස, schema එකක් සාදන විට, ඔබ CREATE DATABASE විධානය භාවිතා කරයි.
වෙනත් RDBMS පද්ධතිවල, Oracle සහ PostgreSQL වැනි, “schema” සහ “database” අතර පැහැදිලි වෙනස්කම් ඇත:
- Oracle : schema එකක් යනු පරිශීලකයකට අයත් වස්තු එකතුවයි. database එක යනු භෞතික පූරණය වන අතර, එහි බහු schema පවතී.
- PostgreSQL : එක database එක තුළ බහු schema (namespaces) පවතින අතර, ඒවා වගු සහ දෘශ්ය වර්ගීකරණය හා කළමනාකරණය සඳහා භාවිතා වේ.
එයට විරුද්ධව, MySQL හි “database” = “schema” වේ. පැහැදිලි කිරීමේදී කුමන පදය භාවිතා කරත්, සැබෑ ක්රියාකාරකම් සහ කළමනාකරණ ක්රම එකම වේ. එබැවින් MySQL හි “schema පරීක්ෂා කිරීම” යනු “database පරීක්ෂා කිරීම” යන අර්ථය වේ.
ඉංග්රීසි ලේඛන වල, “schema” සහ “database” දෙකම පෙනේ, සහ MySQL මාර්ගෝපදේශයන්හි ඒවා අන්යෝන්යව භාවිතා වේ. ප්රායෝගිකව, MySQL ලේඛනයේ “schema” යනුවෙන් දැක්කාම, එය “database” යන අර්ථයෙන් ගත හැක.
MySQL-විශේෂ පද භාවිතය නිවැරදිව අවබෝධ කරගත් පසු, ඔබට පද්ධති කළමනාකරණය හෝ තාක්ෂණික ලේඛන යොමු කිරීමේදී ගැටළුවක් නොවෙයි. ඊළඟ කොටසෙන්, MySQL හි schema (database) පරීක්ෂා කිරීමේ ක්රමය පියවරෙන් පියවර පැහැදිලි කරමු.
[Basics] MySQL Schema (List, Switch, Tables) පරීක්ෂා කිරීමේ ක්රමය
“MySQL” හි “schema (database)” අන්තර්ගතය අවබෝධ කර ගැනීමට, මූලික විධාන සහ ක්රියාවලි දැන ගැනීම වැදගත්ය. මෙම කොටස තුළ, schema ලැයිස්තුගත කිරීමෙන් වගු සහ තීරු තොරතුරු පරීක්ෂා කිරීම දක්වා සාමාන්ය ක්රියාකාරකම් විස්තරාත්මකව පැහැදිලි කරමු. ආරම්භකයන්ටත් පහසුවෙන් අනුගමනය කළ හැක.
Schema (Database) ලැයිස්තුගත කිරීම
MySQL හි, ඔබට සේවාදායකයෙහි බහු database (schema) සෑදිය හැක.
එම ලැයිස්තුව බැලීමට, පහත විධානය භාවිතා කරන්න:
SHOW DATABASES;
මෙම විධානය ක්රියාත්මක කළ විට, සේවාදායකයේ සියලු schema (database) නාමයන් පෙන්වයි. සමහර පරිසරවල SHOW SCHEMATA; භාවිතා කළ හැක, එය SHOW DATABASES; සමඟ එකම ප්රතිඵල ලබා දෙයි. අනුවාද වෙනස්කම් ගැන සැලකිල්ලට ගත යුතු නම්, නිල මාර්ගෝපදේශය බලන්න.
ක්රියාත්මක Schema (Database) මාරු කිරීම
විශේෂිත schema (database) එකක් මත ක්රියා කිරීමට, පළමුව එය තෝරා ගත යුතුය.
Schema මාරු කිරීම සඳහා:
USE database_name;
උදාහරණයක් ලෙස, sample_db නමැති schema එකක් භාවිතා කිරීමට, පහත ලෙස ඇතුළත් කරන්න:
USE sample_db;
ඊළඟ සියලු ක්රියාකාරකම් මෙම තෝරාගත් schema (database) සඳහා පමණක් ක්රියාත්මක වේ.
වගු සහ තීරු ව්යුහ පරීක්ෂා කිරීම
එක් එක් schema එකේ බහු වගු පවතී.
වගු ලැයිස්තුගත කිරීම සඳහා:
SHOW TABLES;
මෙම විධානය, තෝරාගත් schema තුළ ඇති සියලු වගු නාමයන් පෙන්වයි.
විශේෂිත වගුවක (තීරු නාම, දත්ත වර්ග, NULL සැකසුම් ආදිය) ව්යුහය පරීක්ෂා කිරීමට, පහත විධාන වලින් එකක් භාවිතා කරන්න:
DESCRIBE table_name;
හෝ
SHOW COLUMNS FROM table_name;
දෙකම تقریباً එකම ප්රතිඵල ලබා දෙයි. උදාහරණයක් ලෙස, users වගුවේ තීරු ව්යුහය පරීක්ෂා කිරීමට, පහත ඇතුළත් කරන්න:
DESCRIBE users;
Schema විස්තරාත්මක සැකසුම් පරීක්ෂා කිරීම
Schema-විශේෂිත සැකසුම් (උදාහරණයක් ලෙස අක්ෂර සමුහය සහ collation) සමාලෝචනය කිරීමට, පහත විධානය භාවිතා කරන්න:
SHOW CREATE DATABASE database_name;
මෙම ප්රකාශනය schema (දත්ත සමුදාය) නිර්මාණය කිරීම සඳහා භාවිතා වන SQL ප්රකාශනය ප්රදර්ශනය කරයි. එය විශේෂයෙන්ම අක්ෂර සංකේතනය සහ collation සැකසුම් සත්යාපනය කිරීමට ගැලපෙන අතර, සැකසුම් සම්බන්ධ ගැටලු වැළැක්වීමට උපකාරී වේ.
ප්රධාන කරුණු
- සියලුම මූලික පරීක්ෂණ කාර්යයන් සම්මත MySQL ප්රකාශන භාවිතයෙන් සිදු කළ හැකිය.
- ප්රතිඵල ටර්මිනලයේ (ප්රකාශන පථයේ) සෘජුව ප්රදර්ශනය වන අතර, ඔබට කාර්යක්ෂමව ඉදිරියට යා හැකිය.
- බොහෝ කාර්යයන් MySQL Workbench හෝ phpMyAdmin වැනි GUI මෙවලම් භාවිතයෙන්ද සිදු කළ හැකි වුවද, CLI ප්රකාශන troubleshooting කිරීමේදී බොහෝ විට වඩා විශ්වාසනීය වේ.
මෙම කොටසේ හඳුන්වා දෙන ප්රකාශන MySQL සමඟ නිතිපතා වැඩ කරන ඕනෑම කෙනෙකු සඳහා මූලික දැනුමකි.
[Advanced] INFORMATION_SCHEMA භාවිතයෙන් විස්තරාත්මක තොරතුරු ලබා ගැනීම
මූලික MySQL ප්රකාශන schema සහ table ව්යුහයන් පරීක්ෂා කිරීමට ඉඩ සලසන අතර, වැඩි විස්තරාත්මක තොරතුරු හෝ bulk extraction සඳහා INFORMATION_SCHEMA භාවිතා කිරීම යෝග්යමයි. INFORMATION_SCHEMA යනු MySQL server තුළ අභ්යන්තරව කළමනාකරණය කරන metadata සම්මත SQL tables ලෙස යොමු කිරීමට ඉඩ සලසන system database එකකි.
එය අවශ්ය තොරතුරු SQL-අඩංගුවෙන් නම්යශීලීව ලබා ගැනීමට ඉඩ සලසන බැවින්, automation සහ reporting සඳහා ඉතා උපකාරී වේ.
INFORMATION_SCHEMA යනු කුමක්ද?
INFORMATION_SCHEMA යනු MySQL හි අත්යවශ්යයෙන්ම ඇතුළත් system databases වලින් එකකි.
එහි “SCHEMATA,” “TABLES,” සහ “COLUMNS” වැනි tables ඇති අතර, ඒවා databases (schemas), tables, සහ columns පිළිබඳ metadata ගබඩා කරයි.
ඔබට මෙම tables සම්මත SELECT ප්රකාශන භාවිතයෙන් query කර අභ්යන්තර සැකසුම් සහ ව්යුහාත්මක විස්තර ලබා ගත හැකිය.
ප්රධාන භාවිතා:
- විස්තරාත්මක schema සහ table තොරතුරු ලබා ගැනීම
- data types, constraints, සහ default values පරීක්ෂා කිරීම
- filters සහ aggregation සමඟ නම්යශීලී extraction සිදු කිරීම
Schema තොරතුරු ලබා ගැනීම
සියලුම schemas (databases) හි ලැයිස්තුවක් සහ ගුණාංග ලබා ගැනීම සඳහා:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
මෙම query schema නම් (SCHEMA_NAME), default character sets (DEFAULT_CHARACTER_SET_NAME), collations (DEFAULT_COLLATION_NAME), සහ අනෙකුත් සැකසුම් විස්තර ප්රතිදානය කරයි.
Table සහ Column තොරතුරු ලබා ගැනීම
bulk වශයෙන් විස්තරාත්මක table හෝ column තොරතුරු ලබා ගැනීම සඳහා, “TABLES” සහ “COLUMNS” tables භාවිතා කරන්න.
උදාහරණය: Schema එකකින් සියලුම table තොරතුරු ලබා ගැනීම
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name';
උදාහරණය: විස්තරාත්මක column තොරතුරු ලබා ගැනීම
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_NAME = 'target_table_name';
මෙය column නම් (COLUMN_NAME), data types (DATA_TYPE), NULL සැකසුම් (IS_NULLABLE), default values (COLUMN_DEFAULT), සහ උපරිම දිග (CHARACTER_MAXIMUM_LENGTH) ලබා දෙයි.
ප්රායෝගික Filter උදාහරණ
INFORMATION_SCHEMA WHERE clauses භාවිතයෙන් නම්යශීලී filtering ඉඩ සලසයි.
උදාහරණ 1: Schema එකකින් සියලුම INT-type columns extract කිරීම
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND DATA_TYPE = 'int';
උදාහරණ 2: නිශ්චිත collation භාවිතා කරන tables සෙවීම
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_COLLATION LIKE 'utf8mb4%';
INFORMATION_SCHEMA භාවිතයෙන් MySQL හි අභ්යන්තර ව්යුහය SQL-අඩංගුවෙන් නම්යශීලීව extract කිරීම සහ විශ්ලේෂණය කිරීමට ඉඩ සලසයි.
[Expert] InnoDB Metadata සහ sys Schema භාවිතය (MySQL 8.0+)
schema සහ table තොරතුරු ලබා ගැනීමට පුරුදු වූ පසු, ඔබට උසස් කළමනාකරණය සහ performance විශ්ලේෂණය කරන්න පුළුවන්. විශේෂයෙන්ම InnoDB storage engine භාවිතා කිරීමේදී හෝ විශාල පරිමාණ පද්ධති ක්රියාත්මක කිරීමේදී, INFORMATION_SCHEMA හි InnoDB tables සහ sys schema ඉතා උපකාරී වේ.
InnoDB Engine Metadata
InnoDB යනු MySQL හි අත්යවශ්ය storage engine එකක් වන අතර, transactions, row-level locking, සහ foreign key constraints සඳහා සහාය දක්වයි.
උපකාරී InnoDB-සම්බන්ධ tables ඇතුළත්:
INNODB_TABLES: InnoDB-කළමනාකරණය කරන වගු පිළිබඳ මූලික තොරතුරුINNODB_COLUMNS: තීරුවේ තොරතුරුINNODB_INDEXES: දර්ශක විස්තරINNODB_LOCKS: වත්මන් ලොක් තොරතුරුINNODB_TRX: ක්රියාත්මක ගනුදෙනු
උදාහරණය: වත්මන් ලොක් තත්ත්වය පරීක්ෂා කරන්න
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
sys Schema භාවිතය
MySQL 5.7 සහ ඊට පසු (විශේෂයෙන් 8.0+ ) හි පෙරනිමි ලෙස ලබා ගත හැකි sys schema, INFORMATION_SCHEMA සහ performance schema දත්ත සඳහා මනුෂ්ය-හිතකාමී සාරාංශ දර්ශන ලබා දේ.
සාමාන්යයෙන් භාවිතා වන දර්ශන:
sys.schema_table_statistics: වගු ප්රවේශ සංඛ්යාලේඛනsys.schema_index_statistics: දර්ශක භාවිතා සංඛ්යාලේඛනsys.innodb_lock_waits: ලොක් රැඳී සිටීමේ තොරතුරුsys.user_summary: පරිශීලක ක්රියාකාරකම් සාරාංශ
උදාහරණය: වත්මන් ලොක් රැඳී සිටීම පරීක්ෂා කරන්න
SELECT * FROM sys.innodb_lock_waits;
උදාහරණය: සියලු වගු සඳහා කියවීම/ලියීම සංඛ්යාලේඛන පරීක්ෂා කරන්න
SELECT * FROM sys.schema_table_statistics;

සාරාංශය
INFORMATION_SCHEMA සහ sys schema යනු SQL මගින් MySQL හි අභ්යන්තර තත්ත්වය දර්ශනය කරන ශක්තිමත් මෙවලම් වේ.
ඉන්නොඩ්බ් භාවිතා කරන නිෂ්පාදන පරිසරවල හෝ උසස් මෙහෙයුම් සහ කාර්ය සාධන අභිප්රේරණය සඳහා විශේෂයෙන් ප්රයෝජනවත් වේ.
[Quick Reference by Use Case] නිර්දේශිත විධාන
MySQL හි schema හෝ වගු ව්යුහ පරීක්ෂා කරන විට, ඔබේ ඉලක්කයට ගැළපෙන නිවැරදි විධානය තේරීම කාර්යක්ෂමතාවයට මූලික වේ. පහත වගුවේ අරමුණ අනුව සාමාන්යයෙන් භාවිතා වන විධාන සාරාංශ කර ඇත.
| Purpose | Command / SQL Example | Notes |
|---|---|---|
| List all schemas on the server | SHOW DATABASES; | Most basic command |
| List tables in the selected schema | SHOW TABLES; | Displays tables in current schema |
| Retrieve all table info in a schema | SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'schema_name'; | Includes table attributes |
| Quickly check column definitions | DESCRIBE table_name;SHOW COLUMNS FROM table_name; | Shows column names and types |
| Retrieve detailed column info | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'schema_name' AND TABLE_NAME = 'table_name'; | Includes NULL and default values |
| Check schema creation settings | SHOW CREATE DATABASE schema_name; | Includes COLLATE and CHARSET |
| Check table creation details | SHOW CREATE TABLE table_name; | Includes indexes and foreign keys |
| Check InnoDB locks and transactions | SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;SELECT * FROM sys.innodb_lock_waits; | Useful for InnoDB |
| Check table/index access statistics | SELECT * FROM sys.schema_table_statistics;SELECT * FROM sys.schema_index_statistics; | Uses sys schema |
| Check user privileges | SHOW GRANTS FOR 'username'@'hostname'; | Verify user permissions |
[Troubleshooting and Error Handling]
MySQL හි schema හෝ වගු පරීක්ෂා කිරීමට උත්සාහ කරන විට, විධාන ක්රියාත්මක නොවීම හෝ තොරතුරු පෙන්වීම නොවීම වැනි ගැටළු මුහුණට එන්න පුළුවන්.
අවසර දෝෂ (ප්රවේශය ප්රතික්ෂේප කරන ලදී)
උදාහරණ දෝෂ:
ERROR 1044 (42000): Access denied for user 'user'@'host' to database 'mysql'
ERROR 1142 (42000): SHOW command denied to user 'user'@'host' for table 'database'
විසඳුම්:
- පරිපාලක ගිණුමක් සමඟ පිවිසෙන්න.
- අවශ්ය SHOW හෝ SELECT අවසර ඉල්ලන්න.
GRANT SHOW DATABASES ON *.* TO 'user'@'host'; FLUSH PRIVILEGES;
වත්මන් අවසර පරීක්ෂා කරන්න:
SHOW GRANTS FOR 'user'@'host';
දත්ත ගබඩා හෝ වගුව හමු නොවීය
උදාහරණය:
ERROR 1049 (42000): Unknown database 'db_name'
ERROR 1146 (42S02): Table 'db_name.table_name' doesn't exist
අක්ෂර දෝෂ, අකුරු සංවේදනය, සහ පවතින බව තහවුරු කිරීම සඳහා පරීක්ෂා කරන්න:
SHOW DATABASES;
SHOW TABLES;
අනුවාද වෙනස්කම්
කීප විශේෂාංග MySQL අනුවාදය මත පදනම් වේ.
අනුවාද පරීක්ෂා කරන්න:
SELECT VERSION();
වෙනත් ගැටළු
- ජාල/සේවාදායක ගැටළු හේතුවෙන් සම්බන්ධතා අසාර්ථකතා
- විමසුම් කාලය ඉක්මවනවා — විමසුම් සුදානම් කරන්න හෝ කාල සීමා සැකසුම් සකස් කරන්න
FAQ (නිතර අසන ප්රශ්න)
Q1. MySQL schema එක Oracle හෝ PostgreSQL හි schema වලින් කෙසේ වෙනස් වේ?
A. MySQL හි, schema = දත්ත ගබඩා. Oracle සහ PostgreSQL හි, schema සහ දත්ත ගබඩා වෙන වෙනම සංකල්ප වේ.
Q2. විස්තරාත්මක තීරුවේ තොරතුරු ලබා ගැනීමට අතිශය කාර්යක්ෂම ක්රමය කුමක්ද?
A.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name';
Q3. අක්ෂර සමුහය හෝ සම්බන්ධකය (collation) පරීක්ෂා කිරීමට කෙසේද?
A. භාවිතා කරන්න:
SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;
Q4. මට තොරතුරු බැලීමට අවසර නැත. මට මොකද කළ යුතුද?
A. සුදුසු අවසර ඉල්ලන්න. ඔබේ වත්මන් අවසර පරීක්ෂා කරන්න:
SHOW GRANTS FOR 'username'@'hostname';
Q5. GUI මෙවලම් වල schema තොරතුරු පරීක්ෂා කිරීමට කෙසේද?
A. MySQL Workbench හෝ phpMyAdmin හි, schema වම් පාර්ශවයේ නාවික පැනලයේ පෙන්වයි. ඔබට SQL ටැබ් එකේ SQL විධාන ධාවනය කළ හැකිය.
නිගමනය සහ සම්බන්ධිත සබැඳි
සාරාංශය
- MySQL හි, schema = database.
- මූලික පරීක්ෂණයන්
SHOW DATABASES;,SHOW TABLES;, සහDESCRIBE table_name;භාවිතයෙන් සිදු කළ හැක. - INFORMATION_SCHEMA සහ sys schema ගැඹුරු අවබෝධය සහ කාර්ය සාධන දෘශ්යතාවය ලබා දෙයි.
- බොහෝ ගැටළු අවසර, නාමකරණ දෝෂ, හෝ අනුවාද වෙනස්කම් වලින් උද्भව වේ.
- කාර්යක්ෂම මෙහෙයුම් සඳහා ඉක්මන් යොමු කිරීමේ විධාන සලසා තබා ගන්න.
සම්බන්ධ සබැඳි
අවසාන වචන
අපි බලාපොරොත්තු වෙමු මෙම මාර්ගෝපදේශය ඔබට දෛනික මෙහෙයුම් වල MySQL schema සහ වගු හොඳින් කළමනාකරණය කිරීමට උපකාරී වේවා. නව MySQL අනුවාද සහ මෙහෙයුම් අවශ්යතා වර්ධනය වන විට ඔබේ දැනුම නවීකරණය කරගෙන යන්න.


