কম্পিউটার

ওরাকল ডাটাবেসে মেমরি টিউনিং

মেমরি টিউনিং ওরাকল মেমরি উপাদানগুলিতে বিনামূল্যে মেমরি বিতরণ বা পুনরায় বন্টন করে। এটি মূলত ওরাকল কোয়েরিতে পারফরম্যান্স টিউনিংয়ের জন্য ব্যবহৃত হয়।

আজকাল, প্রতিটি ক্লায়েন্টের জন্য একটি প্রধান সমস্যা ডাটাবেস কর্মক্ষমতা সম্পর্কিত। এই ব্লগটি ব্যাখ্যা করে কিভাবে ডাটাবেসে মেমরি টিউন করা যায় যার ফলে ডাটাবেসে উচ্চ কার্যকারিতা পাওয়া যায়। নিম্নে বিভিন্ন ধরণের মেমরি টিউনিং পদ্ধতি রয়েছে যা উপলব্ধ:OS লেভেল প্রসেস টিউনিং, CPU টিউনিং, RAM টিউনিং, ডাটাবেস টিউনিং ইত্যাদি। এই ব্লগে আমি ডাটাবেসে মেমরি টিউনিং সম্পর্কে আলোচনা করা হবে।

ডাটাবেস মেমরি টিউনিং:

ডাটাবেসের জন্য মেমরি টিউনিং সিস্টেম গ্লোবাল এরিয়া (এসজিএ) টিউনিং ছাড়া কিছুই নয়। নিম্নলিখিত SGA টিউনিং এর প্রধান উপাদানগুলির তালিকা রয়েছে। আসুন এই উপাদানগুলির প্রতিটি বিস্তারিতভাবে দেখি:

  1. পুল রাখুন
  2. ডিফল্ট পুল, রিসাইকেল পুল, স্ট্রিম পুল
  3. ডিবি বাফার ক্যাশে:ফ্রি বাফার, পরিবর্তিত বাফার, পিন করা বাফার
  4. শেয়ারড পুল

পুল রাখুন:

কিছু নির্দিষ্ট প্যাকেজ রয়েছে যা প্রতিদিন ব্যবহার করা হয়। কর্মক্ষমতা বাড়াতে, আপনাকে সেই প্যাকেজগুলিকে SGA-তে রাখতে হবে। পদ্ধতির সাহায্যে, আপনি সেই প্যাকেজটিকে কিপ পুলে রাখতে পারেন৷ যদি SGA-তে বরাদ্দ করা স্থানটি বন্ধ হয়ে যায়, তাহলে SGA-কে RAM-তে পুনরায় বরাদ্দ করতে হবে, সেই সময়ে প্যাকেজটি কিপ পুলে রাখার পরেও, এটি হবে বন্ধ flushed পরের বার যখন আপনি প্যাকেজটি পুনরায় চালু করবেন এবং চালাবেন, আপনি ডাটাবেস বন্ধ না করা পর্যন্ত প্যাকেজটি রাখা পুলে থাকবে। এতে করে আমরা I/O's কমিয়ে দেই।

হিট রেশনের সাহায্যে, আপনি নিশ্চিত করতে পারেন যে পার্স কোড এক্সিকিউশন প্ল্যান লাইব্রেরি ক্যাশে থেকে ফ্লাশ করা হচ্ছে। লাইব্রেরি ক্যাশের জন্য হিট অনুপাত> 85% হওয়া উচিত।

স্ট্রিম পুল ডেটা পাম্পের জন্য একটি বাফার তৈরি করতে ব্যবহৃত হয়। প্রতিদিন, কার্যক্ষমতা বাড়াতে নির্দিষ্ট টেবিল (ছোট টেবিল) ব্যবহার করা হয়। এই টেবিলগুলিকে SGA (কিপ পুল) তে রাখা ভাল। এতে কর্মক্ষমতা বাড়বে যেখানে আপনি ডিস্ক থেকে ডেটা আনছেন না, কিন্তু মেমরি থেকেই। বড় টেবিলের জন্য আমাদের রিসাইকেল পুল আছে

