បញ្ជីអត្ថបទ
ម៉ាស៊ីនផ្ទុកទិន្នន័យនៃតារាងមូលដ្ឋានទិន្នន័យគឺដូចជាម៉ាស៊ីនរបស់រថយន្តអញ្ចឹង។ ការផ្លាស់ប្តូរម៉ាស៊ីនភ្លាមៗផ្លាស់ប្តូរដំណើរការ និងលក្ខណៈ។ មនុស្សជាច្រើនគិតថាមូលដ្ឋានទិន្នន័យគឺសម្រាប់រក្សាទុកទិន្នន័យតែប៉ុណ្ណោះ ប៉ុន្តែនៅពេលដែលអ្នកចាប់ផ្តើមធ្វើការលើវា... InnoDB 转成 មីអាយអេសមានតែពេលនោះទេ ទើបអ្នកនឹងរកឃើញអាថ៌កំបាំងដែលលាក់នៅពីក្រោយវា។
ហេតុអ្វីបានជានរណាម្នាក់ចង់ប្តូរពី InnoDB ទៅ MyISAM?
ក្នុងសេណារីយ៉ូជាច្រើន MyISAM មានល្បឿនលឿនជាង ជាពិសេសសម្រាប់កម្មវិធីដែលតម្រូវឱ្យអានច្រើន និងកម្មវិធីដែលតម្រូវឱ្យសរសេរតិច ដូចជាមូលដ្ឋានទិន្នន័យកំណត់ហេតុ និងស្ថិតិ។
យន្តការចាក់សោកម្រិតតុរបស់វាពិតជាដំណើរការយ៉ាងរលូនក្រោមការប្រើប្រាស់ក្នុងពេលដំណាលគ្នាទាប។
លើសពីនេះ ការផ្ទុកឯកសាររបស់ MyISAM គឺងាយស្រួលប្រើជាង។ .MYD រក្សាទុកទិន្នន័យ, មួយ .MYI ការរក្សាទុកលិបិក្រម ការធ្វើចំណាកស្រុក និងការបម្រុងទុក សុទ្ធតែងាយស្រួលណាស់។
ទោះជាយ៉ាងណាក៏ដោយ ប្រតិបត្តិការ និងការគាំទ្រសោបរទេសរបស់ InnoDB គឺស្ទើរតែជាការចាំបាច់នៅក្នុងសេណារីយ៉ូអាជីវកម្មស្មុគស្មាញ។
ដូច្នេះ អ្នកត្រូវតែស្វែងយល់ថាតើអាជីវកម្មរបស់អ្នកពិតជាត្រូវការលក្ខណៈពិសេសទាំងនេះឬអត់ មុនពេលធ្វើការផ្លាស់ប្តូរ។
ពាក្យបញ្ជាស្នូល៖ ALTER TABLE
ដើម្បីបម្លែងតារាងតែមួយពី InnoDB ទៅ MyISAM អ្នកគ្រាន់តែត្រូវការកូដមួយបន្ទាត់ប៉ុណ្ណោះ៖
ALTER TABLE `你的表名` ENGINE = MyISAM;
បន្ទាប់ពីការប្រតិបត្តិត្រូវបានបញ្ចប់ ម៉ាស៊ីនផ្ទុកទិន្នន័យរបស់តារាងនឹងត្រូវបានប្តូរ។
តើវាមិនសាមញ្ញទេឬ?
ការបម្លែងជាបាច់៖ ការបង្កើតស្គ្រីបដោយស្វ័យប្រវត្តិ
ប្រសិនបើអ្នកមានតារាងរាប់សិប ឬរាប់រយ ការកែប្រែពួកវាដោយដៃពិតជាមិនងាយស្រួលទេ។
នៅចំណុចនេះ សំណួរតែមួយអាចត្រូវបានប្រើដើម្បីបង្កើតសេចក្តីថ្លែងការណ៍បំលែងជាបាច់ដោយស្វ័យប្រវត្តិ៖
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
បន្ទាប់ពីដំណើរការរួច វានឹងបង្ហាញលទ្ធផលជាច្រើន... ALTER TABLE ... សេចក្តីថ្លែងការណ៍។
ចម្លងសេចក្តីថ្លែងការណ៍ទាំងនេះ ហើយប្រតិបត្តិវាទាំងអស់ក្នុងពេលតែមួយ ដើម្បីបញ្ចប់ការបម្លែងជាបាច់ក្នុងពេលតែមួយ។
នេះគឺជាអ្វីដែលគេស្គាល់ថាជា "ការបម្លែងបាច់ដោយស្វ័យប្រវត្តិ"។
ការវាយតម្លៃហានិភ័យមុនពេលបម្លែង

