একই মানের 700 মিলিয়ন সারি আপডেট করা


12

আমি একটি ডেটা গুদাম (ওরাকল) পেয়েছি যেখানে আমার 700 মিলিয়ন সারিগুলির জন্য একই কলামে কলাম স্থাপন করতে হবে।

আমার অ্যাডমিন অ্যাক্সেস বা কোনও প্রশাসকের অ্যাক্সেস নেই, সুতরাং এটি বেসিক এসকিএল দিয়ে সম্পন্ন হওয়া দরকার এবং কোনও টেম্প টেবিল তৈরি হয় না।

আরও জটিল বিষয়গুলি হ'ল যদি আমি কেবলমাত্র একটি সাধারণ আপডেট করার চেষ্টা করি যেখানে 1 = 1, এটি আবার স্থানের বাইরে চলে যায়।

আমার এখনই যেভাবে এটি চলছে তা লুপিং এরকম:

loop
  update mytable set mycolumn = '1' where mycolumn is null and rownum < 50000;
  commit;
end loop

তবে আমি জানি এটি সম্ভবত নিষ্পাপ এবং এর জন্য আরও দ্রুত এবং আরও মার্জিত সমাধান থাকতে হবে।


টেবিল বিভক্ত হয়?
জ্যাক বলছেন topanswers.xyz 30'11

আমি বিশ্বাস করি না। বেশ কয়েকটি সূচক রয়েছে, তবে এর মধ্যে কোনওটিই আমি আপডেট করছি না এমন কলাম জড়িত।
owook

উত্তর:


4

আপনার কাছে যদি জায়গা থাকে তবে আপনি ন্যূনতম পূর্বাবস্থায় / পূর্বাবস্থায় ফিরে CTAS করতে পারেন । আপনার যদি কোনও সূচক থাকে তবে এটিকে অন্য কোনও উপায়ে করা খুব ধীর হবে এবং পাগলের মতো লগিং তৈরি করবে।

যে কোনও ক্ষেত্রে আপনার কোনও গৌণ সূচক ছাড়াই একক আইওটি বা একক টেবিল ক্লাস্টার রয়েছে, আপনি আপডেট করা হয়নি এমন ক্ষেত্রগুলি সন্ধানের জন্য পুরো টেবিলটি পুনরায় ছাড়াই ছাড়াই খণ্ডগুলিতে প্রাথমিক / ক্লাস্টার কী আপডেট করে পদক্ষেপ নিতে পারেন।

--edit

আমি একটি গৌণ সারণী তৈরি করতে পারছি না ... কয়েকটি সূচক রয়েছে, তবে সেগুলির কোনওটিতেই আমি আপডেট করা কলামটি জড়িত না।

তারপরে আমি আপনাকে সূচী করে এমন কিছু ব্যবহার করে প্রক্রিয়াজাতকরণের জন্য টেবিলটিকে কিছু অংশে ভাঙ্গার পরামর্শ দিচ্ছি (এটি একটি একক কলাম হলেও আপনি একে মানগুলির মধ্যে বিভক্ত করতে পারেন) এটি প্রতিটি খণ্ডে একবারের পরিবর্তে একবার এফটিএস করবে আপনার হিসাবে কোড। আপনাকে আবারও প্রচুর পরিমাণে পুনরায় জীবন যাপন করতে হবে এবং আপনার পূর্বাবস্থায় স্থানটিও মুছে ফেলতে হবে (সুতরাং কোনও ফ্ল্যাশব্যাক পরে নেই)

--edit2

যদি আপনি কলামগুলি / পুনর্নবীকরণ / ড্রপ কলামগুলি করতে পারেন তবে আপনি এটি খুব দক্ষতার সাথে করতে পারেন তবে কেবল 11 গ্রামে


1
যদি আপনার ডিবিএ আপনাকে করতে দেয় NOLOGGING, যা হটস্ট্যান্ডবাইগুলিকে অবৈধ করে দেবে।
গাইস

প্রকৃতপক্ষে, এবং এরপরে একটি ব্যাকআপ nologging
নেওয়াও

আমি একটি গৌণ সারণী তৈরি করতে সক্ষম নই, অবশ্যই প্রথমটির মতো একটিও বড় নয়, এমনকি সাময়িক হলেও।
owook

আপনার 11 জি লিঙ্কটি আশাব্যঞ্জক লাগছিল, তবে আমি সেখানে মন্তব্যগুলি দেখতে পাচ্ছি যে 60 মি টেবিলের জন্য এটি প্রতিটি সারিটির মান নির্ধারণের কারণে এখনও ভয়ঙ্করভাবে ধীর হয়েছিল। যেহেতু আমার টেবিলটি 10x আকারের, সেই পদ্ধতিটি কোনও উন্নতি হতে পারে না।
owook

@ বুক নো, ১১ জি এ এই অপারেশনটি দ্রুত এবং প্রতিটি সারিটির মান নির্দিষ্ট করে না "কিছু ধরণের টেবিলের জন্য (উদাহরণস্বরূপ, এলওবি কলাম ছাড়াই সারণী)" । আপনার টেবিলের একটি উপসেটে এটি ব্যবহার করে দেখুন ( create table foo as select * from bar where rownum<100000)
জ্যাক বলেছেন টপান্সওয়ার্স.অক্সিজ

1

আপনি যদি 11 জি তে থাকেন তবে কলামটি ড্রপ করুন এবং এটিকে ডিফল্ট মান সহ একটি নল কলাম হিসাবে পুনরায় যুক্ত করুন। এটি পাল্টা স্বজ্ঞাত, তবে ওরাকলটি টেবিলে সংজ্ঞায় ডিফল্ট মান সংরক্ষণ করবে এবং রান সময়ে ডিফল্ট মানটি স্থাপন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.