হ্যাঁ, আপনি উল্লেখ করতে পারেন এমন কেসগুলি রয়েছে COPY
তবে এটি পারফরম্যান্সের চেয়ে অন্য কারণে।
এটি বুঝতে গুরুত্বপূর্ণ যে মাইএসকিউএল নতুন বৈশিষ্ট্যটি চালু করেছে - 5.5 সংস্করণে অনলাইন ডিএলএল প্রসেসিং। এটি অফলাইন প্রক্রিয়াকরণ সরিয়ে দেয় না। সুতরাং এই 2 টি পদ্ধতির মধ্যে পার্থক্য করার প্রয়োজন আছে:
কিছু অপারেশন এখনও কেবল অফলাইন মোডে কাজ করে। ডিডিএল অপারেশনগুলির একটি তালিকার জন্য সারণী 15.10, " ডিডিএল অপারেশনের জন্য অনলাইন স্ট্যাটাসের সংক্ষিপ্তসার " দেখুন যা জায়গায় জায়গায় সম্পাদন করা যায় বা করা যায় না।
অনলাইন এবং অফলাইন মোডে অপারেশনগুলির কিছুটা আলাদা আচরণ থাকে, সুতরাং আপনি সামঞ্জস্যের কারণে "পুরানো" একটি চয়ন করতে পারেন।
কিছু উদাহরণ (দয়া করে আরও পরামর্শ দিন):
মাইএসকিউএল 5.6 এর পূর্বে তৈরি InnoDB টেবিলগুলি ALTER TABLE ... ALGORITHM=INPLACE
টেম্পোরাল কলামগুলি ( DATE
, DATETIME
বা TIMESTAMP
) অন্তর্ভুক্ত এবং ব্যবহার করে পুনর্নির্মাণ করা হয়নি এমন টেবিলগুলির জন্য সমর্থন করে না ALTER TABLE ... ALGORITHM=COPY
। এই ক্ষেত্রে, একটি ALTER TABLE ... ALGORITHM=INPLACE
অপারেশন ত্রুটি প্রদান করে।
ADD PRIMARY KEY
ধারাটিতে COPY mode
নীরবে NULL
সেই ডেটা টাইপের জন্য ডিফল্ট মানগুলিতে রূপান্তরিত হয় (আইএনটির জন্য 0, বার্চারের জন্য খালি স্ট্রিং), যেখানে এটি করা IN_PLACE
হয় না।
ALGORITHM = কপি অনুচ্ছেদে, প্রাথমিক কী কলামগুলিতে NULL মান উপস্থিত থাকা সত্ত্বেও অপারেশন সফল হয়; ডেটা নিঃশব্দে পরিবর্তিত হয়েছে, যা সমস্যার কারণ হতে পারে।
পছন্দ করার আরেকটি কারণ COPY
:
বিশেষায়িত পরিস্থিতিতে দৃ backward় পশ্চাদপসরণ-সামঞ্জস্যের প্রয়োজন হলে টেবিল-অনুলিপি আচরণকে বাধ্য করার জন্য যে কাজগুলির জন্য আপনি ALGORITHM = COPY বা old_alter_table = 1 নির্দিষ্ট করেছেন rations
যদিও মাইএসকিউএল ম্যানুয়ালটি প্রকৃত পরিস্থিতি সম্পর্কে কথা বলে না, আপনি কিছু কল্পনা করতে পারেন। উদাহরণস্বরূপ বিকাশকারী ALTER INDEX
অপারেশনের সময় টেবিলটি লক হওয়ার উপর নির্ভর করে তাই টেবিলটি কেবলমাত্র পঠনযোগ্য বা সম্পূর্ণ লক করা আছে এবং এমন একটি প্রক্রিয়া রয়েছে যা সূচি পুনর্নির্মাণের সময় স্থির টেবিলটি পড়ে।