আমার পরীক্ষার ডাটাবেসে আমার 250K সারি সহ একটি টেবিল রয়েছে। (উত্পাদন কয়েকশ মিলিয়ন আছে, আমরা সেখানে একই সমস্যাটি পর্যবেক্ষণ করতে পারি।) টেবিলটির একটি এনভারচার 2 (50) স্ট্রিং আইডেন্টিফায়ার রয়েছে, নাল নয়, এতে অনন্য সূচক রয়েছে (এটি পিকে নয়)।
সনাক্তকারীরা প্রথম অংশ নিয়ে গঠিত যা আমার পরীক্ষার ডাটাবেসে 8 টি আলাদা মান রয়েছে (এবং প্রায় এক হাজার উত্পাদনে), তারপরে একটি @ চিহ্ন এবং শেষ পর্যন্ত একটি সংখ্যা, 1 থেকে 6 ডিজিট দীর্ঘ। উদাহরণস্বরূপ, 50,000 সারি হতে পারে যা 'ABCD_BGX1741F_2006_13_20110808.xML @' দিয়ে শুরু হয় এবং এর পরে 50 হাজার বিভিন্ন সংখ্যা রয়েছে।
আমি যখন তার শনাক্তকারীর উপর ভিত্তি করে একটি একক সারির জন্য জিজ্ঞাসা করি, তখন কার্ডিনালিটিটি হিসাবে অনুমান করা হয়, ব্যয়টি খুব কম, এটি দুর্দান্ত কাজ করে। যখন আমি কোনও আইএন এক্সপ্রেশন বা একটি ওআর এক্সপ্রেশনে বিভিন্ন শনাক্তকারী সহ একাধিক সারি অনুসন্ধান করি, তখন সূচীর জন্য অনুমানগুলি সম্পূর্ণ ভুল, সুতরাং একটি পূর্ণ টেবিল স্ক্যান ব্যবহার করা হয়। যদি আমি সূচকটিকে কোনও ইঙ্গিত দিয়ে জোর করে বলি তবে এটি খুব দ্রুত, পূর্ণ টেবিল স্ক্যানটি প্রকৃতপক্ষে ধীর গতির অর্ডার কার্যকর করা হয় (এবং আরও অনেক ধীর উত্পাদনে)। সুতরাং এটি একটি অপ্টিমাইজার সমস্যা।
পরীক্ষা হিসাবে, আমি একই ডিডিএল এবং সঠিক একই সামগ্রী সহ টেবিলটি একই ধরণের (একই স্কিমা + টেবিলস্পেসে) নকল করেছিলাম। আমি ভাল পরিমাপের জন্য প্রথম টেবিলটিতে অনন্য সূচকটি পুনরায় তৈরি করেছি এবং ক্লোন টেবিলের উপর ঠিক একই সূচকটি তৈরি করেছি। আমি ক DBMS_STATS.GATHER_SCHEMA_STATS('schemaname',estimate_percent=>100,cascade=>true);
। এমনকি আপনি দেখতে পারেন যে সূচকের নামগুলি পরপর রয়েছে। সুতরাং এখন দুটি টেবিলের মধ্যে একমাত্র পার্থক্যটি হ'ল প্রথমটি দীর্ঘ সময় ধরে এলোমেলোভাবে ক্রমযুক্ত লোড করা হয়েছিল, ডিস্কে ছড়িয়ে ছিটিয়ে থাকা ব্লকগুলি (একাধিক বড় টেবিলের সাথে একটি টেবিল স্পেসে) দ্বিতীয়টি একটি ব্যাচড হিসাবে লোড করা হয়েছিল ঢোকান-নির্বাচন করুন। তা ছাড়া আমি কোনও পার্থক্য কল্পনা করতে পারি না। (সর্বশেষ বড় মোছার পরে মূল টেবিলটি সঙ্কুচিত করা হয়েছে, এবং এর পরে একটিও মুছে ফেলা হয়নি))
এখানে অসুস্থ এবং ক্লোন টেবিলের জন্য ক্যোয়ারী পরিকল্পনা রয়েছে (কালো ব্রাশের নীচে স্ট্রিংগুলি পুরো ছবিতে একই এবং তারা ধূসর ব্রাশের নীচেও রয়েছে)):
(এই উদাহরণে, 1867 সারি রয়েছে যা সনাক্তকারী দিয়ে শুরু করা হয় যা কালো রঙের ব্রাশযুক্ত 2 কাকতালীয় ঘটনা, ওরাকল শনাক্তকারীদের শেষের বিষয়ে চিন্তা করে না বলে মনে হয়))
এই আচরণের কারণ কী হতে পারে? স্পষ্টতই উত্পাদনে টেবিলটি পুনরায় তৈরি করা বেশ ব্যয়বহুল হবে।
USER_TABLES: http://i.stack.imgur.com/nDWze.jpg USER_INDEXES: http://i.stack.imgur.com/DG9um.jpg আমি কেবল স্কিমা এবং টেবিলস্পেসের নাম পরিবর্তন করেছি। আপনি দেখতে পাচ্ছেন যে টেবিল এবং সূচীর নামগুলি ক্যোয়ারী প্ল্যানের স্ক্রিনশটের মতো।