MySQL හි බහු පේළි ඇතුළත් කිරීමේ ක්‍රමය: කාර්යක්ෂම බල්ක් INSERT සහ කාර්ය සාධන සුධාරණය

目次

1. Introduction

MySQL යනු වෙබ් යෙදුම් සහ දත්ත සමුදා-චාලිත පද්ධති වල විශාල ලෙස භාවිතා වන දත්ත සමුදා කළමනාකරණ පද්ධති අතරින් එකකි. දත්ත කාර්යක්ෂමව කළමනාකරණය කිරීම සඳහා, නිසි ඇතුළත් කිරීම (INSERT) ක්‍රියාකාරකම් අත්‍යවශ්‍ය වේ. විශාල ප්‍රමාණයේ දත්ත සමඟ කටයුතු කරන විට, පේළි එකින් එක ඇතුළත් කිරීම අධික කාලය හා පද්ධති සම්පත් භාවිතා කරනු ඇත.

මෙම ලිපිය MySQL හි එක්වරම බහු පේළි දත්ත ඇතුළත් කිරීමේ විස්තරාත්මක ක්‍රමය පැහැදිලි කරයි. මෙම ක්‍රමය භාවිතා කිරීමෙන්, ඔබට ඇතුළත් කිරීමේ කාර්යක්ෂමතාවය ගණනාවක් වැඩි කර, සමස්ත පද්ධති කාර්ය සාධනය වැඩිදියුණු කළ හැක. පැහැදිලි කිරීමේ අනුක්‍රමය මූලික සංකල්පයන් සිට උසස් තාක්ෂණයන් දක්වා යයි, එබැවින් ආරම්භකයන්ටත් පහසු වේ.

මෙම ලිපිය විශේෂයෙන් පහත සඳහන් අය සඳහා ප්‍රයෝජනවත් වේ:

  • “INSERT ප්‍රකාශන වඩා කාර්යක්ෂමව භාවිතා කිරීමට අවශ්‍යයි”
  • “දත්ත ඇතුළත් කිරීමේ කාලය අඩු කිරීමට අවශ්‍යයි”
  • “විශාල දත්ත කට්ටලයන් කළමනාකරණය කිරීමේ ක්‍රමය ඉගෙන ගැනීමට අවශ්‍යයි”

ඊළඟ කොටස්වල, MySQL හි බහු පේළි ඇතුළත් කිරීමේ සුදුසු ක්‍රමයන්, ප්‍රායෝගික කේත උදාහරණ සහ වැදගත් සැලකිලිමත් කරුණු සමඟ සවිස්තරාත්මකව පැහැදිලි කරමු. ඊළඟ කොටසෙහි, එක පේළියක් ඇතුළත් කිරීමේ මූලික කරුණු සමාලෝචනය කරමු.

2. Basic INSERT Statement Syntax

MySQL වෙත දත්ත ඇතුළත් කිරීමේදී, පළමුව මූලික එක-පේළි INSERT ප්‍රකාශය අවබෝධ කර ගැනීම වැදගත් වේ. වාක්‍ය රචනය ඉතා සරල වුවද, එය පාලනය කිරීම MySQL ක්‍රියාකාරකම් සමඟ සුවපහසු වීමට පළමු පියවරයි. මෙහිදී, මූලික වාක්‍ය රචනය පැහැදිලි කර, ප්‍රායෝගික උදාහරණ ලබා දෙනු ඇත.

Basic INSERT Syntax

එක පේළියක් වගුවකට ඇතුළත් කිරීමේ මූලික වාක්‍ය රචනය පහත පරිදි වේ:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
  • table_name : දත්ත ඇතුළත් කරන වගුවේ නාමය.
  • column1, column2, … : ඇතුළත් කරන අගයන් ගබඩා වන තීරුවේ නාමයන්.
  • value1, value2, … : සෑම තීරුවකටම සම්බන්ධ අගයන්.

Basic Example: Inserting Customer Information

“customers” නමින් වගුවක් ඇතැයි ගනිමු (පහත දැක්වෙයි).

idnameemail
1Taro Yamadataro@example.com

මෙම වගුවට නව ගනුදෙනුකරු රෙකෝඩ් එකක් ඇතුළත් කිරීමට, පහත INSERT ප්‍රකාශය භාවිතා කරන්න:

INSERT INTO customers (id, name, email)
VALUES (2, 'Hanako Tanaka', 'hanako@example.com');

ක්‍රියාත්මක කිරීමෙන් පසු, “customers” වගුව මෙසේ පෙනේ:

idnameemail
1Taro Yamadataro@example.com
2Hanako Tanakahanako@example.com

Omitting Column Names

