পোস্টগ্রেস ব্যাখ্যা বিশ্লেষণ কমান্ড

Postagresa Byakhya Bislesana Kamanda



ডাটাবেস সম্পর্কে, কর্মক্ষমতা এমন একটি বৈশিষ্ট্য যা একটি উচ্চ অগ্রাধিকার নেয়। এটি নিশ্চিত করে যে অ্যাপ্লিকেশনগুলি সর্বাধিক গতি এবং দক্ষতার সাথে ডেটা জিজ্ঞাসা করতে এবং লিখতে পারে।

ডাটাবেস অ্যাডমিনিস্ট্রেটর হিসাবে, আমাদের ডাটাবেস কর্মক্ষমতা বাড়ানোর সরঞ্জাম এবং পদ্ধতিগুলির সাথে আবিষ্ট হতে হবে।

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







তারপরে আমরা এই তথ্যটি ডাটাবেস কোয়েরিগুলি সনাক্ত করার পাশাপাশি সম্ভাব্য কর্মক্ষমতা বাধাগুলি চিহ্নিত করতে এবং ঠিক করতে ব্যবহার করতে পারি।



এই টিউটোরিয়ালে আলোচনা করা হয়েছে কিভাবে পোস্টগ্রেএসকিউএল-এ এক্সপ্লেন অ্যানালাইজ কমান্ড ব্যবহার করে কোয়েরি পারফরম্যান্স দেখতে ও অপ্টিমাইজ করতে হয়।



পোস্টগ্রেএসকিউএল ব্যাখ্যা বিশ্লেষণ করুন

কমান্ডটি বেশ সোজা। প্রথমত, আমরা যে ক্যোয়ারী বিশ্লেষণ করতে চাই তার শুরুতে EXPLAIN ANALYZE কমান্ডটি প্রিপেন্ড করতে হবে।





কমান্ড সিনট্যাক্স নিম্নরূপ:

বিশ্লেষণ ব্যাখ্যা করুন

একবার আপনি কমান্ডটি কার্যকর করলে, পোস্টগ্রেএসকিউএল প্রদত্ত ক্যোয়ারী সম্পর্কে একটি বিস্তারিত আউটপুট প্রদান করে।



ব্যাখ্যা বিশ্লেষণ কোয়েরি আউটপুট বোঝা

উল্লিখিত হিসাবে, একবার আমরা ব্যাখ্যা বিশ্লেষণ কমান্ডটি চালালে, PostgreSQL ক্যোয়ারী পরিকল্পনা এবং কার্যকরী পরিসংখ্যানের একটি বিশদ প্রতিবেদন তৈরি করে।

আউটপুট কলামের একটি সেট নিয়ে গঠিত যা দরকারী তথ্য ধারণ করে। ফলস্বরূপ কলামগুলি তাদের নিজ নিজ অর্থ সহ দেখানো হয়েছে:

QUERY প্ল্যান - এই কলামটি নির্দিষ্ট ক্যোয়ারীটির এক্সিকিউশন প্ল্যান প্রদর্শন করে। এক্সিকিউশন প্ল্যানটি অপারেশনের একটি ক্রমকে বোঝায় যা ডাটাবেস ইঞ্জিন সফলভাবে ক্যোয়ারীটি সম্পূর্ণ করার জন্য সম্পাদন করে।

পরিকল্পনা - দ্বিতীয় কলামটি হল প্ল্যান কলাম। এতে প্রতিটি অপারেশন বা এক্সিকিউশন প্ল্যানের ধাপের একটি পাঠ্য উপস্থাপনা রয়েছে। আবার, প্রতিটি অপারেশনকে ক্রিয়াকলাপের অনুক্রম নির্দেশ করার জন্য ইন্ডেন্ট করা হয়।

মোট খরচ - মোট খরচ কলাম প্রশ্নের আনুমানিক মোট খরচ প্রতিনিধিত্ব করে। খরচ একটি আপেক্ষিক পরিমাপ বোঝায় যা ডাটাবেস ক্যোয়ারী পরিকল্পনাকারী সর্বোত্তম কার্যকরী পরিকল্পনা নির্ধারণ করতে ব্যবহার করে।

প্রকৃত সারি – এই কলামটি ক্যোয়ারী এক্সিকিউশনের প্রতিটি ধাপে প্রসেস করা সারির সঠিক সংখ্যা দেখায়।