ការរឹតបន្តឹងសោបរទេស
InnoDB គាំទ្រ foreign keys ខណៈពេលដែល MyISAM មិនគាំទ្រពួកវាទាល់តែសោះ។
នៅពេលដែលការបម្លែងត្រូវបានបញ្ចប់ ការរឹតបន្តឹងសោបរទេសនឹងត្រូវបានលុបចោល។
ប្រសិនបើអាជីវកម្មរបស់អ្នកពឹងផ្អែកលើការលុប ឬការអាប់ដេតជាបន្តបន្ទាប់ តក្កវិជ្ជានឹងបរាជ័យទាំងស្រុងបន្ទាប់ពីការបំលែង។
ការគាំទ្រប្រតិបត្តិការ
InnoDB មានប្រតិបត្តិការ និងគាំទ្រពួកវា។ COMMIT 和។ ROLLBACK។
MyISAM មិនមានប្រតិបត្តិការទេ មានតែការចាក់សោកម្រិតតារាងប៉ុណ្ណោះ។
បន្ទាប់ពីការបម្លែង លេខកូដទាំងអស់ដែលទាក់ទងនឹងប្រតិបត្តិការនឹងក្លាយទៅជាមិនត្រឹមត្រូវ ហើយការត្រឡប់ក្រោយនឹងមិនអាចទៅរួចទេក្នុងករណីមានករណីលើកលែង។
ការអនុវត្តក្នុងពេលដំណាលគ្នា
InnoDB ប្រើការចាក់សោកម្រិតជួរដេក ខណៈពេលដែល MyISAM ប្រើការចាក់សោកម្រិតតារាង។
នៅក្នុងសេណារីយ៉ូដែលមានការដំណើរការស្របគ្នាខ្ពស់ MyISAM ជារឿយៗចាក់សោតារាង ដែលនាំឱ្យមានការកកស្ទះដំណើរការ។
លក្ខណៈពិសេសសន្ទស្សន៍
在។ MySQL មុនកំណែ 5.6 MyISAM មានលិបិក្រមអត្ថបទពេញលេញផ្ទាល់ខ្លួន។
ប៉ុន្តែនៅក្នុង MySQL ការធ្វើលិបិក្រមអត្ថបទពេញលេញត្រូវបានគាំទ្ររួចហើយនៅក្នុងកំណែ 5.6 និង 10+ របស់ MariaDB និង InnoDB។
ដូច្នេះ លុះត្រាតែអ្នកកំពុងប្រើកំណែចាស់ជាងនេះ មិនចាំបាច់ប្តូរទៅ MyISAM សម្រាប់ការបង្កើតលិបិក្រមអត្ថបទពេញលេញទេ។
ដំណើរការអនុវត្តល្អបំផុត
បម្រុងទុកទិន្នន័យ មុនពេលបម្លែង ត្រូវប្រាកដថាបាននាំចេញ។
.sqlឯកសារត្រូវបានរក្សាទុកដើម្បីធានាថាពួកវាអាចត្រូវបានស្ដារឡើងវិញនៅពេលណាក៏បាន។រចនាសម្ព័ន្ធបញ្ជីត្រួតពិនិត្យ ប្រើពាក្យបញ្ជាខាងក្រោមដើម្បីពិនិត្យមើលថាតើមាន foreign key ដែរឬទេ៖
SHOW CREATE TABLE `你的表名`;អនុវត្តការបម្លែង 使用
ALTER TABLEជាជម្រើសមួយ ស្គ្រីបបាច់អាចត្រូវបានប្រើដើម្បីបញ្ចប់ការបម្លែង។ពិនិត្យមើលស្ថានភាពសុខភាព បន្ទាប់ពីការបម្លែងរួចរាល់ សូមដំណើរការ៖
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;នេះបញ្ជាក់ថាតារាងដំណើរការបានត្រឹមត្រូវ ហើយបញ្ចេញបំណែកៗ។
វិធីសាស្ត្រស្តារឡើងវិញបញ្ច្រាស
ប្រសិនបើការធ្លាក់ចុះនៃដំណើរការ ឬបញ្ហាតក្កវិជ្ជាអាជីវកម្មត្រូវបានគេសង្កេតឃើញបន្ទាប់ពីការបំលែង អ្នកអាចប្តូរទៅ InnoDB វិញនៅពេលណាក៏បាន៖
ALTER TABLE `你的表名` ENGINE = InnoDB;
នេះគឺជាអ្វីដែលហៅថា "ប្រតិបត្តិការបញ្ច្រាស់" ដែលផ្តល់ឱ្យអ្នកនូវផ្លូវចេញ។
ទស្សនៈដែលមានអំណាចត្រូវបានលើកឡើង
នេះបើយោងតាម ឯកសារផ្លូវការរបស់ MySQL ការពន្យល់៖
"ការបង្កើតសោបរទេស"aints ត្រូវបានគាំទ្រដោយ InnoDB តែប៉ុណ្ណោះ។ ប្រសិនបើអ្នកបំប្លែងតារាងទៅជា MyISAM នោះសោបរទេសទាំងអស់នឹងត្រូវបានមិនអើពើ។
——សៀវភៅណែនាំ MySQL ជំពូកទី 14.6.6 ការរឹតបន្តឹងសោបរទេស
សេចក្តីថ្លែងការណ៍នេះប្រាប់យើងយ៉ាងច្បាស់ថា foreign keys មិនត្រឹមត្រូវទាំងស្រុងនៅក្នុង MyISAM។
និង ឯកសារផ្លូវការរបស់ MariaDB វាក៏ត្រូវបានសង្កត់ធ្ងន់ផងដែរថា៖
"MyISAM មិនគាំទ្រប្រតិបត្តិការទេ។ កម្មវិធីដែលពឹងផ្អែកលើសុចរិតភាពនៃប្រតិបត្តិការមិនគួរប្រើ MyISAM ទេ។"
——មូលដ្ឋានចំណេះដឹង MariaDB, ម៉ាស៊ីនផ្ទុកទិន្នន័យ
នោះហើយជាមូលហេតុដែលអ្នកត្រូវគិតពីរដងមុនពេលធ្វើការប្តូរ។
ទស្សនៈ និងសេចក្តីសន្និដ្ឋានរបស់ខ្ញុំ
ការបម្លែង InnoDB ទៅជា MyISAM គឺដូចជាការជំនួសម៉ាស៊ីនរថយន្តប្រណីតជាមួយនឹងម៉ាស៊ីនឡានដឹកទំនិញ។
វាអាចដំណើរការបាន ប៉ុន្តែវាដំណើរការតាមរបៀបខុសគ្នាទាំងស្រុង។
ប្រសិនបើអាជីវកម្មរបស់អ្នកពាក់ព័ន្ធនឹងសំណួរស្ថិតិស្រាលៗ ល្បឿន និងភាពសាមញ្ញរបស់ MyISAM អាចសមស្របជាង។
ទោះយ៉ាងណាក៏ដោយ ប្រសិនបើប្រព័ន្ធរបស់អ្នកពឹងផ្អែកលើប្រតិបត្តិការ និងសោបរទេស ការបម្លែងវាដោយមិនប្រុងប្រយ័ត្នគឺដូចជាការដកពោងសុវត្ថិភាពចេញ។
ដូច្នេះ ប្រាជ្ញាពិតមិនមែនស្ថិតនៅលើការដេញតាមល្បឿនដោយមិនគិតពីប្រយោជន៍ផ្ទាល់ខ្លួននោះទេ ប៉ុន្តែស្ថិតនៅលើការធ្វើឱ្យមានតុល្យភាពរវាងស្ថេរភាព និងការអនុវត្ត។
ជម្រើសនៃមូលដ្ឋានទិន្នន័យកំណត់ព្រលឹងនៃប្រព័ន្ធ។
ការស្ទាត់ជំនាញនៃការប្តូរម៉ាស៊ីនផ្ទុកមិនត្រឹមតែជាការបង្ហាញពីសមត្ថភាពបច្ចេកទេសប៉ុណ្ណោះទេ ប៉ុន្តែវាក៏ជាការលើកកម្ពស់ការគិតបែបស្ថាបត្យកម្មផងដែរ។
ប្រសិនបើអ្នកកំពុងពិចារណាពីការបំលែងជាបរិមាណច្រើន សូមធ្វើការវាយតម្លៃហានិភ័យដ៏ទូលំទូលាយជាមុនសិន។
ដំណើរការបរិយាកាសសាកល្បងម្តង ដើម្បីធ្វើត្រាប់តាមសេណារីយ៉ូអាជីវកម្មពិត។
បន្ទាប់ពីបញ្ជាក់ថាអ្វីៗគ្រប់យ៉ាងត្រឹមត្រូវ សូមប្រតិបត្តិវានៅក្នុងបរិយាកាសផលិតកម្ម។
មូលដ្ឋានទិន្នន័យមិនមែនជាប្រដាប់ក្មេងលេងទេ; ពួកវាគឺជាបេះដូងនៃទិន្នន័យសហគ្រាស។
ហើយអ្នកគឺជាអ្នកដែលគ្រប់គ្រងចង្វាក់នៃបេះដូងរបស់អ្នក។
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ អត្ថបទ "តើធ្វើដូចម្តេចដើម្បីបម្លែងតារាង InnoDB ទៅជាតារាង MyISAM នៅក្នុងមូលដ្ឋានទិន្នន័យ MySQL/MariaDB?" ដែលបានចែករំលែកនៅទីនេះអាចមានប្រយោជន៍សម្រាប់អ្នក។
សូមស្វាគមន៍ចំពោះការចែករំលែកតំណភ្ជាប់នៃអត្ថបទនេះ៖https://www.chenweiliang.com/cwl-34157.html
