InnoDB টেবিলগুলোকে ব্যাচ আকারে MyISAM টেবিলে রূপান্তর করার জন্য MySQL/MariaDB ডেটাবেস কীভাবে কনফিগার করতে হয়?

একটি ডাটাবেস টেবিলের ডেটা সংরক্ষণের ব্যবস্থাটি একটি গাড়ির ইঞ্জিনের মতো; ইঞ্জিন পরিবর্তন করলেই গাড়ির কর্মক্ষমতা ও বৈশিষ্ট্য সঙ্গে সঙ্গে বদলে যায়। অনেকেই মনে করেন যে ডাটাবেস শুধু ডেটা সংরক্ষণের জন্যই, কিন্তু যখন আপনি আসলে এটি নিয়ে কাজ শুরু করবেন... 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 টেবিলগুলোকে ব্যাচ আকারে MyISAM টেবিলে রূপান্তর করার জন্য MySQL/MariaDB ডেটাবেস কীভাবে কনফিগার করতে হয়?

বিদেশী চাবি সীমাবদ্ধতা

InnoDB ফরেন কী সমর্থন করে, কিন্তু MyISAM তা একেবারেই সমর্থন করে না।

একবার রূপান্তরিত হলে, ফরেন কী সীমাবদ্ধতাগুলো সরাসরি বাতিল হয়ে যাবে।

যদি আপনার ব্যবসা পর্যায়ক্রমিক ডিলিট বা আপডেটের ওপর নির্ভরশীল হয়, তাহলে রূপান্তরের পর লজিকটি পুরোপুরি অকার্যকর হয়ে যাবে।

লেনদেন সমর্থন

InnoDB-তে ট্রানজ্যাকশন রয়েছে এবং এটি সেগুলোকে সমর্থন করে। COMMITROLLBACK.

MyISAM-এ ট্রানজ্যাকশন নেই, শুধু টেবিল-স্তরের লক রয়েছে।

রূপান্তরের পর, লেনদেন-সম্পর্কিত সমস্ত কোড অকার্যকর হয়ে যাবে এবং কোনো ব্যতিক্রম ঘটলে রোলব্যাক করা অসম্ভব হবে।

যুগপৎ কর্মক্ষমতা

InnoDB সারি-স্তরের লকিং ব্যবহার করে, অপরদিকে MyISAM টেবিল-স্তরের লকিং ব্যবহার করে।

উচ্চ-একযোগে কার্য সম্পাদনের ক্ষেত্রে, MyISAM প্রায়শই টেবিল লক করে, যা পারফরম্যান্সে প্রতিবন্ধকতা সৃষ্টি করে।

সূচক বৈশিষ্ট্য

মাইএসকিউএল ৫.৬ সংস্করণের আগে MyISAM-এর নিজস্ব পূর্ণ-পাঠ্য সূচী ছিল।

কিন্তু মাইএসকিউএল MariaDB এবং InnoDB-এর 5.6 এবং 10+ সংস্করণগুলিতে পূর্ণ-পাঠ্য সূচীকরণ ইতিমধ্যেই সমর্থিত।

সুতরাং, আপনি যদি পুরোনো সংস্করণ ব্যবহার না করেন, তাহলে পূর্ণ-পাঠ্য সূচীকরণের জন্য MyISAM-এ পরিবর্তন করার কোনো প্রয়োজন নেই।

সর্বোত্তম অনুশীলন প্রক্রিয়া

  1. ব্যাকআপ ডেটা রূপান্তর করার আগে অবশ্যই রপ্তানি করে নিন। .sql ফাইলগুলো এমনভাবে সংরক্ষণ করা হয় যাতে যেকোনো সময় সেগুলো পুনরুদ্ধার করা যায়।

  2. চেকলিস্ট কাঠামো কোনো ফরেন কী আছে কিনা তা পরীক্ষা করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

    SHOW CREATE TABLE `你的表名`;
    
  3. রূপান্তর সম্পাদন করুন 使用 ALTER TABLE বিকল্পভাবে, রূপান্তরটি সম্পন্ন করতে ব্যাচ স্ক্রিপ্ট ব্যবহার করা যেতে পারে।

  4. স্বাস্থ্যের অবস্থা পরীক্ষা করুন রূপান্তর সম্পন্ন হলে, চালান:

    CHECK TABLE `你的表名`;
    OPTIMIZE TABLE `你的表名`;
    

    এটি নিশ্চিত করে যে টেবিলটি সঠিকভাবে কাজ করছে এবং খণ্ডাংশগুলো মুক্ত করে।

বিপরীত পুনরুদ্ধার পদ্ধতি

রূপান্তরের পরে যদি পারফরম্যান্সের অবনতি বা ব্যবসায়িক যুক্তির সমস্যা দেখা যায়, তাহলে আপনি যেকোনো সময় InnoDB-তে ফিরে যেতে পারেন:

ALTER TABLE `你的表名` ENGINE = InnoDB;

