প্রতিবার Oracle® ডাটাবেস ডিস্ক থেকে ডেটা পড়ে বা লিখে, ডাটাবেস ডিস্ক ইনপুট এবং আউটপুট (I/O) অপারেশন জেনারেট করে। பல সফ্টওয়্যার অ্যাপ্লিকেশনের পারফরম্যান্স ডিস্ক I/O দ্বারা সীমাবদ্ধ, এবং যেসব অ্যাপ্লিকেশন CPU টাইমের অধিকাংশ I/O অ্যাক্টিভিটি সম্পন্ন হওয়ার জন্য অপেক্ষায় কাটায় সেগুলো I/O bound। I/O ক্যালিব্রেশন এই সমস্যা সমাধান করতে সাহায্য করে।
ভূমিকা
একটি সশক্ত I/O সাবসিস্টেম স্থাপন করা একটি অ্যাপ্লিকেশনের ইনফ্রাস্ট্রাকচার বিল্ড করার একটি অতিবশ্যক অংশ। I/O স্ট্যাকের যেকোনো কম্পোনেন্টে লিমিটেড থ্রুপুট থাকলে, সেটি I/O ফ্লোর সবচেয়ে দুর্বল লিঙ্ক হয়ে যায়। কারণ রিয়েল-ওয়ার্ল্ড ওয়ার্কলোড সহজে রিপ্রডিউস করা যায় না, I/O সাবসিস্টেমের ভ্যালিডেশন সবসময় একটি ভয়ঙ্কর টাস্ক।
Oracle ডাটাবেসের I/O ক্যালিব্রেশন ফিচার আপনাকে স্টোরেজ সাবসিস্টেমের পারফরম্যান্স অ্যাক্সেস করতে এবং নির্ধারণ করতে সক্ষম করে যে I/O পারফরম্যান্স সমস্যাগুলো ডাটাবেসের কারণে নাকি স্টোরেজ সাবসিস্টেমের কারণে। অন্যান্য এক্সটার্নাল I/O ক্যালিব্রেশন টুলের বিপরীতে যা সিকোয়েনশিয়ালি I/O অপারেশন ইস্যু করে, Oracle ডাটাবেসের I/O ক্যালিব্রেশন ফিচার Oracle ডেটা ফাইল ব্যবহার করে স্টোরেজ মিডিয়া এক্সেস করে র্যান্ডমলি I/O অপারেশন ইস্যু করে। এটি ফলাফল উৎপন্ন করে যা ডাটাবেসের আসল পারফরম্যান্সের অধিক কাছাকাছি।
Calibrate I/O ফিচার একটি PL/SQL ফাংশন DBMS_RESOURCE_MANAGER.CALIBRATE_IO() উপর ভিত্তি করে। Calibrate I/O আহ্বান করলে, এটি নিচের বৈশিষ্ট্যগুলো সহ ওয়ার্কলোড জেনারেট করে:
- I/O ইনটেনসিভ, রিড-অনলি, র্যান্ডম I/O (db_block_size)
- large-block (1 MB) সিকোয়েনশিয়াল I/O ওয়ার্কলোড
Calibrate I/O-এর ফলাফল মনিটর করা উচিত এবং এক্সপেক্টেড থ্রুপুট রেট (I/O সাবসিস্টেমের সর্বোচ্চ সামগ্রিক থ্রুপুট) এর সাথে তুলনা করা উচিত। I/O ক্যালিব্রেশন স্টোরেজ সাবসিস্টেমের পারফরম্যান্স ইভ্যালুয়েট করতে এবং নির্ধারণ করতে ব্যবহার করা যেতে পারে যে I/O পারফরম্যান্স সমস্যাগুলো ডাটাবেস হোস্টের কারণে নাকি স্টোরেজ সাবসিস্টেমের কারণে।
এই ব্লগ নিচের টপিকগুলো কভার করে:
- I/O ক্যালিব্রেশনের জন্য পূর্বশর্ত
- I/O ক্যালিব্রেশন চালানো
- ক্যালিব্রেশন বিবেচনা
I/O ক্যালিব্রেশনের জন্য পূর্বশর্ত
I/O ক্যালিব্রেশন চালানোর আগে, নিচের প্রয়োজনীয়তা পূরণ হয়েছে কিনা নিশ্চিত করুন:
- ইউজারের
SYSDBAপ্রিভিলেজ থাকতে হবে। TIMED_STATISTICSঅবশ্যইTRUEসেট থাকতে হবে।- Asynchronous I/O অবশ্যই ইন্যাবল থাকতে হবে।
ফাইল সিস্টেম ব্যবহার করার সময়, asynchronous I/O ইন্যাবল করা যায় FILESYSTEMIO_OPTIONS ইনিশিয়ালাইজেশন প্যারামিটার SETALL-এ সেট করে।
সিনক্রোনাস I/O-তে, যখন একটি I/O রিকোয়েস্ট অপারেটিং সিস্টেমে সাবমিট করা হয়, রাইট প্রসেস ব্লক থাকে যতক্ষণ না অপারেশন সম্পন্ন হয়। asynchronous I/O-তে, কলিং প্রসেস بلاক না করে অন্যান্য রিকোয়েস্ট যা এখনো এক্সিকিউট হচ্ছে সেগুলো ব্লক ছাড়া اپন কাজ চালিয়ে যায়।
নিশ্চিত করুন ডেটা ফাইলগুলো জন্য asynchronous I/O ইন্যাবলড আছে নিচের SQL কোয়েরি চালিয়ে:
COL NAME FORMAT A50 SELECT NAME,ASYNCH_IO FROM V$DATAFILE F,V$IOSTAT_FILE I WHERE F.FILE#=I.FILE_NO AND FILETYPE_NAME='Data File';
নিচের ছবিতে কোয়েরি এবং রেজাল্ট দেখানো হয়েছে:
List cell command results
দ্রষ্টব্য: একটি ডাটাবেস ইন্সট্যান্সে একবারের বেশি ক্যালিব্রেশন পারফর্ম করা যায় না।
I/O ক্যালিব্রেশন চালানো
Oracle ডাটাবেসের I/O ক্যালিব্রেশন ফিচার DBMS_RESOURCE_MANAGER.CALIBRATE_IO প্রসিজার ব্যবহার করে এক্সেস করা হয়। এই প্রসিজার একটি I/O ইনটেনসিভ রিড-অনলি ওয়ার্কলোড (১ MB র্যান্ডম I/O অপারেশন নিয়ে গঠিত) ডাটাবেস ফাইলগুলোর কাছে ইস্যু করে যাতে সর্বোচ্চ IOPS (I/O requests per second) এবং MBPS (megabytes of I/O per second) নির্ধারণ করা যায় যা স্টোরেজ সাবসিস্টেম সাস্টেইন করতে পারে।
DBMS_RESOURCE_MANAGER.CALIBRATE_IO প্রসিজার দিয়ে I/O ক্যালিব্রেশনে নিচের ধাপগুলো থাকে:
- প্রসিজার র্যান্ডম ডাটাবেস-ব্লক-সাইজড রিড (ডিফল্টভাবে, ৮ KB) সকল ডাটাবেস ইন্সট্যান্স থেকে সকল ডেটা ফাইলে ইস্যু করে। এই স্টেপ আউটপুট প্যারামিটারে (
max_iops) সর্বোচ্চ I/O অপারেশন পার সেকেন্ড (IOPS) প্রদান করে যা ডাটাবেস সাস্টেইন করতে পারে।max_iopsএর মান অনলাইন ট্রানজ্যাকশন প্রসেসিং (OLTP) ডাটাবেসের জন্য একটি গুরুত্বপূর্ণ মেট্রিক। আউটপুট প্যারামিটারactual_latencyএই ওয়ার্কলোডের গড় লেটেন্সি প্রদান করে। আপনি ইনপুট প্যারামিটারmax_latencyদিয়ে আপনার প্রয়োজনীয় নির্দিষ্ট টার্গেট লেটেন্সি স্পেসিফাই করতে পারেন, যা ডাটাবেস-ব্লক-সাইজড I/O রিকোয়েস্টের জন্য মিলিসেকেন্ডে সর্বোচ্চ সহনযোগ্য লেটেন্সি স্পেসিফাই করে। - প্রসিজার র্যান্ডম ১ MB রিড সকল ডাটাবেস ইন্সট্যান্স থেকে সকল ডেটা ফাইলে ইস্যু করে। এই স্টেপ আউটপুট প্যারামিটার
max_mbpsদিয়ে, যা স্পেসিফাই করে ডাটাবেস যে সর্বোচ্চ মেগাবাইট পার সেকেন্ড (MBPS) I/O সাস্টেইন করতে পারে। এটি ডেটা ওয়েयरহাউসের জন্য একটি গুরুত্বপূর্ণ মেট্রিক।
যদি ইউজার num_physical_disks ইনপুট প্যারামিটার প্রদান করে, তবে ক্যালিব্রেশন আরও দক্ষতার সাথে রান করে, যা ডাটাবেস স্টোরেজ সিস্টেমে আনুমানিক ফিজিক্যাল ডিস্কের সংখ্যা স্পেসিফাই করে।
I/O ওয়ার্কলোড চালানোর ওভারহেডের কারণে, I/O ক্যালিব্রেশন শুধু তখন পারফর্ম করা উচিত যখন ডাটাবেস idle থাকে, অথবা অফ-পিক আওয়ার্সে, যাতে I/O ক্যালিব্রেশন ওয়ার্কলোডের নরমাল ডাটাবেস ওয়ার্কলোডের ওপর প্রভাব ন্যূনতম হয়।
নিচের ছবিতে DBMS_RESOURCE_MANAGER.CALIBRATE_IO প্রসিজারের আউটপুট দেখানো হয়েছে:
List cell command results
ক্যালিব্রেশন বিবেচনা
I/O ক্যালিব্রেশন চালানোর আগে, নিচের বিবেচনাগুলো চিন্তা করুন:
- একই স্টোরেজ সাবসিস্টেম ব্যবহার করা ডাটাবেসগুলোর ওপর একবারের বেশি ক্যালিব্রেশন রান করবেন না। আপনি যদি একই স্টোরেজ সাবসিস্টেম ব্যবহার করা আলাদা ডাটাবেসগুলোর ওপর একসাথে ক্যালিব্রেশন রান করেন, তবে ক্যালিব্রেশন ব্যর্থ হবে।
- I/O ইন্সট্যান্সে ন্যূনতম করার জন্য ডাটাবেস কোয়েসি করুন।
- Oracle Real Application Clusters (RAC) কনফিগারেশনের জন্য, নিশ্চিত করুন সকল ইন্সট্যান্স খোলা আছে যাতে নোড জুড়ে স্টোরেজ সাবসিস্টেম ক্যালিব্রেট করা যায়।
- Oracle RAC ডাটাবেসের জন্য, ওয়ার্কলোড একই সময় সকল ইন্সট্যান্স থেকে জেনারেট হয়।
num_physical_disksইনপুট প্যারামিটার অপশনাল। এই প্যারামিটারকে ডাটাবেসের স্টোরেজ সিস্টেমে আনুমানিক ফিজিক্যাল ডিস্কের সংখ্যা সেট করলে, ক্যালিব্রেশন এবং দ্রুত এবং সঠিক হয়।
I/O ক্যালিব্রেশন প্রসেসের যেকোনো সময়, আপনি V$IO_CALIBRATION_STATUS ভিউতে ক্যালিব্রেশন স্ট্যাটাস কোয়েরি করতে পারেন। I/O ক্যালিব্রেশন সফলভাবে সম্পন্ন হলে, DBA_RSRC_IO_CALIBRATE টেবিলে ফলাফল দেখুন, নিচের উদাহরণের মতো:
| Columns | Value |
|---|---|
| START_TIME | 31-AUG-17 04.40.09.920679 AM |
| END_TIME | 31-AUG-17 04.47.41.210939 AM |
| MAX_IOPS | 39 |
| MAX_MBPS | 60 |
| MAX_PMBPS | 69 |
| LATENCY | 24 |
| NUM_PHYSICAL_DISKS | 1 |
উপসংহার
I/O Resource Management (IORM) এবং Calibrate I/O ফিচার আপনার বর্তমান I/O আর্কিটেকচারের লিমিটেশন বোঝার জন্য মূল্যবান। ক্যালিব্রেশন সম্পন্ন হলে, ইনফরমেশনটি উপযুক্ত I/O ডিজাইন এবং সাইজিং পারফর্ম করতে ব্যবহার করা যেতে পারে। মন্তব্য বা প্রশ্নের জন্য Feedback ট্যাব ব্যবহার করুন।