কম্পিউটার টিউটোরিয়াল

Oracle Database 12c Release 12.1.0.2-এ উন্নত পারফরম্যান্স টিউনিং আনলক করুন - পার্ট ২

মূলত TriCore দ্বারা প্রকাশিত: ১২ এপ্রিল, ২০১৭

এই দুই-পার্ট ব্লগ পোস্ট সিরিজ Oracle® Database-এ নতুন পারফরম্যান্স-টিউনিং ফিচার কভার করে। পার্ট ১ Oracle Database ভার্সন ১২.১.০.১ নিয়ে আলোচনা করেছিল। এই ফলো-আপ পোস্ট ভার্সন ১২.১.০.২ কভার করে।

In-Memory কলাম স্টোর পরিচিতি

In-Memory কলাম স্টোর (IM column store) System Global Area (SGA)-এর একটি অপশনাল এরিয়া যা টেবিল, পার্টিশন, এবং অন্যান্য ডেটাবেস অবজেক্টের কপি একটি কলামার ফরম্যাটে সংরক্ষণ করে যা দ্রুত স্ক্যানের জন্য অপ্টিমাইজড। IM column store অ্যানালিটিক্স, ডেটা ওয়্যারহাউসিং, এবং অনলাইন ট্রানজ্যাকশন প্রসেসিং (OLTP) অ্যাপ্লিকেশনের ডেটাবেস পারফরম্যান্স ত্বরান্বিত করে।

IM column store কীভাবে কাজ করে

IM column store ডেটাবেস অবজেক্টের কপি SGA-এ সংরক্ষণ করে। এটি ডেটাবেস বাফার ক্যাশকে রিপ্লেস করে না। দুটি মেমরি এরিয়া একই ডেটা ভিন্ন ফরম্যাটে সংরক্ষণ করতে পারে। IM column store-এ সংরক্ষিত সারিগুলো বড় মেমরি অঞ্চলে ভাগ হয়ে যায় একটি কলামার ফরম্যাটে। একটি কলাম প্রতিটি অঞ্চলে মেমরির একটি সংলগ্ন এলাকায় আলাদাভাবে থাকে।

আপনি নিচের যেকোনো ডেটাবেস অবজেক্টের জন্য IM column store সক্রিয় করতে পারেন:

  • টেবিল
  • ম্যাটেরিয়ালাইজড ভিউ
  • পার্টিশন
  • টেবলস্পেস

আপনি হয় একটি টেবিলের সব কলাম IM column store-এ সংরক্ষণ করতে পারেন, অথবা শুধু একটি সাবসেট। একইভাবে, একটি পার্টিশন্ড টেবিলের জন্য, আপনি হয় টেবিলের সব পার্টিশন সংরক্ষণ করতে পারেন, অথবা শুধু একটি সাবসেট। আপনি যদি টেবলস্পেস লেভেলে IM column store সক্রিয় করেন, তবে Oracle Database স্বয়ংক্রিয়ভাবে সেই টেবলস্পেসের সব টেবিল এবং ম্যাটেরিয়ালাইজড ভিউ IM column store-এর জন্য সক্রিয় করে।

IM column store ব্যবহার করার পারফরম্যান্স সুবিধা

ডিস্কের বদলে মেমরিতে ডেটাবেস অবজেক্ট সংরক্ষণ করলে Oracle Database স্ক্যান, কোয়ারি, জয়েন, এবং অ্যাগ্রিগেট অনেক দ্রুত পারফর্ম করতে পারে। IM column store নিচের টাস্কগুলো পারফর্ম করার সময় পারফরম্যান্স বাড়াতে পারে:

  • বড় সংখ্যক সারি স্ক্যান করা এবং ফিল্টার ব্যবহার করা
  • বড় সেট কলামের একটি ছোট সাবসেট কোয়ারি করা
  • একটি ছোট টেবিল বড় টেবিলের সাথে জয়েন করা, বিশেষ করে যখন জয়েন কন্ডিশন অধিকাংশ সারি ফিল্টার করে
  • একটি কোয়ারিতে ডেটা অ্যাগ্রিগেট করা

IM column store ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (DML) স্টেটমেন্টের পারফরম্যান্সও এনহ্যান্স করে। OLTP সিস্টেমগুলো সাধারণত সাধারণত-অ্যাক্সেস করা কলামগুলোর ওপর অনেক ইনডেক্স তৈরি করার প্রয়োজন হয়। এই ইনডেক্সগুলো DML স্টেটমেন্টের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। একটি ডেটাবেস অবজেক্ট IM column store-এ সংরক্ষণ করলে এই ইনডেক্সগুলো unnecessory হয়ে যায় কারণ স্ক্যানগুলো অনেক দ্রুত চলে। unnecessory ইনডেক্সগুলো সরিয়ে ফেলা DML স্টেটমেন্টের পারফরম্যান্স উন্নত করে কারণ কম ইনডেক্স আপডেট করতে হয়।

