এই পোস্টটি Oracle®-এ SQL প্রোফাইল এবং বেসলাইনগুলির মধ্যে পার্থক্যগুলিকে হাইলাইট করে এবং একটি প্রশ্ন টিউন করার সময় এটি কীভাবে কাজ করে তা ব্যাখ্যা করে৷
অপ্টিমাইজার, প্রোফাইল, এবং বেসলাইন
উচ্চ স্তরে, এই তিনটি উপাদান একসাথে কাজ করে:
-
ক্যোয়ারী অপ্টিমাইজার ক্যোয়ারী সম্পাদনের জন্য সর্বোত্তম পরিকল্পনা পেতে সিস্টেম পরিসংখ্যান, বাইন্ড ভেরিয়েবল এবং সংকলনের মতো তথ্য ব্যবহার করে। যাইহোক, কখনও কখনও ইনপুট ত্রুটি একটি উপ-অনুকূল পরিকল্পনার দিকে নিয়ে যায়৷
-
SQL প্রোফাইলে সহায়ক তথ্য থাকে যা এই সমস্যাটিকে কমিয়ে দেয়৷ তারা এই ভুলগুলি কমিয়ে দেয় এবং অপ্টিমাইজারকে সর্বোত্তম পরিকল্পনা নির্বাচন করতে সাহায্য করে৷
-
SQL স্টেটমেন্টের জন্য এসকিউএল প্ল্যান বেসলাইন গৃহীত পরিকল্পনাগুলির একটি সেট নিয়ে গঠিত। বিবৃতিটি বিশ্লেষণ করার পরে, অপ্টিমাইজার গৃহীত পরিকল্পনাগুলির সেট থেকে সেরা পরিকল্পনা নির্বাচন করে। যদি খরচ অপ্টিমাইজার অন্য একটি ভাল পরিকল্পনা খুঁজে পায়, তাহলে এটি পরিকল্পনার ইতিহাসে নতুন পরিকল্পনা যোগ করে। যাইহোক, অপ্টিমাইজার নতুন প্ল্যানটি ব্যবহার করে না যতক্ষণ না এটি যাচাই করে যে এটি বর্তমানে গৃহীত প্ল্যানের চেয়ে ভাল পারফর্ম করবে৷
এইভাবে চিন্তা করুন:SQL প্রোফাইলগুলি সর্বোত্তম পরিকল্পনা নির্বাচন করতে সাহায্য করার জন্য অপ্টিমাইজারকে তথ্য দেয় কিন্তু কোনও নির্দিষ্ট পরিকল্পনা নির্বাচন করতে অপ্টিমাইজারকে বাধ্য করে না৷ এসকিউএল প্ল্যান বেসলাইনগুলি অপ্টিমাইজার প্ল্যান নির্বাচনকে গৃহীত পরিকল্পনাগুলির একটি সেটে সীমাবদ্ধ করে৷ আপনি যদি চান খরচ-ভিত্তিক পরিকল্পনা বিবেচনা করুন, সেগুলিকে পরিকল্পনার গৃহীত বেসলাইনে অন্তর্ভুক্ত করুন৷
আপনি যদি অপ্টিমাইজারকে একটি কম খরচের পরিকল্পনা ব্যবহার করতে চান এবং সর্বশেষ পরিসংখ্যান ব্যবহার করতে চান তবে SQL প্রোফাইল ব্যবহার করুন। আপনি যখন পরিকল্পনার একটি নির্দিষ্ট সেট ব্যবহার করতে চান তখন বেসলাইন ব্যবহার করুন। যদি SQL প্ল্যান বেসলাইনগুলি গৃহীত সেট থেকে সেরা পরিকল্পনা পেতে না পারে, তাহলে পরিবর্তে SQL প্রোফাইল ব্যবহার করুন।
SQL পরিকল্পনা ব্যবস্থাপনা
SQL প্ল্যান ম্যানেজমেন্ট (SPM) এর নিম্নলিখিত উপাদান রয়েছে:
- প্ল্যান ক্যাপচার
- পরিকল্পনা নির্বাচন
- পরিকল্পনা বিবর্তন
SPM প্ল্যান ক্যাপচার
৷আপনি যখন কোনো স্টেটমেন্ট এক্সিকিউট করেন, সিস্টেম হার্ড পার্স করে এবং উপলভ্য SQL প্রোফাইল অনুযায়ী একটি কস্টপ্ল্যান তৈরি করে। এটি একটি খরচ-ভিত্তিক পরিকল্পনা নির্বাচন করার পরে, এটি SQL প্ল্যান বেসলাইনে উপলব্ধ পরিকল্পনাগুলির তুলনা করে। যদি একটি খরচ-ভিত্তিক প্ল্যান গৃহীত পরিকল্পনাগুলির একটির সাথে মিলে যায়, তাহলে আপনি সেই পরিকল্পনাটি ব্যবহার করতে পারেন৷ যদি প্ল্যানটি মেলে না, সিস্টেম এটিকে প্ল্যান বেসলাইনে অস্বীকৃত প্ল্যান হিসাবে যোগ করে৷
SPM প্ল্যান নির্বাচন
৷আপনি যখন একটি বেসলাইন প্ল্যানের সাথে SQL স্টেটমেন্ট চালান, তখন এটি সেই SQL এর জন্য সেরা প্ল্যান বেছে নেয়। অপ্টিমাইজার একই প্রক্রিয়া ব্যবহার করে। উপলব্ধ SQL প্রোফাইল প্রতিটি পরিকল্পনার জন্য আনুমানিক খরচকেও প্রভাবিত করে এবং সেই অনুযায়ী একটি প্ল্যান নির্বাচন করে৷
SPM প্ল্যান বিবর্তন
SPM-এর শেষ উপাদান হল অগ্রহণযোগ্য পরিকল্পনার বিবর্তন, যা স্বীকৃত পরিকল্পনার বিপরীতে অগ্রহণযোগ্য পরিকল্পনাকে পরীক্ষা করে। এই প্রক্রিয়াটি একটি প্রশ্নের দ্বারা নেওয়া সময় এবং প্রয়োজনীয় CPU সংস্থানগুলি বিবেচনা করে সর্বোত্তম পরিকল্পনা মূল্যায়ন করে। এটি প্রশ্নের খরচ অনুযায়ী সেরা পরিকল্পনা গ্রহণ করে। যদি একটি SQL প্রোফাইল উপলব্ধ থাকে, তাহলে এটি আনুমানিক খরচকে প্রভাবিত করে।
প্রোফাইল বনাম বেসলাইন তুলনা
নিম্নলিখিত সারণী, https://www.cnblogs.com/princessd8251/articles/3637461.html থেকে, SQL প্রোফাইল এবং SQL পরিকল্পনা বেসলাইন তুলনা করে:
স্থাপত্য
নিম্নলিখিত চিত্রটি এসকিউএল প্ল্যান বেসলাইন আর্কিটেকচার দেখায়:
চিত্রের উৎস:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/)
এসকিউএল প্ল্যান বেসলাইন লোড করুন
নিম্নলিখিত চিত্রটি SQL প্ল্যান বেসলাইন লোড করার দুটি উপায় দেখায়:
চিত্রের উৎস:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/
প্রথম পদ্ধতিতে, আপনি OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES সেট করতে পারেন আরম্ভ করার পরামিতি TRUE
স্বয়ংক্রিয় পরিকল্পনা ক্যাপচার ব্যবহার করতে. এই প্রারম্ভিক প্যারামিটার হল FALSE
ডিফল্টরূপে, তাই এটিকে TRUE
এ সেট করুন নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
দ্বিতীয় পদ্ধতিতে, আপনি DBMS_SPM ব্যবহার করতে পারেন ম্যানুয়ালি SQL প্ল্যান বেসলাইন পরিচালনা করতে প্যাকেজ। নিম্নলিখিত উদাহরণে দেখানো হিসাবে একটি SQL টিউনিং সেট থেকে পরিকল্পনা লোড করুন:
এসকিউএল প্ল্যান বেসলাইন ম্যানুয়ালি লোড করুন
প্ল্যান বেসলাইন ম্যানুয়ালি লোড করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
এসকিউএল প্ল্যান বেসলাইন ব্যবহার পরীক্ষা করুন
এসকিউএল প্ল্যান বেসলাইন লোড করার পরে, থিঅপ্টিমাইজার SQL প্ল্যান বেসলাইন ব্যবহার করছে কিনা তা দেখতে আপনাকে এসকিউএল এক্সিকিউট করতে হবে। আপনি SQL_TEXT এবং নিম্নরূপ পরিকল্পনার নাম ব্যবহার করে SQL প্ল্যান বেসলাইন জিজ্ঞাসা করতে পারেন:
এসকিউএল প্ল্যান বেসলাইন প্রদর্শন করুন
SQL প্ল্যান বেসলাইন প্রদর্শন করতে নিম্নলিখিত ক্যোয়ারী চালান:
এসকিউএল প্ল্যান বেসলাইন বাদ দিন
এসকিউএল প্ল্যান বেসলাইন ড্রপ করতে, কোন SQL প্ল্যানথে অপ্টিমাইজার ব্যবহার করছে তা পরীক্ষা করতে নিম্নলিখিত ক্যোয়ারী চালান:
তারপর, আপনি প্ল্যানটি ব্যবহার করার পরে, বেসলাইন ড্রপ করতে নিম্নলিখিত কমান্ডটি চালান:
Oracle SQL প্রোফাইল
৷SQL টানিং উপদেষ্টা, যা আপনি Oracle Enterprise Manager(OEM) এর মাধ্যমে বা কমান্ড-লাইন ক্যোয়ারী ব্যবহার করে ট্রিগার করেন, একটি SQL স্টেটমেন্টের জন্য SQL প্রোফাইল তৈরি করতে পারে। এই প্রোফাইলে বিবৃতি সম্পর্কে অতিরিক্ত তথ্য রয়েছে৷
উদাহরণ
এই উদাহরণে, আপনি প্রথমে sql_id এর বিপরীতে SQL টিউনিং উপদেষ্টা চালান এবং তারপর SQL প্রোফাইলে ক্রিয়াকলাপ সম্পাদন করুন:
1. এসকিউএল টিউনিং অ্যাডভাইজার চালান
sql_id, 6dkrnbx1zdwy38
-এর জন্য নিম্নলিখিত SQL টিউনিং উপদেষ্টা কোডটি চালান :
নিম্নলিখিত DBMS_SQLTUNE.report_tuning_task চালান সুপারিশের জন্য:
2. sql_profile
স্বীকার করুনsql_profile গ্রহণ করতে নিম্নলিখিত কোডটি চালান:
3. sql_profile
এর নাম পরীক্ষা করুনsql_profile নাম চেক করতে নিম্নলিখিত ক্যোয়ারী ব্যবহার করুন:
4. sql_profile
নিষ্ক্রিয় করুনsql_profile নিষ্ক্রিয় করতে নিম্নলিখিত কোডটি চালান:
এটি সক্ষম করতে, DISABLED
থেকে মান পরিবর্তন করুন ENABLED
করতে .
5. sql_profile
ফেলে দিনsql_profile ড্রপ করতে নিম্নলিখিত কোডটি চালান:
উপসংহার
আপনি যখন কোনো SQL স্টেটমেন্ট এক্সিকিউট করেন, তখন অপটিমাইজার একটি এক্সিকিউশন প্ল্যান তৈরি করে কোয়েরি পার্স করে, হার্ড ডিস্ক থেকে ডেটা পুনরুদ্ধার করে এবং মেমরিতে রাখে। SQL প্রোফাইল এবং বেসলাইন অপ্টিমাইজারকে সর্বনিম্ন ব্যয়বহুল প্ল্যানিন শর্তাবলী এবং CPU বেছে নিতে গাইড করে। খরচ একটি ভাল SQL প্ল্যান দক্ষতার সাথে একটি কোয়েরি চালায় এবং দ্রুত কাঙ্খিত ফলাফল প্রদান করে।
আমাদের ডেটাবেস পরিষেবাগুলি সম্পর্কে আরও জানুন৷
৷কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাব ব্যবহার করুন। আপনি আমাদের সাথে একটি কথোপকথনও শুরু করতে পারেন৷
৷