සියලු තීරුවලට අගයන් ඇතුළත් කරන විට, තීරු ලැයිස්තුව නොදැක්විය හැක. එම අවස්ථාවේ, අගයන් වගුවේ සැකසුම් අනුව නිශ්චිත අනුක්‍රමයෙන් තිබිය යුතුය.

INSERT INTO customers
VALUES (3, 'Ichiro Suzuki', 'ichiro@example.com');

Important Notes

  • Data Type Matching : ඇතුළත් කරන අගයන්ගේ දත්ත වර්ගය, සෑම තීරුවකටම නියමිත දත්ත වර්ගයට ගැළපිය යුතුය.
  • Handling NULL Values : තීරුවක් NULL අගයන් ඉඩ දී ඇත්නම්, අගයක් නියම නොකර NULL ලෙස ඇතුළත් කළ හැක.
  • Default Values : තීරුවකට පෙරනිමි අගයක් නියම කර තිබේ නම්, අගයක් ලබා නොදෙන විට එය ස්වයංක්‍රීයව ඇතුළත් වේ.

Summary

මූලික INSERT ප්‍රකාශය අවබෝධ කර ගැනීම MySQL හි දත්ත ක්‍රියාකාරකම් සSmoothව සිදු කිරීමට මූලික වේ. එක-පේළි ඇතුළත් කිරීමේ පරිපූර්ණතාවය, ඊළඟ විෂයය වන එක්වරම බහු පේළි ඇතුළත් කිරීමේ පදනම වේ.

3. How to Insert Multiple Rows at Once

MySQL හි, එක් SQL ප්‍රකාශයක් මඟින් බහු පේළි දත්ත ඇතුළත් කළ හැක. මෙම ක්‍රමය නැවත නැවත INSERT ප්‍රකාශන ක්‍රියාත්මක කිරීමට වඩා කාර්යක්ෂම වන අතර, දත්ත සමුදායේ පූරණය අඩු කරයි. මෙම කොටසෙහි, බහු-පේළි ඇතුළත් කිරීමේ වාක්‍ය රචනය පැහැදිලි කර, ප්‍රායෝගික උදාහරණ ලබා දෙනු ඇත.

Basic Syntax for Multi-Row Inserts

බහු පේළි එක්වරම ඇතුළත් කිරීමට, පහත වාක්‍ය රචනය භාවිතා කරන්න:

INSERT INTO table_name (column1, column2, ...)
VALUES
(value1_1, value1_2, ...),
(value2_1, value2_2, ...),
(value3_1, value3_2, ...);
  • සෑම පේළියක දත්තම වටකුරු (parentheses) තුළ සංග්‍රහ කර, පේළි අතර කොමා (,) මඟින් වෙන් කරන්න.
  • VALUES කොටස එකවර පමණක් ලියන්න.

Basic Example: Inserting Multiple Customer Records

පහත උදාහරණයේ, customers වගුවට එක් ප්‍රකාශයක් මඟින් බහු පේළි ඇතුළත් කරයි.

INSERT INTO customers (id, name, email)
VALUES
(4, 'Makoto Kato', 'makoto@example.com'),
(5, 'Sakura Mori', 'sakura@example.com'),
(6, 'Kei Tanaka', 'kei@example.com');

ක්‍රියාත්මක කිරීමෙන් පසු, වගුව පහත පරිදි යාවත්කාලීන වේ:

idnameemail
1Taro Yamadataro@example.com
2Hanako Tanakahanako@example.com
4Makoto Katomakoto@example.com
5Sakura Morisakura@example.com
6Kei Tanakakei@example.com

එය කාර්යක්ෂම වන්නේ ඇයි

  • අඩු කළ ජාල පූර්වභාරය : එක SQL ප්‍රකාශනයක් සමඟ බහු පේළි ඇතුළත් කිරීම නිසා, සේවාදායකය සහ සේවාලාභියා අතර ගමන් ගැලපීම් ගණන අඩු වේ.
  • වේගවත් ක්‍රියාත්මක කිරීම : ඇතුළත් කිරීම එකම ක්‍රියාවලියකින් සිදු වන බැවින්, සැකසීම වැඩි කාර්යක්ෂම වේ.

වැදගත් සටහන්

  1. තීරු සංඛ්‍යාව සහ අගයන් ගණන එකසේ විය යුතුය
  • උදාහරණය: තීරු 3ක් ඇත්නම්, එක් පේළියකටද අගයන් 3ක් තිබිය යුතුය, එසේ නොමැති නම් දෝෂයක් සිදුවේ.
  1. දත්ත වර්ග සමග අනුකූලතාව
  • සෑම අගයක්ම වගුවේ සම්බන්ධිත තීරුව සඳහා නිර්වචනය කර ඇති දත්ත වර්ගයට ගැළපිය යුතුය.
  1. නකල් යතුරු දෝෂ වලින් වැළැක්වීම
  • ප්‍රාථමික යතුර හෝ ඒකක යතුරු සීමා තිබේ නම්, ඒම යතුරු අගයන් ඇතුළත් කිරීමට උත්සාහ කිරීම දෝෂයක් ඇති කරයි.