ডিফল্টরূপে, যখনই আমরা ব্লক আকারে সেই টেবিলগুলি (ছোট টেবিল) নির্বাচন করি ডেটা বাফার ক্যাশে আনা হয় এবং এটি ডিফল্ট পুলে রাখা হবে . আপনি অন্য টেবিল নির্বাচন করার পরে এই ডিফল্ট পুলটি ফ্লাশ হয়ে যায়। আপনার যদি বাফারে জায়গা থাকে তবে এটি জরিমানা, যদি না থাকে তবে এটি নতুন টেবিলগুলিকে মিটমাট করার জন্য আগের টেবিলগুলিকে ফ্লাশ করবে৷ কর্মক্ষমতা বাড়াতে, ডিফল্ট পুল এর পরিবর্তে ছোট টেবিলগুলিকে কিপ পুলে রাখুন৷ . ডেটা বাফার ক্যাশের জন্য হিট অনুপাত> 95% হওয়া উচিত৷ যদি এটি 95% এর কম হয় তবে আমাদের ডাটাবেস বাফার ক্যাশের আকার পরিবর্তন করতে হবে৷

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

ফ্রি বাফার

চিত্র(ডেটা) পরিবর্তন করার আগে সংশোধিত ডেটা ডেটা বাফার ক্যাশে আনা ব্লক এবং কপি ব্যবহার করে। এই বাফারগুলিকে ফ্রি বাফার বলা হয়৷ নীচের চিত্র থেকে, 1000 মান বিশিষ্ট ডিস্ক বা 1000 মান বিশিষ্ট মেমরি একই৷ নীচের ছবিটি বিনামূল্যে বাফার দেখায়:

সংশোধিত বাফার

পরিবর্তিত বাফারগুলিকে ডার্টি বাফার হিসাবেও উল্লেখ করা হয়। ডিস্কের ইমেজ এবং ইমেজ ইন ডাটা বাফার ক্যাশে ডেটা পরিবর্তন করা হয়েছে, কিন্তু এই বাফার বা ডেটা এখনও ডিস্কে লেখা হয়নি। এই বাফারগুলিকে বলা হয় ডার্টি বাফার৷

নিম্নলিখিত চিত্রটি পরিবর্তিত বাফার দেখায়:

পিন করা বাফার

ডিবি বাফার ক্যাশে ডেটা প্রতিবার পরিবর্তন করা হবে। সার্ভার প্রক্রিয়া পরবর্তী লেনদেনের জন্য এই পরিবর্তিত ডেটা নির্বাচন করবে। এই নির্বাচিত ডেটা পিন করা ডেটা বা বাফার ছাড়া কিছুই নয়৷

শারীরিক পড়া :ওরাকল ডেটা ব্লক করে যা ওরাকল I/O সম্পাদন করে ডিস্ক থেকে পড়ে।

যৌক্তিক পড়া :যদি ওরাকল নিজেই ডাটাবেস বাফার ক্যাশে থেকে ডেটা পড়ে একটি অনুরোধ সন্তুষ্ট করতে পারে তবে এটি লজিক্যাল রিডের অধীনে আসে৷

ডিবি ব্লক পায় :যখন ওরাকল ডাটাবেস বাফার ক্যাশে প্রয়োজনীয় ডেটা খুঁজে পায়, তখন ওরাকল পরীক্ষা করে যে ডেটা প্রতিশ্রুতিবদ্ধ কি না, যদি প্রতিশ্রুতিবদ্ধ হয় তবে বাফারগুলি থেকে নিয়ে আসে। এই বাফারগুলি ডিবি বাফার গেটস নামেও পরিচিত৷

সঙ্গত পড়া :ডাটাবেস বাফার ক্যাশে, যে ব্লকগুলি উপস্থিত, পরিবর্তিত কিন্তু প্রতিশ্রুতিবদ্ধ নয়। তাই, ডাটা আনডু ডেটাফাইল থেকে আনা উচিত।

