" হাই পারফরম্যান্স মাইএসকিউএল, দ্বিতীয় সংস্করণ " বইটি থেকে নিম্নলিখিত উত্সাহটি প্রকাশিত হয়েছে ।
এটি একটি দুর্দান্ত বই এবং আমি এটি যে কারও কাছে সুপারিশ করব।
সংক্ষিপ্ত উত্তরটি হ'ল:
আপনার টেবিলের আকার এবং শর্তাদি, আপনি যে পদ্ধতিটি বেছে নিন তা বিবেচনা না করেই আমি মনে করি আপনি দীর্ঘ প্রতীক্ষার জন্য সম্ভাব্য in
সারণী রূপান্তর
এক টেবিলকে এক স্টোরেজ ইঞ্জিন থেকে অন্য স্টোরেজে রূপান্তরিত করার বিভিন্ন উপায় রয়েছে, যার মধ্যে প্রতিটি সুবিধা এবং অসুবিধা রয়েছে।
টেবিল পরিবর্তন করুন
mysql> ALTER TABLE mytable ENGINE = Falcon;
এই সিনট্যাক্সটি সমস্ত স্টোরেজ ইঞ্জিনের জন্য কাজ করে, তবে একটি ধরা আছে: এতে অনেক বেশি সময় লাগতে পারে। মাইএসকিউএল আপনার পুরানো টেবিলের সারি-সারি একটি অনুলিপি একটি নতুন টেবিলের মধ্যে সম্পাদন করবে। এই সময়ের মধ্যে, আপনি সম্ভবত সার্ভারের সমস্ত ডিস্ক I / O ক্ষমতা ব্যবহার করবেন এবং রূপান্তর চলাকালীন মূল টেবিলটি পঠিত হবে।
ডাম্প এবং আমদানি করুন
রূপান্তর প্রক্রিয়াটির উপর আরও নিয়ন্ত্রণ অর্জনের জন্য, আপনি প্রথমে mysqldump ইউটিলিটিটি ব্যবহার করে কোনও টেক্সট ফাইলে টেবিলটি ডাম্প করতে পছন্দ করতে পারেন। একবার আপনি টেবিলটি ছুঁড়ে ফেলেছেন, এটিতে তৈরি টেবিলের বিবৃতিটি সামঞ্জস্য করার জন্য আপনি কেবল ডাম্প ফাইলটি সম্পাদনা করতে পারেন। সারণীর নাম এবং প্রকারের পরিবর্তনের বিষয়টি নিশ্চিত করুন, কারণ একই ডাটাবেসে আপনার একই নামের দুটি টেবিল থাকতে পারে না যদিও সেগুলি বিভিন্ন প্রকারের mys এবং মাইএসকিএলডাম্প ডিফল্ট তৈরি করে টেবিল তৈরির আগে একটি ড্রপ টেবিল লিখতে হবে , যাতে আপনি সাবধান না হলে আপনার ডেটা হারাতে পারে!
তৈরি করুন এবং নির্বাচন করুন
তৃতীয় রূপান্তর কৌশলটি প্রথম পদ্ধতির গতি এবং দ্বিতীয়টির সুরক্ষার মধ্যে একটি সমঝোতা। পুরো টেবিলটি ডাম্প করা বা এটি একবারে সমস্ত রূপান্তরিত করার পরিবর্তে নতুন টেবিলটি তৈরি করুন এবং মাইএসকিউএল এর INSERT ব্যবহার করুন ... এটিকে জনপ্রিয় করার জন্য সিনট্যাক্স নির্বাচন করুন:
mysql> CREATE TABLE innodb_table LIKE myisam_table;
mysql> ALTER TABLE innodb_table ENGINE=InnoDB;
mysql> INSERT INTO innodb_table SELECT * FROM myisam_table;
আপনার যদি খুব বেশি ডেটা না থাকে তবে এটি ভাল কাজ করে তবে আপনি যদি করেন তবে প্রায়শই টেবিলটিকে ক্রমবর্ধমানভাবে গড়ে তোলা আরও দক্ষ, এই আইডিটি প্রাথমিক কী হিসাবে ধরে নিয়েছেন, এই কোয়েরিটি বারবার চালান (প্রতিটি বার x এবং y এর বৃহত্তর মান ব্যবহার করে) যতক্ষণ না আপনি সমস্ত তথ্য নতুন টেবিলটিতে অনুলিপি করেন:
mysql> START TRANSACTION;
mysql> INSERT INTO innodb_table SELECT * FROM myisam_table
-> WHERE id BETWEEN x AND y;
mysql> COMMIT;
এটি করার পরে, আপনি মূল টেবিলটি রেখে যাবেন, এটি সম্পন্ন করার পরে আপনি ফেলে দিতে পারবেন এবং নতুন টেবিল যা এখন পুরোপুরি জনবহুল। ডেটাটির অসামঞ্জস্য অনুলিপি প্রতিরোধের প্রয়োজন হলে মূল টেবিলটি লক করতে সাবধান হন!