දෝෂ වලින් වැළැක්වීම සඳහා උපදෙස්: IGNORE විකල්පය

IGNORE භාවිතා කිරීමෙන් MySQL දෝෂ ඇති කරන පේළි මඟ හැරී, ඉතිරි පේළි සැකසීම දිගටම කරයි.

INSERT IGNORE INTO customers (id, name, email)
VALUES
(7, 'Ryoichi Suzuki', 'ryoichi@example.com'),
(5, 'Duplicate User', 'duplicate@example.com'); -- This row will be ignored

සාරාංශය

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

4. විශාල ප්‍රමාණයේ දත්ත බල්ක් ඇතුළත් කිරීමේ ක්‍රමය

විශාල ප්‍රමාණයේ දත්ත ඇතුළත් කරන විට, සාමාන්‍ය INSERT ප්‍රකාශනය අකාර්යක්ෂම විය හැක. MySQL හි, LOAD DATA INFILE විධානය භාවිතා කර විශාල දත්ත කට්ටලයන් කාර්යක්ෂමව ඇතුළත් කළ හැක. මේ ක්‍රමය විශාල දත්ත ගොනු වගුවකට බල්ක් ලෙස පූරණය කිරීමට අවශ්‍ය වන විට විශේෂයෙන් ප්‍රයෝජනවත් වේ.

LOAD DATA INFILE හි මූලික ව්‍යවස්ථාව

LOAD DATA INFILE සඳහා මූලික ව්‍යවස්ථාව පහත පරිදි වේ:

LOAD DATA INFILE 'file_path'
INTO TABLE table_name
FIELDS TERMINATED BY ',' -- Field delimiter
LINES TERMINATED BY '\n' -- Line delimiter
(column1, column2, ...);
  • INFILE : ඇතුළත් කිරීමට අවශ්‍ය දත්ත අඩංගු ගොනුවේ මාර්ගය නිරූපණය කරයි.
  • FIELDS TERMINATED BY : එක් ක්ෂේත්‍ර (තීරුව) සඳහා භාවිතා වන වෙන්කරු නිරූපණය කරයි, උදාහරණයක් ලෙස කොමා ( , ).
  • LINES TERMINATED BY : එක් පේළිය (පේළිය) සඳහා භාවිතා වන වෙන්කරු නිරූපණය කරයි, උදාහරණයක් ලෙස නව පේළිය ( \n ).
  • (column1, column2, ...) : දත්ත ඇතුළත් කරන තීරු නිරූපණය කරයි.

මූලික උදාහරණය: CSV ගොනුවකින් දත්ත ඇතුළත් කිරීම

උදාහරණයක් ලෙස, ඔබට data.csv නමින් CSV ගොනුවක් පහත පරිදි තිබේ යැයි ගනිමු:

4,Makoto Kato,makoto@example.com
5,Sakura Mori,sakura@example.com
6,Kei Tanaka,kei@example.com

customers වගුවට මෙම ගොනුව ඇතුළත් කිරීමට, පහත විධානය ක්‍රියාත්මක කරන්න:

LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);

LOCAL විකල්පය භාවිතා කිරීම

CSV ගොනුව සේවාදායකය වෙනුවට සේවාලාභියාගේ යන්ත්‍රයේ තිබේ නම්, LOCAL විකල්පය භාවිතා කරන්න:

LOAD DATA LOCAL INFILE '/path/to/data.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);

කාර්ය සාධන අභිලක්ෂණ උපදෙස්

  1. ගනුදෙනු භාවිතා කරන්න
  • ගනුදෙනුවක් තුළ ඇතුළත් කිරීම ක්‍රියාත්මක කිරීමෙන්, දෝෂයක් සිදුවුවහොත් පසුපසට ආපසු යා හැක.
    START TRANSACTION;
    LOAD DATA INFILE '/path/to/data.csv' INTO TABLE customers;
    COMMIT;
    
  1. කාලිකව සූචක අක්‍රිය කරන්න
  • ඇතුළත් කිරීමට පෙර සූචක අක්‍රිය කර, පසුකාලීනව ඒවා නැවත සක්‍රිය කිරීමෙන් ඇතුළත් කිරීමේ ක්‍රියාවලිය වේගවත් වේ.
    ALTER TABLE customers DISABLE KEYS;
    LOAD DATA INFILE '/path/to/data.csv' INTO TABLE customers;
    ALTER TABLE customers ENABLE KEYS;
    
  1. SET කොටස සමඟ දත්ත පරිවර්තනය කරන්න
  • ඇතුළත් කිරීමට පෙර දත්ත පරිවර්තනය කළ හැක, උදාහරණයක් ලෙස:
    LOAD DATA INFILE '/path/to/data.csv'
    INTO TABLE customers
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (id, name, @email)
    SET email = LOWER(@email);
    