Oracle Database 12c Release 12.1.0.2-এ উন্নত পারফরম্যান্স টিউনিং আনলক করুন - পার্ট ২

ছবির সোর্স: Oracle Learning Library YouTube videos: Oracle Database 12c demos: In-Memory Column Store Architecture Overview

IM column store-এর প্রয়োজনীয় আকার অনুমান করা

IM column store নিচের কমপ্রেশন মেথডগুলো সাপোর্ট করে:

কমপ্রেশন মেথড ইন-মেমরি ডেটা কমপ্রেশনের ক্রম In-Memory ডেটা কমপ্রেশনের তুলনা
NO MEMCOMPRESS 1 NIL
MEMCOMPRESS FOR DML 2 (কম কমপ্রেশন) B<all
MEMCOMPRESS FOR QUERY LOW 3 B<C<D
MEMCOMPRESS FOR QUERY HIGH 4 C<D<E
MEMCOMPRESS FOR CAPACITY LOW 5 D<E<F
MEMCOMPRESS FOR CAPACITY HIGH 6 (হাই কমপ্রেশন) all<F


নিচের উদাহরণটি দেখায় কীভাবে oe.product_information টেবিলটি IM column store-এর জন্য সক্রিয় করা যায় এবং কমপ্রেশন মেথড MEMCOMPRESS FOR CAPACITY HIGH স্পেসিফাই করা যায়:

SQL>ALTER TABLE oe.product_information INMEMORY MEMCOMPRESS FOR CAPACITY HIGH; 

IM column store-এর আকার নির্ধারণ

ডেটাবেস অবজেক্টগুলো IM column store-এ সংরক্ষণের জন্য প্রয়োজনীয় মেমরি নির্ধারণ করার পর, আপনি এর আকার সেট করতে পারেন INMEMORY_SIZE ইনিশিয়ালাইজেশন প্যারামিটার ব্যবহার করে।

IM column store-এর আকার সেট করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. INMEMORY_SIZE ইনিশিয়ালাইজেশন প্যারামিটারকে প্রয়োজনীয় আকারে সেট করুন।

    এই প্যারামিটারের ডিফল্ট ভ্যালু 0, যার মানে IM column store ব্যবহার করা হয় না। IM column store সক্রিয় করতে, এই প্যারামিটারকে নন-জিরো ভ্যালুতে সেট করুন।

    একটি মাল্টিটেন্যান্ট এনভায়রনমেন্টে, আপনি প্রতিটি প্লগেবল ডেটাবেস (PDB)-এর জন্য IM column store-এর আকার স্পেসিফাই করতে পারেন এই প্যারামিটারটি PDB-প্রতি সেট করে। PDBগুলোর ভ্যালুগুলোর যোগফল CDB-এর ভ্যালুর সমান হতে হবে না, এবং এর চেয়ে বড় হতে পারে।

  2. IM column store-এর আকার সেট করার পর, আপনাকে আপনার ডেটাবেস ইনস্ট্যান্স রিস্টার্ট করতে হবে এটিকে ডেটাবেস অবজেক্টগুলো সংরক্ষণ করতে সক্ষম করতে।

    নিচের উদাহরণটি দেখায় কীভাবে IM column store-এর আকার ১০০ GB-এ সেট করতে হয়:

     ALTER SYSTEM SET INMEMORY_SIZE = 100G; 

IM column store-এর জন্য ম্যানেজেবিলিটি সাপোর্ট

SQL Monitor Report, Active Session History (ASH) Report, এবং Automatic Workload Repository (AWR) Report এখন ভিন্ন-भিন্ন ইন-মেমরি অপারেশনের জন্য স্ট্যাটিস্টিক্স দেখায়।

ডেটাবেস ক্যাশিং মোড

দুটি ডেটাবেস ক্যাশিং মোড আছে:

  • ডিফল্ট ডেটাবেস ক্যাশিং মোড যা Oracle Database-এর পূর্ববর্তী ভার্সনগুলো ব্যবহার করে
  • Force full database caching মোড যা Oracle Database 12c Release 1 (12.1.0.2)-এ নতুন

ডিফল্ট ডেটাবেস ক্যাশিং মোড

ডিফল্টভাবে, Oracle Database ফুল টেবিল স্ক্যান পারফর্ম করার সময় ডিফল্ট ডেটাবেস ক্যাশিং মোড ব্যবহার করে।

