অব্যবহৃত সূচিগুলি বাদ দেওয়া - অপ্রত্যাশিত বিপদের মূল্যায়ন


16

আমাদের কাছে ডিএমভির পরিসংখ্যান অনুসারে শত শত অব্যবহৃত সূচী সহ একটি খুব বড় ডাটাবেস রয়েছে, যা জুলাইয়ে সার্ভারটি শেষবার রিবুট হওয়ার পরে থেকেই জমে উঠেছে। আমাদের ডিবিএর মধ্যে একটি নীচে সাবধানী বিবৃতি দিয়েছে, যা আমার কাছে বোধগম্য নয়:

  1. আমরা একটি সূচক ফেলে দেওয়ার আগে আমাদের এটি নিশ্চিত করতে হবে যে এটি কোনও স্বতন্ত্রতা সীমাবদ্ধতা প্রয়োগ করছে না কিনা, কারণ ক্যোয়ারী অপ্টিমাইজারের এই সূচকটি থাকতে পারে।
  2. যখনই কোনও সূচক তৈরি করা হয়, তখন সেই সূচী সম্পর্কিত পরিসংখ্যানগুলি এসকিউএল সার্ভারেও তৈরি করা হয়। কোনও ক্যোয়ারী সূচকটি ব্যবহার করছে না তবে এটি সম্ভবত তার পরিসংখ্যান ব্যবহার করছে। সুতরাং আমরা কোনও পরিস্থিতিতে পড়তে পারি, একটি সূচি বাদ দেওয়ার পরে একটি নির্দিষ্ট ক্যোয়ারী কার্য সম্পাদন সত্যিই খারাপ হয়। এসকিউএল সার্ভার পরিসংখ্যানের ব্যবহারের পরিসংখ্যান রাখে না। যদিও আমাদের ডাটাবেসে "অটো তৈরি পরিসংখ্যান" বৈশিষ্ট্য সক্ষম করা আছে, কোয়েরি অপ্টিমাইজারটি অনুপস্থিত পরিসংখ্যান তৈরি করার আগে কোন প্যারামিটারগুলি অভ্যন্তরীণভাবে পূরণ করতে হবে তা আমি জানি না।

# 1 সম্পর্কিত, আমার কাছে মনে হয় এসকিউএল সার্ভার আসলে একটি সন্নিবেশ / আপডেট করার আগে স্বাতন্ত্র্যটি নির্ধারণ করার জন্য সূচীতে একটি অনুসন্ধান করবে এবং সুতরাং, সূচকটি ব্যবহৃত হচ্ছে না হিসাবে প্রদর্শিত হবে না।

# 2 সম্পর্কিত, এটি কি সত্যিই সম্ভব?

যাইহোক, যখন আমি বলি যে কোনও সূচক ব্যবহার করা হয়নি, তখন আমার অর্থ কোনও সিক্স এবং কোনও স্ক্যান নয়।


3
আমি আপনাকে সূচকটি অক্ষম করার পরামর্শ দিচ্ছি যখন আপনি সম্পূর্ণ নিশ্চিত হন যে চলতি বছরের শেষের প্রতিবেদনগুলিও সূচকটি ব্যবহৃত হয় না।
কিন শাহ

উত্তর:


17

আপনার ডিবিএর উদ্বেগ উভয়ই বৈধ।

# 1 সম্পর্কিত, আমার কাছে মনে হয় এসকিউএল সার্ভার আসলে একটি সন্নিবেশ / আপডেট করার আগে স্বাতন্ত্র্যটি নির্ধারণ করার জন্য সূচীতে একটি অনুসন্ধান করবে এবং সুতরাং, সূচকটি ব্যবহৃত হচ্ছে না হিসাবে প্রদর্শিত হবে না।

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

# 2 সম্পর্কিত, এটি কি সত্যিই সম্ভব?

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

সূচকটি বাদ দেওয়া সম্পর্কিত সূচকগুলির পরিসংখ্যানগুলিও সরিয়ে ফেলবে, যা পরবর্তী সময় বিবৃতিটি পুনরায় কম্পাইল করার পরে পরিকল্পনার গুণমানকে প্রভাবিত করতে পারে। সূচকের পরিসংখ্যানগুলি কার্ডিনালিটি অনুমানের গণনায় ব্যবহার করা যেতে পারে যা চূড়ান্ত পরিকল্পনার উপর নির্ভর করে, এমনকি যেখানে সূচকটি চূড়ান্ত পরিকল্পনায় শারীরিকভাবে উপস্থিত না থাকে।

আপনার ডিবিএ তার জিনিসগুলি জানেন।

এগুলির কোনওটির অর্থ এই নয় যে দৃশ্যত-অব্যবহৃত সূচিগুলি কখনই সরানো উচিত নয় । আমি কেবল বলছি যে আপনার ডিবিএর উদ্বেগগুলি বৈধ, এবং উপযুক্ত টেস্টিং এবং পুনরুদ্ধারের পরিকল্পনার সাথে আপনার সে অনুযায়ী পরিবর্তনটি পরিকল্পনা করা উচিত। আমার অভিজ্ঞতা হিসাবে, পয়েন্ট # 1 # 2 এর চেয়ে সমস্যাযুক্ত হওয়ার সম্ভাবনা বেশি তবে এটি আপনার অবস্থার সাথে প্রযোজ্য কিনা তা আমার জানার কোনও উপায় নেই।

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