වැදගත් සටහන්

  • ගොනු අවසර : LOAD DATA INFILE භාවිතා කිරීමට, MySQL සේවාදායකයාට ඉලක්ක ගොනුවට ප්‍රවේශය ලබා ගැනීමට අවසර තිබිය යුතුය.
  • ආරක්ෂාව : LOCAL විකල්පය භාවිතා කරන විට, බාහිර ප්‍රහාරවලට එරෙහිව ප්‍රමාණවත් ආරක්ෂාවක් ඇති බව සහතික කරගන්න.

සාරාංශය

LOAD DATA INFILE යනු විශාල ප්‍රමාණයේ දත්ත කාර්යක්ෂමව ඇතුළත් කිරීම සඳහා අතිශය බලවත් මෙවලමකි. මෙම ක්‍රමය භාවිතා කිරීමෙන්, දත්ත ගබඩා මෙහෙයුම් කාර්යක්ෂමතාවය ගණනාවක් වැඩි කළ හැක.

5. කාර්ය සාධන අභිලක්ෂණ උපදෙස්

MySQL වෙත දත්ත ඇතුළත් කිරීමේදී, විශේෂයෙන් විශාල ප්‍රමාණයේ දත්ත, කාර්යක්ෂමතාවය වැඩි කිරීමට අභිලක්ෂණය අත්‍යවශ්‍ය වේ. මෙම කොටසේ, කාර්ය සාධනය උපරිම කර ගැනීමට විශේෂ ක්‍රම විස්තර කරමු.

ගනුදෙනු භාවිතා කිරීම

ගනුදෙනු භාවිතා කිරීමෙන්, ඔබට බහු INSERT මෙහෙයුම් එකට එක්කල හැක. මෙම ක්‍රමය එක් එක් ඇතුළත් කිරීමක් වෙන්ව කමිටු කිරීමේ වඩා කාර්ය සාධනය ගණනාවක් වැඩි කරයි.

උදාහරණය: ගනුදෙනුවක් භාවිතා කර INSERT

START TRANSACTION;

INSERT INTO customers (id, name, email)
VALUES (7, 'Haruto Sato', 'haruto@example.com'),
       (8, 'Yuki Aoki', 'yuki@example.com');

COMMIT;

ප්‍රධාන කරුණු:

  • ගනුදෙනුවක් තුළ බහු INSERT ප්‍රකාශ execute කර, ඒවා එකවර කමිටු කිරීමෙන් තැටි I/O අඩු කරයි.
  • දෝෂයක් සිදුවේ නම්, ROLLBACK භාවිතා කර සියලු වෙනස්කම් අවලංගු කළ හැක.

තාවකාලිකව සූචක අක්‍රිය කිරීම

දත්ත ඇතුළත් කිරීමේදී සූචක යාවත්කාලීන කරන විට, සැකසීම මන්දගාමී විය හැක. දත්ත ඇතුළත් කිරීමට පෙර සූචක තාවකාලිකව අක්‍රිය කර, පසුදා නැවත සක්‍රිය කිරීමෙන් කාර්ය සාධනය වැඩි කළ හැක.

උදාහරණය: දත්ත ඇතුළත් කිරීමට පෙර සූචක අක්‍රිය කිරීම

ALTER TABLE customers DISABLE KEYS;

INSERT INTO customers (id, name, email)
VALUES (9, 'Kaori Tanaka', 'kaori@example.com'),
       (10, 'Shota Yamada', 'shota@example.com');

ALTER TABLE customers ENABLE KEYS;

වැදගත් සටහන්:

  • මෙම තාක්ෂණය විශාල ප්‍රමාණයේ දත්ත එකවර ඇතුළත් කිරීමේදී විශේෂයෙන් ප්‍රයෝජනවත් වේ.
  • කෙවින් ද්විතීය සූචක පමණක් අක්‍රිය කළ හැක; ප්‍රාථමික යතුරු සඳහා මෙය අදාළ නොවේ.

කණ්ඩායම් සැකසීම භාවිතා කිරීම

දත්ත කුඩා කණ්ඩායම් වලට බෙදා ඇතුළත් කිරීමෙන් කාර්යක්ෂමතාවය වැඩි වේ. එකවර බොහෝ පේළි ඇතුළත් කිරීම මතක හිඟය හෝ කාලය ඉක්මවා යාම වැනි අවදානම් වැඩි කරයි.

උදාහරණය: නියමිත කණ්ඩායම් ප්‍රමාණයක් සමඟ INSERT