প্রকৃত সময় - এই কলামটি প্রতিটি অপারেশনের দ্বারা নেওয়া প্রকৃত সময় দেখায় যার মধ্যে অপারেশন সম্পাদনের সময় এবং সংস্থানগুলিতে ব্যয় করা সময় উভয়ই অন্তর্ভুক্ত থাকে।

পরিকল্পনার সময় - এই কলামটি একটি এক্সিকিউশন প্ল্যান তৈরি করতে ক্যোয়ারী প্ল্যানার যে সময় নেয় তা দেখায়। এর মধ্যে রয়েছে কোয়েরি অপ্টিমাইজেশানের মোট সময় এবং প্ল্যান জেনারেশন।

সঞ্চালনের সময় - এই কলামটি কোয়েরি চালানোর মোট সময় দেখায়। এর মধ্যে পরিকল্পনা এবং প্রশ্ন সম্পাদনের সময় ব্যয় করা সময়ও অন্তর্ভুক্ত।

PostgreSQL ব্যাখ্যা বিশ্লেষণ উদাহরণ

EXPLAIN ANALYZE স্টেটমেন্ট ব্যবহার করার কিছু মৌলিক উদাহরণ দেখা যাক।

উদাহরণ 1: বিবৃতি নির্বাচন করুন
আসুন পোস্টগ্রেএসকিউএল-এ একটি সাধারণ নির্বাচনী বিবৃতি কার্যকর দেখানোর জন্য ব্যাখ্যা বিশ্লেষণ বিবৃতিটি ব্যবহার করি।

ব্যাখ্যা বিশ্লেষণ ব্যাখ্যা করুন wp_users থেকে * নির্বাচন করুন যেখানে id > 3;

একবার আমরা পূর্ববর্তী বিবৃতিটি চালালে, আমাদের নিম্নরূপ একটি আউটপুট পাওয়া উচিত:

QUERY প্ল্যান
-------------------------------------------------- -----------------
wp_users-এ Seq স্ক্যান (cost=0.00..10.38 সারি=10 প্রস্থ=2256) (প্রকৃত সময়=0.009..0.010 সারি=7 লুপ=1)
ফিল্টার: (আইডি > 3)
ফিল্টার দ্বারা সরানো সারি: 3
পরিকল্পনার সময়: 0.995 ms
সঞ্চালনের সময়: 0.021 ms
(5 সারি)

এই ক্ষেত্রে, আমরা দেখতে পাচ্ছি যে কোয়েরি প্ল্যান বিভাগটি নির্দেশ করে যে ক্যোয়ারীটি wp_users টেবিলে একটি ক্রমিক স্ক্যান করে। ফিল্টার লাইনটি সেই অবস্থাকে নির্দেশ করে যা ফলস্বরূপ সারিগুলি ফিল্টার করতে ব্যবহৃত হয়।

তারপরে আমরা 'ফিল্টার দ্বারা সরানো সারি' দেখতে পাই যা ফিল্টার অবস্থার দ্বারা মুছে ফেলা সারির সংখ্যা দেখায়।

অবশেষে, এক্সিকিউশন টাইম কোয়েরির মোট এক্সিকিউশন সময় দেখায়। এই ক্ষেত্রে, ক্যোয়ারী 0.021ms লাগে।

উদাহরণ 2: একটি যোগদান বিশ্লেষণ
এসকিউএল যোগদানের সাথে জড়িত একটি আরও জটিল ক্যোয়ারী নেওয়া যাক। এই জন্য, আমরা Pagila নমুনা ডাটাবেস ব্যবহার. আপনি প্রদর্শনের উদ্দেশ্যে আপনার মেশিনে নমুনা ডাটাবেস ডাউনলোড এবং ইনস্টল করতে পারেন।

আমরা নিম্নলিখিত হিসাবে দেখানো একটি সহজ যোগদান চালাতে পারি:

SELECT f.title, c.name বিশ্লেষণ ব্যাখ্যা করুন
ফিল্ম থেকে চ
F.film_id = fc.film_id ON film_category fc এ যোগ দিন
C ON fc.category_id = c.category_id;

একবার আমরা প্রদত্ত ক্যোয়ারী চালানোর পরে, আমাদের আউটপুটটি দেখতে হবে:

আমাদের নিম্নলিখিত ক্যোয়ারী পরিকল্পনা অন্বেষণ করা যাক:

  1. নেস্টেড লুপ - এটি নির্দেশ করে যে যোগদান একটি নেস্টেড লুপ যোগদান কৌশল ব্যবহার করে।
  2. হ্যাশ জয়েন - এই অপারেশনটি ফিল্ম_বিভাগ এবং ফিল্ম টেবিলের সাথে হ্যাশ জয়েন অ্যালগরিদম ব্যবহার করে যোগদান করে। এই অপারেশনটির খরচ 77.50 এবং আনুমানিক 1000 সারি। যাইহোক, এই অপারেশনের জন্য প্রকৃত সময় লাগে 0.254 থেকে 0.439 মিলিসেকেন্ড, এবং এটি 1000টি সারি পুনরুদ্ধার করে।
  3. হ্যাশ কন্ড - এটি নির্দেশ করে যে যোগদানের শর্তটি ফিল্ম টেবিলের ফিল্ম_আইডি কলাম এবং ফিল্ম_বিভাগের কলামগুলির সাথে মেলে একটি হ্যাশ যোগদান ব্যবহার করে।
  4. ফিল্ম_বিভাগে সেক স্ক্যান - এই অপারেশনটি ফিল্ম_বিভাগের টেবিলে 16.00 এবং আনুমানিক 1000 সারি সহ একটি অনুক্রমিক স্ক্যান করে। এই অপারেশনের জন্য প্রকৃত সময় 0.008 থেকে 0.056 মিলিসেকেন্ড, এবং এটি 1000টি সারি পুনরুদ্ধার করে।
  5. ফিল্মের উপর সেক স্ক্যান - এই অপারেশনের ফলে আনুমানিক এবং প্রকৃত খরচ এবং সারি সহ ক্যোয়ারী ফিল্ম টেবিলে একটি ক্রমিক স্ক্যান করে।
  6. Memoize - এই অপারেশনটি পরবর্তী ব্যবহারের জন্য film_category এবং ফিল্ম টেবিলের মধ্যে যোগদানের ফলাফল ক্যাশ করে।
  7. ক্যাশে কী - এটি নির্দেশ করে যে ক্যাশে কী যা মেমোাইজেশনের জন্য ব্যবহৃত হয় তা film_category থেকে category_id কলামের উপর ভিত্তি করে।
  8. ক্যাশে মোড - এটি নির্দেশ করে যে ক্যোয়ারী লজিক্যাল ক্যাশে মোড ব্যবহার করে।
  9. হিট, মিস, ইভিকশন, ওভারফ্লোস - তিনটি লাইন ক্যাশে, হিট সংখ্যা, মিস, উচ্ছেদ এবং ওভারফ্লো সম্পর্কে পরিসংখ্যান প্রদান করে। এই ব্লকটি ক্যোয়ারী এক্সিকিউশনের সময় মেমরি ব্যবহারও অন্তর্ভুক্ত করে।
  10. category_pkey ব্যবহার করে সূচী স্ক্যান করুন - এটি প্রাথমিক কী সূচক ব্যবহার করে বিভাগ টেবিলে একটি সূচক স্ক্যান করে এমন অপারেশন দেখায়।
  11. সূচী শর্ত - এটি দেখায় যে সূচক স্ক্যানটি সেই শর্তের উপর ভিত্তি করে যা বিভাগ সারণির category_id কলামের সাথে মেলে।
  12. পরিকল্পনার সময় - এই লাইনটি ক্যোয়ারী প্ল্যানিংয়ের জন্য নেওয়া সময় দেখায় যা 3.005 মিলিসেকেন্ড।
  13. এক্সিকিউশন টাইম - অবশেষে, এই লাইনটি কোয়েরির মোট এক্সিকিউশন টাইম দেখায় যা 0.745 মিলিসেকেন্ড।

সেখানে আপনি এটা আছে! PostgreSQL-এ একটি সাধারণ যোগদানের সম্বন্ধে বিস্তারিত তথ্য।

উপসংহার

আপনি PostgreSQL-এ ব্যাখ্যা বিশ্লেষণ বিবৃতির শক্তি এবং ব্যবহার আবিষ্কার করেছেন। ব্যাখ্যা বিশ্লেষণ বিবৃতি কোয়েরি বিশ্লেষণ এবং অপ্টিমাইজেশনের জন্য একটি শক্তিশালী হাতিয়ার। দক্ষ এবং কম সম্পদ-নিবিড় প্রশ্ন তৈরি করতে এই টুলটি ব্যবহার করুন।