আমি সম্প্রতি একটি টেবিলটিতে একটি নল-সক্ষম বিট কলাম যুক্ত করেছি যার প্রায় 500 মিলিয়ন সারি রয়েছে। কলামটিতে কোনও ডিফল্ট নেই, তবে সমস্ত সন্নিবেশকারী 0 বা 1 এর মান নির্দিষ্ট করে দিচ্ছে এবং আমি বিদ্যমান বা সারিগুলিতে 0 বা 1 নির্ধারিত করার জন্য এককালীন রুটিন চালিয়েছি (ছোট ব্যাচে সারিগুলি আপডেট করে)। প্রতিটি কাতারে এখন সেই কলামে 0 বা 1 থাকা উচিত।
আমি বিট কলামটি অ-শুরুর করতে চাই তবে আমি যখন ALTER TABLE t1 ALTER COLUMN c1 bit not nullএটি করার চেষ্টা করেছি তখন এটি 3 মিনিটের জন্য চলতে শুরু করে এবং আমি এটি বন্ধ করে দিয়েছিলাম কারণ এটি টেবিলে সমস্ত পাঠকে বাধা দিচ্ছিল এবং আমার সন্দেহ হয়েছিল যে এটি সম্পূর্ণ হতে বেশ দীর্ঘ সময় নিবে । এটি খুব বেশি সময় নিবে না এটি সম্ভব তবে আমি খুব বেশি অপ্রাপ্যতার ঝুঁকি নিতে পারি না। রোলব্যাক নিজেই 6 মিনিট সময় নিয়েছিল।
সম্ভাব্য ঘন্টাগুলি ব্যয় না করে আমি কীভাবে কলামটি অযোগ্য করতে পারি সে সম্পর্কে আপনার কোনও পরামর্শ আছে? অতিরিক্তভাবে অনুমান করার কোনও উপায় আছে যে ALTER TABLE ALTER COLUMNআমি যে বিবৃতিটি শুরু করেছিলাম এবং তারপরে বাতিল হয়েছিল তা শেষ হতে কত সময় লাগবে?
আমি এসকিউএল সার্ভার 2017 ওয়েব সংস্করণ ব্যবহার করছি।
SELECT c1, count(*) FROM t1 GROUP BY c1যা চালাতে প্রায় 9 মিনিট সময় নিয়েছিল। এরALTER TABLE ALTER COLUMNপরে আসল বিবৃতিটি শেষ হতে 25 মিনিট সময় নিয়েছে। এতোটা খারাপ না.