-- Insert 100 rows per INSERT statement
INSERT INTO customers (id, name, email)
VALUES
(11, 'Hiroshi Kato', 'hiroshi@example.com'),
(12, 'Miku Yamamoto', 'miku@example.com'),
... -- Add 98 more rows
(110, 'Rina Suzuki', 'rina@example.com');

ප්‍රධාන කරුණු:

  • කණ්ඩායම් ප්‍රමාණය (උදාහරණයක් ලෙස 100 හෝ 1000 පේළි) සකස් කර සේවාදායක භාරය අඩු කරන්න.
  • ලොග් ප්‍රමාණය සහ සේවාදායක වින්‍යාස සැකසුම් පිළිබඳ අවධානයෙන් සිටින්න.

බෆර් ප්‍රමාණ සහ වින්‍යාස සකස් කිරීම

my.cnf ගොනුවේ MySQL වින්‍යාස සැකසුම් සකස් කිරීමෙන් ඇතුළත් කිරීමේ කාර්ය සාධනය වැඩි කළ හැක.

නිර්දේශිත වින්‍යාස පරාමිතීන්:

  • innodb_buffer_pool_size : මතකයේ දත්ත වඩා කාර්යක්ෂමව කළමනාකරණය කිරීම සඳහා මෙම අගය වැඩි කරන්න.
  • bulk_insert_buffer_size : විශාල පරිමාණ ඇතුළත් කිරීමේ මෙහෙයුම් සඳහා මෙම බෆර් ප්‍රමාණය විස්තාර කරන්න.

උදාහරණය: වින්‍යාස වෙනස්කම්

[mysqld]
innodb_buffer_pool_size=1G
bulk_insert_buffer_size=512M

වින්‍යාසය වෙනස් කිරීමෙන් පසු, වෙනස්කම් ක්‍රියාත්මක වීමට MySQL සේවාදායකය නැවත ආරම්භ කරන්න.

සාරාංශය

MySQL හි දත්ත ඇතුළත් කිරීමේ කාර්ය සාධනය අභිලක්ෂණය කිරීමට, පහත ක්‍රම ප්‍රයෝජනවත් වේ:

  1. කාර්යක්ෂමතාව වැඩි කිරීමට ගනුදෙනු භාවිතා කරන්න.
  2. ඇතුළත් කිරීමේ වේගය වැඩි කිරීමට සූචක අක්‍රිය කරන්න.
  3. භාරය බෙදා හැරීමට කණ්ඩායම් සැකසීම භාවිතා කරන්න.
  4. කාර්ය සාධනය උපරිම කර ගැනීමට සේවාදායක වින්‍යාස සැකසුම් සකස් කරන්න.

මෙම තාක්ෂණ එකතු කිරීමෙන්, ඔබට විශාල පරිමාණ දත්ත ඇතුළත් කිරීම් කාර්යක්ෂමව කළ හැක.

6. වෙනත් දත්ත ගබඩා වලින් වෙනස්කම්

MySQL හි දත්ත ඇතුළත් කිරීමේ මෙහෙයුම් අනෙකුත් දත්ත සංරක්ෂක සමඟ සමානකම් බෙදා ගනී, නමුත් අනන්‍ය ලක්ෂණ ද ඇත. මෙම කොටසේදී, අපි MySQL සහ PostgreSQL සහ Oracle වැනි අනෙකුත් සුලබ දත්ත සංරක්ෂක අතර බහු-පේළි ඇතුළත් කිරීමේ ක්‍රමවේද අතර වෙනස්කම් පැහැදිලි කරමු.

සංසන්දනය: MySQL vs PostgreSQL

1. බහු-පේළි ඇතුළත් කිරීමේ ව්‍යාකරණය

  • MySQL සහ PostgreSQL සාමාන්‍යයෙන් බහු-පේළි ඇතුළත් කිරීම් සඳහා එකම ව්‍යාකරණය භාවිතා කරයි.

MySQL උදාහරණය:

INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');

PostgreSQL උදාහරණය:

INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');

වෙනස:

  • PostgreSQL ඔබට RETURNING කොටස භාවිතා කරමින් ඇතුළත් කළ දත්ත ලබා ගැනීමට ඉඩ සලසයි.
    INSERT INTO customers (id, name, email)
    VALUES
    (3, 'Sakura Mori', 'sakura@example.com')
    RETURNING *;
    

2. ගනුදෙනුකරණ මෙහෙයුම්

  • දෙකම දත්ත සංරක්ෂක ගනුදෙනුකරණ සඳහා සහාය දක්වයි, නමුත් PostgreSQL හි ගනුදෙනුකරණ වෙන්කිරීමේ මට්ටම් සහ දත්ත අඛණ්ඩතාව සඳහා වඩාත් දැඩි අසම්පූර්ණ සැකසුම් ඇත.