যদি Oracle Database ইনস্ট্যান্সটি নির্ধারণ করে যে ফুল ডেটাবেস বাফার ক্যাশে ক্যাশ করার জন্য যথেষ্ট স্পেস আছে এবং তা করা উপকারী, তবে ইনস্ট্যান্সটি স্বয়ংক্রিয়ভাবে ফুল ডেটাবেস বাফার ক্যাশে ক্যাশ করে।

যদি ইনস্ট্যান্সটি নির্ধারণ করে যে ফুল ডেটাবেস বাফার ক্যাশে ক্যাশ করার জন্য যথেষ্ট স্পেস নেই, তবে এটি নিচের অ্যাকশনগুলো নেয়:

  • ছোট টেবিল যেগুলো বাফার ক্যাশ সাইজের দুই পেরসেন্টের চেয়ে ছোট: এই টেবিলগুলো মেমরিতে লোড করে।
  • মidium-sized টেবিল: লাস্ট টেবিল স্ক্যান এবং বাফার ক্যাশের 에জিং টাইমস্ট্যাম্পের মধ্যে ইন্টারভাল বিশ্লেষণ করে। যদি লাস্ট টেবিল স্ক্যানে পুনরায় ব্যবহৃত টেবিলের সাইজ বাকি বাফার ক্যাশ সাইজের চেয়ে বড় হয়, তবে টেবিলটি ক্যাশ করে।
  • বড় টেবিল: এগুলো মেমরিতে লোড করে না যদি না আপনি স্পষ্টভাবে টেবিলটিকে KEEP বাফার পুলের জন্য ডিক্লেয়ার করেন।

Force full database caching mode

Force full database caching mode আপনাকে পুরো ডেটাবেস মেমরিতে ক্যাশ করতে সক্ষম করে, যা ফুল টেবিল স্ক্যান বা বড় অবজেক্ট (LOBs) অ্যাক্সেস করার সময় 상당한 পারফরম্যান্স উন্নতি প্রদান করতে পারে।

ডিফল্ট ক্যাশিং মোডে, Oracle Database সবসময় আন্ডারলাইনিং ডেটা ক্যাশ করে না যখন একজন ইউজার একটি বড় টেবিল কোয়ারি করে। Force full database caching mode-এ, Oracle Database অনুমান করে যে বাফার ক্যাশ পুরো ডেটাবেস ক্যাশ করার জন্য যথেষ্ট বড় এবং那些 কোয়ারি অ্যাক্সেস করে সকল ব্লক ক্যাশ করার চেষ্টা করে। এটি সফল হয় যখন ডেটাবেসের আকার ডেটাবেস বাফার ক্যাশ সাইজের চেয়ে ছোট।

Oracle Database সব ডেটা ফাইল বাফার ক্যাশে লোড করে যতক্ষণ সেগুলো অ্যাক্সেস করা হয়, NOCACHE LOBs এবং Oracle Database SecureFiles ব্যবহার করা LOBs সহ।

Oracle Database 12c Release 12.1.0.2-এ উন্নত পারফরম্যান্স টিউনিং আনলক করুন - পার্ট ২

ছবির সোর্স: Full DB In-Memory Caching.

Force full database caching mode কখন ব্যবহার করবেন

নিচের পরিস্থিতিগুলোতে force full database caching mode ব্যবহার করার কথা বিবেচনা করুন:

  • লজিক্যাল ডেটাবেস সাইজ (বা অ্যাকচুয়াল ইউজড স্পেস) প্রতিটি ডেটাবেস ইনস্ট্যান্সের ইন্ডিভিজুয়াল বাফার ক্যাশের চেয়ে ছোট একটি Oracle Real Application Clusters (RAC) এনভায়রনমেন্টে। এই সুপারিশ নন-Oracle RAC ডেটাবেসের জন্যও প্রযোজ্য।
  • লজিক্যাল ডেটাবেস সাইজ সমস্ত ডেটাবেস ইনস্ট্যান্সের কম্বাইন করা বাফার ক্যাশ সাইজের ৮০% চেয়ে ছোট ভালোভাবে পার্টিশন করা ওয়ার্কলোডের জন্য (ইনস্ট্যান্স অ্যাক্সেস দ্বারা) একটি Oracle RAC এনভায়রনমেন্টে।
  • ডেটাবেস SGA_TARGET বা MEMORY_TARGET ব্যবহার করে।
  • NOCACHE LOBs ক্যাশ করার প্রয়োজন। NOCACHE LOBs কখনো ক্যাশ হয় না force full database caching ব্যবহার না করা পর্যন্ত।

