ক্যোয়ারী কর্মক্ষমতা অপ্টিমাইজ করুন

শুধুমাত্র ক্লাউড ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণের জন্য প্রাসঙ্গিক।

ধীরগতির প্রশ্নের সমস্যা সমাধানের জন্য, ক্যোয়ারী এক্সিকিউশন প্ল্যান এবং রানটাইম এক্সিকিউশন প্রোফাইল পেতে Query Explain ব্যবহার করুন। নিম্নলিখিত বিভাগটি এক্সিকিউশন প্রোফাইলের উপর নির্ভর করে ক্যোয়ারী পারফরম্যান্স অপ্টিমাইজ করতে আপনি যে পদক্ষেপগুলি নিতে পারেন তা বর্ণনা করে:

ফলাফলের সংখ্যা সীমিত করুন

ক্যোয়ারীটি অনেক নথি ফেরত দিচ্ছে কিনা তা সনাক্ত করতে এক্সিকিউশন ট্রিতে রেকর্ড ফেরত দেওয়া ক্ষেত্রটি ব্যবহার করুন। $limit ক্লজ ব্যবহার করে ফেরত দেওয়া নথির সংখ্যা সীমিত করার কথা বিবেচনা করুন। এটি নেটওয়ার্কের মাধ্যমে ক্লায়েন্টদের কাছে ফিরে আসার পর ফলাফলের সিরিয়ালাইজড বাইটের আকার হ্রাস করে। যে ক্ষেত্রে Limit নোডের আগে একটি MajorSort নোড থাকে, ক্যোয়ারী ইঞ্জিন Limit এবং MajorSort নোডগুলিকে একত্রিত করতে পারে এবং একটি সম্পূর্ণ ইন-মেমরি ম্যাটেরিয়ালাইজেশন প্রতিস্থাপন করতে পারে এবং একটি TopN সর্ট দিয়ে সাজাতে পারে, যার ফলে প্রশ্নের মেমরির প্রয়োজনীয়তা হ্রাস পায়।

ফলাফল নথি আকার সীমিত

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

সূচী ব্যবহার করুন

সূচী সেট আপ এবং অপ্টিমাইজ করতে নিম্নলিখিত নির্দেশাবলী ব্যবহার করুন।

ক্যোয়ারী একটি সূচক ব্যবহার করছে কিনা তা সনাক্ত করুন

এক্সিকিউশন ট্রিতে লিফ নোড চেক করে কোয়েরিটি একটি সূচক ব্যবহার করছে কিনা তা আপনি সনাক্ত করতে পারেন। যদি এক্সিকিউশন ট্রির লিফ নোডটি একটি TableScan নোড হয়, তার মানে কোয়েরিটি একটি সূচক ব্যবহার করছে না এবং প্রাথমিক স্টোরেজ থেকে নথি স্ক্যান করছে। যদি একটি সূচী ব্যবহার করা হয়, তাহলে এক্সিকিউশন ট্রির লিফ নোড ইনডেক্সের আইডি এবং ইনডেক্স ক্ষেত্রগুলি প্রদর্শন করবে।

ব্যবহৃত সূচকটি অপ্টিমাইজ করা যায় কিনা তা চিহ্নিত করুন

একটি সূচক একটি প্রশ্নের জন্য উপযোগী যদি এটি নথির সংখ্যা কমাতে পারে যা ক্যোয়ারী ইঞ্জিনকে প্রাথমিক সঞ্চয়স্থান থেকে আনতে হবে বা যদি এটির ক্ষেত্র অর্ডার কোয়েরির সাজানোর প্রয়োজনীয়তা প্রদান করতে পারে।

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

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

সূচী তৈরি করুন

ইনডেক্স তৈরি করতে সূচক ব্যবস্থাপনা ডকুমেন্টেশন অনুসরণ করুন। আপনার ক্যোয়ারী সূচী ব্যবহার করতে পারে তা নিশ্চিত করতে, নিম্নলিখিত ক্রমে ক্ষেত্র সহ নিয়মিত (মাল্টিকি নয়) সূচী তৈরি করুন:

  1. সমতা অপারেটর ব্যবহার করা হবে যে সব ক্ষেত্র. ক্যোয়ারী জুড়ে পুনঃব্যবহারের সুযোগ বাড়ানোর জন্য, প্রশ্নগুলির মধ্যে সমতা অপারেটরগুলিতে ক্ষেত্রগুলির সংঘটনের হ্রাসের ক্রম অনুসারে ক্ষেত্রগুলিকে অর্ডার করুন৷
  2. সমস্ত ক্ষেত্র যা সাজানো হবে (একই ক্রমে)।
  3. যে ক্ষেত্রগুলি ক্যোয়ারী সীমাবদ্ধতার সিলেক্টিভিটি হ্রাসের ক্রমে পরিসীমা বা অসমতা অপারেটরগুলিতে ব্যবহার করা হবে৷
  4. যে ক্ষেত্রগুলি সূচীতে একটি প্রশ্নের অংশ হিসাবে ফেরত দেওয়া হবে: সূচীতে এই জাতীয় ক্ষেত্রগুলি সহ সূচকটি ক্যোয়ারী কভার করতে এবং প্রাথমিক সঞ্চয়স্থান থেকে দস্তাবেজ আনতে এড়াতে অনুমতি দেয়৷

ফিল্টারিং এবং অ্যারে ক্ষেত্র বাছাই করা প্রশ্নের জন্য, মাল্টিকি সূচী তৈরি করার কথা বিবেচনা করুন।

ক্যোয়ারী ইঙ্গিত ব্যবহার করুন

আপনি যদি ক্যোয়ারীটির জন্য আরও উপযুক্ত একটি সূচী তৈরি করে থাকেন কিন্তু ক্যোয়ারী ইঞ্জিন সেই সূচীটি ব্যবহার না করে, আপনি একটি ক্যোয়ারী ইঙ্গিত ব্যবহার করে ক্যোয়ারী ইঞ্জিনের সূচী পছন্দকে ওভাররাইড করতে পারেন।

Query Explain-এর সাথে এক্সিকিউট করা কোয়েরির আউটপুট সম্পর্কে আরও তথ্যের জন্য, Query execution রেফারেন্স দেখুন।