සංසන්දනය: MySQL vs Oracle

1. බහු-පේළි ඇතුළත් කිරීමේ ක්‍රමය

Oracle බහු-පේළි ඇතුළත් කිරීම සඳහා INSERT ALL නම් වෙනස් ව්‍යාකරණයක් සපයයි.

MySQL ක්‍රමය:

INSERT INTO customers (id, name, email)
VALUES
(1, 'Taro Yamada', 'taro@example.com'),
(2, 'Hanako Tanaka', 'hanako@example.com');

Oracle ක්‍රමය (INSERT ALL):

INSERT ALL
  INTO customers (id, name, email) VALUES (1, 'Taro Yamada', 'taro@example.com')
  INTO customers (id, name, email) VALUES (2, 'Hanako Tanaka', 'hanako@example.com')
SELECT * FROM dual;

වෙනස්කම්:

  • MySQL එකම VALUES කොටසක් භාවිතා කරමින් බහු-පේළි ඇතුළත් කරයි, මේ අතර Oracle INSERT ALL ව්‍යාකරණය භාවිතා කරමින් පේළි තනිව ඇතුළත් කරයි.
  • Oracle වෙනම මෘතවිකුරු වගුවක් වන dual අවශ්‍ය විය හැක.

අනෙකුත් වෙනස්කම්

1. දත්ත වර්ග වෙනස්කම්

  • MySQL සාමාන්‍යයෙන් TEXT සහ BLOB වැනි දත්ත වර්ග භාවිතා කරයි, මේ අතර Oracle සහ PostgreSQL CLOB සහ BYTEA වැනි වර්ග භාවිතා කරයි.
  • ඇතුළත් කිරීමේදී දත්ත වර්ග වෙනස්කම් පිළිබඳ සැලකිලිමත් වන්න.

2. දෝෂ මෙහෙයුම්

  • MySQL හි, IGNORE විකල්පය භාවිතා කරමින් දෝෂ නොසලකා හරින්න.
    INSERT IGNORE INTO customers (id, name, email)
    VALUES (1, 'Duplicate User', 'duplicate@example.com');
    
  • PostgreSQL සහ Oracle EXCEPTION හෝ SAVEPOINT වැනි වෙනම ව්‍යතිරේඛන මෙහෙයුම් භාවිතා කරයි.

3. බහු-ඇතුළත් කිරීමේ ක්‍රම

  • MySQL LOAD DATA INFILE සපයයි, PostgreSQL COPY පණිවිඩය භාවිතා කරයි, සහ Oracle SQL*Loader නම් මෙවලමක් භාවිතා කරයි.

සාරාංශය

MySQL, PostgreSQL, සහ Oracle අතර බහු-පේළි ඇතුළත් කිරීම සහ දත්ත මෙහෙයුම් පිළිබඳ සමානකම් සහ වෙනස්කම් දෙකම ඇත. එක් එක් දත්ත සංරක්ෂකයේ ලක්ෂණ තේරුම් ගැනීමෙන් ඔබට වඩාත් සුදුසු ක්‍රමය තෝරා ගැනීමට හැකිය.

7. FAQ

මෙම කොටසේදී, අපි MySQL හි දත්ත ඇතුළත් කිරීම සම්බන්ධයෙන් ස經常 අසන ප්‍රශ්න සහ ඒවායේ විසඳුම් පැහැදිලි කරමු. සුලබ ගැටලු advance වශයෙන් විසඳීමෙන් ඔබේ කාර්යය තරමක් මෘදුව ඉදිරියට ගෙන යා හැක.

Q1: බහු-පේළි ඇතුළත් කිරීමේදී දෝෂයක් සිදු විය. මම එය debug කළ යුත්තේ කෙසේද?

A: බහු-පේළි ඇතුළත් කිරීමේදී දෝෂයක් සිදු වුවහොත්, පහත කරුණු පරීක්ෂා කරන්න:

  1. දත්ත වර්ග ස්ථිරභාවය
  • වගුවේ නිර්වචනය කර ඇති දත්ත වර්ග සමඟ එක් එක් තීරුවට ඇතුළත් කරන වටිනාකම් ගැලපෙන බව සහතික කරන්න.
  • උදාහරණය: VARCHAR තීරුවකට වැරදි සංඛ්‍යාත්මක වටිනාකම් ඇතුළත් නොකරන බව සහතික කරන්න.
  1. වටිනාකම් සහ තීරුවල සංඛ්‍යාව ගැලපීම
    INSERT INTO customers (id, name, email)
    VALUES
    (1, 'Taro Yamada'), -- Error: missing email value
    (2, 'Hanako Tanaka', 'hanako@example.com');
    
  1. කොන්දේසි උල්ලංඝනයන්
  • ප්‍රධාන යතුර හෝ අනන්‍ය යතුර කොන්දේසි සපුරා නොගත්හොත්, දෝෂයක් සිදු වේ.
  • විසඳුම: දෝෂ වළක්වා ගැනීමට INSERT IGNORE හෝ ON DUPLICATE KEY UPDATE භාවිතා කරන්න.