প্রথম তিনটি পরিস্থিতিতে, আপনাকে সিস্টেম পারফরম্যান্স পিরিওডিক্যালি মনিটর করা উচিত যাচাই করতে যে পারফরম্যান্স ইন্ডিকেটরগুলো আপনার এক্সপেক্টেশন পূরণ করছে।

নোট: যখন একটি Oracle RAC ডেটাবেস ইনস্ট্যান্স force full database caching mode ব্যবহার করে, তবে Oracle RAC এনভায়রনমেন্টের অন্যান্য সব ডেটাবেস ইনস্ট্যান্সও এই মোড ব্যবহার করে। একটি মাল্টিটেন্যান্ট এনভায়রনমেন্টে, force full database caching mode পুরো CDB-এ প্রযোজ্য হয়, এর সব PDBs সহ।

ডেটাবেস ক্যাশিং মোড সেট আপ এবং ভেরিফাই করুন

প্রথমে, ডেটাবেস এবং মেমরি সাইজ চেক করুন। আপনি SYSAUX টেবলস্পেস বাদ দিতে পারেন, নিচের উদাহরণে দেখানো অনুযায়ী:

SQL> col size_mb format 9999 SQL> SELECT sum(bytes)/1024/1024 seg_size_mb FROM dba_segments where tablespace_name != 'SYSAUX'; SEG_SIZE_MB ----------- 4971 

বাফার ক্যাশের আকার চেক করতে নিচের কমান্ড ব্যবহার করুন:

SQL> SELECT round(sum(cnum_set * blk_size)/1024/1024) size_mb FROM X$KCBWDS; SIZE_MB ------- 5283 

আপনার ডেটাবেসকে force full database caching-এর জন্য কনফিগার করতে নিচের ধাপগুলো অনুসরণ করুন:

SQL> startup mount; Database mounted. SQL> ALTER DATABASE FORCE FULL DATABASE CACHING; Database altered. SQL> SELECT force_full_db_caching FROM v$database; FORslug: '' ---YES SQL> alter database open; Database altered. 

Force full database caching mode সক্রিয় আছে কিনা ভেরিফাই করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. V$DATABASE ভিউ কোয়ারি করতে নিচের কমান্ড ব্যবহার করুন:

     SQL>SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE; 

    আউটপুট হয় YES বা NO।

  2. Force full database caching mode সক্রিয় করতে নিচের ALTER DATABASE কমান্ড ব্যবহার করুন:

     ALTER DATABASE FORCE FULL DATABASE CACHING; 

    কমান্ডটি নিচের কনফার্মেশন রিটার্ন করে:

     Database altered. 
  3. Force full database caching নিষ্ক্রিয় করতে নিচের কমান্ড ব্যবহার করুন:

     SQL> ALTER DATABASE NO FORCE FULL DATABASE CACHING; 

    কমান্ডটি নিচের কনফার্মেশন রিটার্ন করে:

     Database altered. 

উপসংহার

সংক্ষেপে, IM column store DML স্টেটমেন্টের এক্সিকিউশন টাইম কমায়, এবং force full database caching mode উল্লেখযোগ্য পারফরম্যান্স উন্নতি অফার করে। Oracle Database-এর নতুন পারফরম্যান্স-টিউনিং ফিচার সম্পর্কে আরও তথ্যের জন্য, Oracle Enterprise Manager (OEM) প্রদান করা রিপোর্টগুলো চেক করুন।

ফিডব্যাক ট্যাব ব্যবহার করে যেকোনো মন্তব্য বা প্রশ্ন করুন।

রেফারেন্স

নিচের সোর্সগুলো এই ব্লগ পোস্টের জন্য রেফারেন্স হিসেবে ব্যবহার করা হয়েছে:

  • Database Performance Tuning Guide: Performance Benefits of Using the In-Memory Column Store

  • Full DB In-Memory Caching

  • Oracle Database 12c demos: In-Memory Column Store Architecture Overview

  1. Oracle 19c DBCA ব্যবহার করে রিমোট PDB-কে CDB-তে দক্ষতার সাথে ক্লোন করুন

  2. Oracle 19c: ডাটাবেস অ্যাডমিনিস্ট্রেটরদের জন্য উন্নত ফিচারসমূহ

  3. রুবি ২.৬-এ ৯টি গুরুত্বপূর্ণ উন্নতির অন্বেষণ

  4. iOS 11-র আপডেটেড অ্যাপ স্টোরে ৫টি গেম-চেঞ্জিং ফিচার আবিষ্কার করুন