একেই বলা হয় "বিপরীতমুখী প্রক্রিয়া", যা আপনাকে বেরিয়ে আসার একটি উপায় দেয়।

উদ্ধৃত প্রামাণিক মতামত

অনুসারে MySQL অফিসিয়াল ডকুমেন্টেশন ব্যাখ্যা:

"বিদেশী কী নির্মাণ"aiফরেন কী শুধুমাত্র InnoDB দ্বারা সমর্থিত। আপনি যদি একটি টেবিলকে MyISAM-এ রূপান্তর করেন, তাহলে সমস্ত ফরেন কী উপেক্ষা করা হবে।
MySQL রেফারেন্স ম্যানুয়াল, অধ্যায় 14.6.6 ফরেন কী কনস্ট্রেইন্টস

এই বিবৃতিটি আমাদের স্পষ্টভাবে বলে যে MyISAM-এ ফরেন কী সম্পূর্ণরূপে অকার্যকর।

এবং মারিয়াডিবি অফিসিয়াল ডকুমেন্টেশন এ বিষয়েও জোর দেওয়া হয়েছিল যে:

MyISAM ট্রানজ্যাকশন সমর্থন করে না। যেসব অ্যাপ্লিকেশন ট্রানজ্যাকশনাল ইন্টিগ্রিটির উপর নির্ভর করে, তাদের MyISAM ব্যবহার করা উচিত নয়।
মারিয়াডিবি নলেজ বেস, স্টোরেজ ইঞ্জিন

তাই কোনো কিছু বদলানোর আগে আপনাকে দুবার ভাবতে হবে।

আমার দৃষ্টিভঙ্গি এবং উপসংহার

InnoDB-কে MyISAM-এ রূপান্তর করা অনেকটা একটি বিলাসবহুল গাড়ির ইঞ্জিন বদলে ট্রাকের ইঞ্জিন লাগানোর মতো।

এটা চলতে পারে, কিন্তু সম্পূর্ণ ভিন্নভাবে চলে।

আপনার ব্যবসায় যদি হালকা ধরনের পরিসংখ্যানগত কোয়েরি জড়িত থাকে, তবে MyISAM-এর গতি এবং সরলতা বেশি উপযুক্ত হতে পারে।

তবে, যদি আপনার সিস্টেম ট্রানজ্যাকশন এবং ফরেন কী-এর ওপর নির্ভর করে, তাহলে হঠকারীভাবে সেগুলোকে রূপান্তর করাটা এয়ারব্যাগ খুলে ফেলার মতোই।

সুতরাং, প্রকৃত প্রজ্ঞা অন্ধভাবে গতির পিছনে ছোটার মধ্যে নয়, বরং স্থিতিশীলতা ও কর্মক্ষমতার মধ্যে ভারসাম্য রক্ষা করার মধ্যেই নিহিত।

ডেটাবেসের নির্বাচনই সিস্টেমের প্রাণ নির্ধারণ করে।

স্টোরেজ ইঞ্জিন পরিবর্তনের দক্ষতা আয়ত্ত করা কেবল প্রযুক্তিগত দক্ষতার প্রদর্শনই নয়, বরং স্থাপত্য চিন্তারও এক উন্নত রূপ।

আপনি যদি বড় আকারের রূপান্তরের কথা বিবেচনা করেন, তবে প্রথমে একটি বিশদ ঝুঁকি মূল্যায়ন করুন।

বাস্তব ব্যবসায়িক পরিস্থিতি অনুকরণ করতে পরীক্ষার পরিবেশটি একবার চালান।

সবকিছু সঠিক আছে তা নিশ্চিত করার পর, এটি প্রোডাকশন এনভায়রনমেন্টে চালান।

ডেটাবেস কোনো খেলনা নয়; এগুলো প্রাতিষ্ঠানিক তথ্যের প্রাণকেন্দ্র।

আর আপনিই আপনার হৃদস্পন্দনের ছন্দ নিয়ন্ত্রণ করেন।

হোপ চেন উইলিয়াং ব্লগ ( https://www.chenweiliang.com/ এখানে শেয়ার করা "How to Batch Convert InnoDB Tables to MyISAM Tables in MySQL/MariaDB Databases?" শীর্ষক আর্টিকেলটি আপনার জন্য সহায়ক হতে পারে।

এই নিবন্ধটির লিঙ্ক শেয়ার করতে স্বাগতম:https://www.chenweiliang.com/cwl-34157.html

আরও লুকানো কৌশল 🔑 জানতে, আমাদের টেলিগ্রাম চ্যানেলে যোগদান করতে স্বাগতম!

ভালো লাগলে শেয়ার এবং লাইক করুন! আপনার শেয়ার এবং লাইক আমাদের অব্যাহত অনুপ্রেরণা!

 

发表 评论

আপনার ইমেল ঠিকানা প্রকাশ করা হবে না. 必填 项 已 用 * 标注

নিবন্ধ ডিরেক্টরি
উপরে যান