Q2: LOAD DATA INFILE භාවිතා කිරීමේදී මට ගත යුතු ආරක්ෂක සැලකිලි මොනවාද?

A: LOAD DATA INFILE බලවත් වුවද, එය ආරක්ෂා අවදානම් ඇති කරවිය හැක. පහත දේවල්ට අවධානය දෙන්න:

  1. ගොනු ප්‍රවේශ අවසර
  • MySQL සේවාදායකයාට ගොනු මාර්ගයට නිසි ප්‍රවේශ අවසර තිබේදැයි සහතික කරන්න.
  • SECURE_FILE_PRIV නාමාවලිය සැකසීම පරීක්ෂා කර, අවසර ලත් නාමාවලිය තුළ ඇති ගොනු පමණක් භාවිතා කරන්න.
  1. LOCAL විකල්පයේ අවදානම්
  • LOAD DATA LOCAL INFILE භාවිතා කරන විට, විශ්වාසදායක සේවාදායක සහ සේවාදායක අතර පමණක් භාවිතා කර, දුරස්ථ මූලාශ්‍ර වලින් අනිසි ගොනු පූරණය වීම වැළැක්වන්න.
  1. දත්ත වලංගුකරණය
  • ගොනුවේ අන්තර්ගතය පෙර පරීක්ෂා කර, අවිධිමත් හෝ අනිසි දත්ත ඇතුළත් නොවීම තහවුරු කරන්න.

Q3: විශාල ප්‍රමාණයේ දත්ත ඇතුළත් කිරීමේදී කාර්ය සාධන අඩු වීමේ හේතු මොනවාද?

A: කාර්ය සාධන අඩු වීමේ ප්‍රධාන හේතු සහ ඒවායේ විසඳුම් පහත පරිදි වේ:

  1. දර්ශක (Index) යාවත්කාලීන කිරීම
  • ඇතුළත් කිරීමේදී දර්ශක යාවත්කාලීන කිරීම ක්‍රියාවලිය මන්දගාමී කරයි.
  • විසඳුම: ඇතුළත් කිරීමට පෙර දර්ශක අක්‍රිය කර, පසුදා ඒවා නැවත සක්‍රිය කරන්න.
  1. ගනුදෙනු ලොග් (Transaction logs)
  • එක් එක් ඇතුළත් කිරීම වෙන්ව කමිටු කරන විට, තැටි I/O වැඩිවී කාර්ය සාධනය අඩු වේ.
  • විසඳුම: ගනුදෙනු භාවිතා කර, කණ්ඩායම් ලෙස කමිටු කරන්න.
  1. පෝෂක සැකසුම් අඩු වීම
  • innodb_buffer_pool_size හෝ bulk_insert_buffer_size ඉතා කුඩා නම්, ඇතුළත් කිරීමේ කාර්ය සාධනය අඩු විය හැක.
  • විසඳුම: ප්‍රමාණවත් මතකය වෙන් කිරීමට සැකසුම් වෙනස් කරන්න.

Q4: පවතින දත්ත තිබෙන විට බහු-පේළි ඇතුළත් කිරීම් ආරක්ෂිතව කළ හැකිද?

A: ඔව්, පවතින දත්ත සමඟ ගැටළු වැළැක්වීමට පහත ක්‍රම භාවිතා කළ හැක:

  1. ON DUPLICATE KEY UPDATE භාවිතා කිරීම
    INSERT INTO customers (id, name, email)
    VALUES (1, 'Updated Name', 'updated@example.com')
    ON DUPLICATE KEY UPDATE name = VALUES(name), email = VALUES(email);
    
  1. REPLACE INTO භාවිතා කිරීම
    REPLACE INTO customers (id, name, email)
    VALUES (1, 'Replaced Name', 'replaced@example.com');
    

Q5: කණ්ඩායම් සැකසීම සඳහා සුදුසුම කණ්ඩායම් ප්‍රමාණය කුමක්ද?

A: සුදුසුම කණ්ඩායම් ප්‍රමාණය පහත කරුණු මත පදනම් වේ:

  • සේවාදායක මතකය සහ CPU කාර්ය සාධනය.
  • වගුවේ ව්‍යුහය (දර්ශක සහ සීමා).
  • දත්ත ප්‍රමාණය සහ රෙකෝඩ් ප්‍රමාණය.