db_buffer_cache এর লক্ষ্য হল লজিক্যাল রিড বৃদ্ধি করা।

নরম পার্সিং :যদি আমাদের লাইব্রেরি ক্যাশে ইতিমধ্যেই এক্সিকিউশন প্ল্যান উপলব্ধ থাকে, তবে এটি ডিস্কে যাবে না, এটি বিদ্যমান এক্সিকিউশন প্ল্যান থেকে একটি পার্স প্ল্যান (পার্স কোড) তৈরি করবে। একে বলা হয় সফট পার্স।

হার্ড পার্সিং :একটি পার্স কোড তৈরি করতে, এটি কোন এক্সিকিউশন প্ল্যান উপলব্ধ আছে কিনা তা পরীক্ষা করবে, যদি এক্সিকিউশন প্ল্যান উপলব্ধ থাকে তবে এটি নরম পার্সের সাথে যায়৷ যদি এক্সিকিউশন প্ল্যান উপলব্ধ না হয়, তাহলে এটি হার্ড পার্স করে যার মানে এটি ডিস্কে চলে যায়।

শেয়ারড পুল :শেয়ার্ড পুল হল লাইব্রেরি ক্যাশে এবং ডেটা ডিকশনারি ক্যাশের সংমিশ্রণ৷

লাইব্রেরি ক্যাশে: লাইব্রেরি ক্যাশের লক্ষ্য হল নরম পার্সিং বৃদ্ধি করা

লক্ষ্য অর্জনের পদ্ধতি:

  1. বাইন্ড ভেরিয়েবল ব্যবহার করে

  2. সংরক্ষিত পদ্ধতি লিখে

  3. হিট রেশিও (শেয়ার করা পুলের আকার না বাড়ালে> 85% হওয়া উচিত)

  4. DBMS_Shared_pool (প্যাকেজ) হিট রেশিও SQL কোয়েরি ব্যবহার করে মেমরি টিউন করার ক্ষেত্রে প্রধান ভূমিকা পালন করে।

ডেটা অভিধান ক্যাশে :একে সারি ক্যাশেও বলা হয়। শেয়ার্ড পুলের আকার না বাড়ালে ডেটা ডিকশনারি ক্যাশে হিট রেশিও অবশ্যই>85% হতে হবে।

নিম্নলিখিত নমুনা প্রশ্নগুলি হিট অনুপাত গণনা করার জন্য৷

select (sum(pinhits)/sum(pins))*100 as lchitratio from v$librarycache;

select namespace, pins, pinhits, reloads from v$librarycache order by namespace;

dbms_Shared_pool-এর প্যাকেজ পেতে অনুগ্রহ করে @$ORACLE_HOME/rdbms/admin/dbmspool.sql চালান

select namespace, kept, locks, executions from v$db_object_cache where type like '%PROC%';

ডেটা অভিধান ক্যাশে হিট অনুপাত:

select (sum(gets-getmisses-fixed))/sun(gets) as "ddchitratio" from v$rowcache;

লগ বাফার ক্যাশে পুনরায় করুন:

v$sysstat থেকে নাম, মান নির্বাচন করুন যেখানে 'redo%'; এর মত নাম

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

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাব ব্যবহার করুন। আপনি আমাদের সাথে একটি কথোপকথনও শুরু করতে পারেন৷


  1. ওরাকেলে সংবেদনশীল ডেটা সুরক্ষিত করুন

  2. স্বচ্ছ ডেটা এনক্রিপশন ব্যবহার করে একটি ওরাকল ডাটাবেস সুরক্ষিত করুন

  3. ওরাকল ডাটাবেসে পরিসংখ্যান পুনরুদ্ধার করা হচ্ছে

  4. Oracle EBS 12.2 ডাটাবেসকে Oracle Database 19c এ আপগ্রেড করুন