সুনির্দিষ্ট বিবরণগুলির সংক্ষিপ্তসার হিসাবে: আমাদের প্রায় 5 মিলিয়ন সারিটি একজন বিক্রেতার (ওরাকল) ডাটাবেসের মধ্যে মঞ্চস্থ করতে হবে। OracleBulkCopy
(ODP.NET) ব্যবহার করে 500k সারিগুলির ব্যাচগুলির জন্য সবকিছু দুর্দান্ত হয়ে যায় , তবে আমরা যখন 5M পর্যন্ত স্কেল করার চেষ্টা করি তখন 1M চিহ্নটি একবার আঘাত করলে পারফরম্যান্স ক্রলটিতে ধীরে ধীরে শুরু হয়, আরও সারি লোড হওয়ার সাথে ধীরে ধীরে ধীর হয়ে যায় এবং শেষ পর্যন্ত 3 ঘন্টা বা তার পরে সময় বার।
আমি সন্দেহ করি এটি টেবিলের একটি প্রাথমিক কী এর সাথে সম্পর্কিত, তবে আমি তথ্যের জন্য ওরাকল ফোরাম এবং স্ট্যাক ওভারফ্লো ট্রলিং করছি এবং আমি যা যা পড়ছি তার বিপরীতে রয়েছে (এছাড়াও অনেকগুলি পোস্ট একে অপরের বিরোধিতা করে বলে মনে হচ্ছে ) । আমি আশা করছি যে প্রক্রিয়া সম্পর্কে কেউ কেউ ঘনিষ্ঠভাবে সম্পর্কিত প্রশ্নগুলির উপর সরাসরি রেকর্ড স্থাপন করতে পারে:
OracleBulkCopy
শ্রেণিটি কি প্রচলিত বা প্রত্যক্ষ পথে লোডিং ব্যবহার করে? এটির কোনও উপায় আছে যা আমি এটি নিশ্চিত করতে পারি, একভাবে বা অন্যভাবে?ধরে নিলাম এটি সরাসরি-পাথ লোড ব্যবহার করে : এটি কী সত্য যে ওরাকল স্বয়ংক্রিয়ভাবে সমস্ত সূচকগুলি লোডের সময় অকেজো হয়ে যায় এবং পরে অনলাইনে ফিরিয়ে দেয়? আমি এই প্রসঙ্গে বেশ কয়েকটি বিবৃতি পড়েছি কিন্তু আবার এটি নিশ্চিত করতে পারছি না।
যদি # 2 সত্য হয়, তবে আমি একটি বাল্ক অনুলিপি অপারেশন শুরু করার আগে টেবিলে কী সূচি রয়েছে সেগুলি নিয়ে কি কোনও পার্থক্য করা উচিত? যদি তাই হয় তবে কেন?
# 3 এর সাথে সম্পর্কিত, সাধারণভাবে কোনও অকেজো ইন্ডেক্সের সাথে বাল্ক লোডিংয়ের মধ্যে কোনও বাস্তব পার্থক্য আছে কি না? আসলে লোডের আগে সূচকটি ফেলে দেওয়া এবং পরে এটি পুনরায় তৈরি করা?
# 2 যদি সঠিক না হয় , বা যদি এমন কিছু সতর্কতা থাকে যা আমি বুঝতে পারি না, তবে এটি কি স্পষ্টতই বাল্ক লোডের আগে সূচকটিকে অকেজো করে তুলবে এবং তারপরে স্পষ্টতই এটি পুনরায় নির্মাণ করবে?
আরও কিছু রেকর্ড যুক্ত হওয়ার সাথে সাথে সূচি তৈরির বাইরেও কি অন্য কিছু রয়েছে, যার ফলে একটি বাল্ক অনুলিপি ক্রিয়াকলাপ ধীরে ধীরে ধীরে ধীরে বৃদ্ধি পেতে পারে? (সম্ভবত লগিংয়ের সাথে কিছু করার জন্য, যদিও আমি আশা করব যে বাল্ক অপারেশনগুলি লগ করা হয়নি?)
যদি প্রথমে পিকে / ইনডেক্স বাদ না দিয়ে পারফরম্যান্সকে সামনে রেখে অন্য কোনও উপায় না পাওয়া যায় তবে সূচকটি পুরোপুরি অদৃশ্য হয়ে যায় না তা নিশ্চিত করার জন্য আমি কী পদক্ষেপ নিতে পারি, অর্থাৎ যদি ডাটাবেসের সাথে সংযোগটি হারিয়ে যায় তবে প্রক্রিয়া মাঝখানে?