සාමාන්‍යයෙන්, එක් කණ්ඩායමකට 100 සිට 1000 පේළි අතර සකස් කිරීම ආරම්භක ලක්ෂ්‍යයක් වේ. ඔබේ පරිසරයට සුදුසු ප්‍රමාණය තීරණය කිරීමට කාර්ය සාධන පරීක්ෂණ කරන්න.

සාරාංශය

මෙම FAQ කොටස MySQL හි දත්ත ඇතුළත් කිරීමේදී මුහුණ දෙන සාමාන්‍ය ගැටළු සහ ප්‍රශ්න සඳහා ප්‍රායෝගික විසඳුම් ලබා දී ඇත. මෙම තොරතුරු යොදා ගත්තාම, ඔබට ඇතුළත් කිරීමේ ක්‍රියාකාරකම් වඩා කාර්යක්ෂමව සහ ආරක්ෂිතව සිදු කළ හැක.

8. නිගමනය

MySQL හි දත්ත ඇතුළත් කිරීම බොහෝ විකල්ප ලබා දේ, මූලික ක්‍රියාකාරකම් සිට උසස් තාක්ෂණික ක්‍රම දක්වා. මෙම ලිපිය විශේෂයෙන් බහු-පේළි ඇතුළත් කිරීම පිළිබඳව කේන්ද්‍ර කර, කාර්යක්ෂම සහ ප්‍රායෝගික ක්‍රම පැහැදිලි කරයි.

ප්‍රධාන ග්‍රහණයන්

  1. මූලික INSERT වාක්‍ය රීතිය
  • MySQL හි එක් පේළි ඇතුළත් කිරීම මූලික වන අතර, දත්ත වර්ග සහ තීරුවේ නිර්වචන ගැළපීම අත්‍යවශ්‍ය වේ.
  1. එකවර බහු පේළි ඇතුළත් කිරීම
  • එක් SQL ප්‍රකාශයක් භාවිතා කර බහු පේළි ඇතුළත් කිරීම ජාල පූර්ණභාරය අඩු කර, කාර්ය සාධනය වැඩි කරයි.
  1. විශාල දත්ත කට්ටලයන්ගේ බල්ක් ඇතුළත් කිරීම
  • LOAD DATA INFILE භාවිතා කිරීමෙන් විශාල ප්‍රමාණයේ දත්ත කාර්යක්ෂමව ඇතුළත් කළ හැකි නමුත්, ආරක්ෂාව සහ සැකසුම් පිළිබඳ අවධානය අවශ්‍ය වේ.
  1. කාර්ය සාධන අභිවෘද්ධි තාක්ෂණ
  • ගනුදෙනු, දර්ශක අක්‍රිය කිරීම, කණ්ඩායම් සැකසීම, සහ සේවාදායක සැකසුම් වෙනස් කිරීම ඇතුළත් කර ඇතුළත් කිරීමේ කාර්යක්ෂමතාව වැඩි කිරීමේ විවිධ ක්‍රම අපි හඳුන්වා දුන්නෙමු.
  1. වෙනත් දත්ත ගබඩා සමඟ වෙනස්කම්
  • PostgreSQL සහ Oracle සමඟ සසඳන විට MySQL හි ඇතුළත් කිරීමේ ක්‍රමය සාපේක්ෂව සරල වුවත්, එක් එක් දත්ත ගබඩාවේ ලක්ෂණ තේරුම් ගැනීම වැදගත් වේ.
  1. FAQ
  • නිරවද්‍ය භාවිතා අවස්ථා සඳහා සාමාන්‍ය ප්‍රශ්න සහ දෝෂ සඳහා ප්‍රායෝගික විසඳුම් අපි ලබා දුන්නෙමු.

අවසාන අදහස්

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

ඔබගේ ඊළඟ පියවර ලෙස, පහත සඳහන් කරුණු සලකා බලන්න:

  • මෙම ලිපියේ හඳුන්වා දී ඇති SQL ප්‍රකාශන ක්‍රියාත්මක කර, ඒවායේ හැසිරීම තහවුරු කරන්න.
  • ඔබේ ව්‍යාපෘතිය සඳහා සුදුසුම ඇතුළත් කිරීමේ ක්‍රමය තෝරා, කාර්ය සාධන අභිලක්ෂණ උත්සාහයන් පරීක්ෂා කරන්න.
  • ගැඹුරු දැනුම සඳහා නිල MySQL ලේඛන සහ සම්බන්ධිත තාක්ෂණික පොත් වෙත යොමු වන්න.

MySQL සමඟ ඔබේ දත්ත මෙහෙයුම් සරල කර, ඔබේ ව්‍යාපාරය සහ සංවර්ධන ව්‍යාපෘතිවල සාර්ථකත්වයට දායක වන්න.