Query Cache MariaDB-তে একটি বিশেষ ফিচার, যা SQL কোয়েরি এবং তাদের ফলাফলগুলি ক্যাশে (cache) করে রাখে। এর মাধ্যমে, একই কোয়েরি পুনরায় চালানো হলে, ডেটাবেস সিস্টেমের পক্ষে সেই কোয়েরি আবার রান না করে ক্যাশ থেকে ফলাফল ফেরত দেয়া হয়, যার ফলে পারফরম্যান্স significantly উন্নত হয়।
MariaDB-তে Query Cache ডাটাবেসের কর্মক্ষমতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন আপনি এমন অ্যাপ্লিকেশন ব্যবহার করছেন যা একই ধরনের কোয়েরি বারবার রান করে (যেমন: রিড-মাত্র অপারেশন)। তবে, এটি ডায়নামিক ডেটা পরিবর্তন বা ইনসার্ট, আপডেট, ডিলিট অপারেশনগুলোর ক্ষেত্রে কম কার্যকর হতে পারে, কারণ ক্যাশের মধ্যে পরিবর্তন না হওয়া পর্যন্ত পুরোনো ফলাফল ফেরত দেয়া হতে পারে।
১. Query Cache কী?
Query Cache এমন একটি সিস্টেম যা MariaDB বা MySQL-এ SQL কোয়েরির আউটপুট স্টোর করে। যখন একই কোয়েরি আবার চালানো হয়, তখন এটি পুনরায় ডেটাবেসে গিয়ে ফলাফল খোঁজার পরিবর্তে ক্যাশ থেকে ফলাফল প্রদান করে। এতে সার্ভারের লোড কমে যায় এবং পারফরম্যান্স উন্নত হয়।
MariaDB-তে Query Cache এর মাধ্যমে, যদি একবার একটি SELECT কোয়েরি রান করা হয়, তবে সেটি পরে ক্যাশে রাখা হবে এবং পরবর্তী সময়ে একই কোয়েরি রান হলে সেটি দ্রুত ক্যাশ থেকে ফেরত আসবে। তবে, কোনো ডেটাবেস বা টেবিল আপডেট হলে সংশ্লিষ্ট ক্যাশ পরিষ্কার করা হয়।
২. Query Cache কনফিগারেশন
MariaDB-তে Query Cache কনফিগার করতে কয়েকটি প্যারামিটার ব্যবহার করা হয়। এগুলো সাধারণত MariaDB কনফিগারেশন ফাইলে (my.cnf অথবা my.ini) সেট করা হয়।
২.১. Query Cache সক্রিয় করা
Query Cache সক্রিয় করার জন্য আপনাকে প্রথমে MariaDB কনফিগারেশন ফাইলটি এডিট করতে হবে।
- MariaDB কনফিগারেশন ফাইলটি খুলুন:
- Linux:
/etc/my.cnfঅথবা/etc/mysql/my.cnf - Windows:
C:\Program Files\MariaDB x.x\my.ini
- Linux:
[mysqld]সেকশনে নিচের প্যারামিটারগুলো যুক্ত করুন:
[mysqld]
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 1M
এখানে:
query_cache_type = 1: Query Cache সক্রিয় করা (এটি সক্রিয় করা হলে ক্যাশিং হবে)।query_cache_size = 64M: Query Cache এর মোট আকার নির্ধারণ করা। এখানে 64MB ক্যাশের জন্য ব্যবহৃত হবে। আপনি এটি আপনার সিস্টেমের RAM অনুযায়ী বাড়াতে বা কমাতে পারেন।query_cache_limit = 1M: একটি কোয়েরির আউটপুট যদি 1MB এর বেশি হয় তবে সেটি ক্যাশে রাখা হবে না। এটি ক্যাশের জন্য ছোট কোয়েরি ফলাফল ফিল্টার করতে ব্যবহৃত হয়।
২.২. Query Cache কনফিগারেশন পর্যালোচনা
Query Cache-এর কনফিগারেশন পর্যালোচনা করার জন্য MariaDB তে কিছু কমান্ড ব্যবহার করা যায়।
SHOW VARIABLES LIKE 'query_cache%';
এটি Query Cache সম্পর্কিত বিভিন্ন সেটিংস যেমন query_cache_size, query_cache_type, query_cache_limit ইত্যাদি দেখাবে।
২.৩. Query Cache তথ্য দেখতে
Query Cache-এর স্ট্যাটাস দেখতে MariaDB তে নিচের কমান্ডটি ব্যবহার করা যেতে পারে:
SHOW STATUS LIKE 'Qcache%';
এটি Query Cache এর কার্যকারিতা এবং তার স্ট্যাটাস যেমন:
- Qcache_free_blocks: ক্যাশে ফ্রি ব্লক সংখ্যা।
- Qcache_hits: কতবার ক্যাশ থেকে কোয়েরি ফলাফল ফিরিয়ে দেওয়া হয়েছে।
- Qcache_inserts: কতবার নতুন কোয়েরি ফলাফল ক্যাশে রাখা হয়েছে।
- Qcache_lowmem_prunes: কতবার ক্যাশ মেমোরি কম থাকায় ফলাফল পরিষ্কার করা হয়েছে।
২.৪. Query Cache নিষ্ক্রিয় করা
যদি আপনি Query Cache ব্যবহার না করতে চান তবে সেটি নিষ্ক্রিয় করা সম্ভব। কনফিগারেশন ফাইলে নিচের প্যারামিটারটি পরিবর্তন করতে হবে:
[mysqld]
query_cache_type = 0
query_cache_size = 0
এতে Query Cache বন্ধ হয়ে যাবে।
৩. Query Cache-এর কার্যকারিতা
Query Cache ব্যবহার করলে কিছু ডেটাবেস অপারেশন দ্রুততর হতে পারে, তবে এটি সবসময় কার্যকরী নাও হতে পারে। নিচে কিছু বিষয় উল্লেখ করা হলো যা Query Cache এর কার্যকারিতাকে প্রভাবিত করতে পারে:
৩.১. Query Cache এর উপকারিতা
- পারফরম্যান্স উন্নয়ন: একই কোয়েরি বারবার রান করলে এটি দ্রুততর হবে, কারণ সার্ভারকে আবার ডেটাবেস থেকে ফলাফল খুঁজতে হবে না।
- কম লোড: সঠিকভাবে কনফিগার করা Query Cache সার্ভারের লোড কমিয়ে দেয়, কারণ ডেটাবেসকে প্রতিটি কোয়েরি আবার প্রোসেস করতে হয় না।
- কম সময় খরচ: রিড-মাত্র (SELECT) কোয়েরি গুলির ক্ষেত্রে ক্যাশিং পারফরম্যান্স উন্নত করে।
৩.২. Query Cache এর সীমাবদ্ধতা
- Write-heavy workload: যদি ডেটাবেসে অনেক ইনসার্ট, আপডেট বা ডিলিট অপারেশন হয়, তবে Query Cache প্রায়ই invalidated হয়ে যাবে এবং ক্যাশে রাখা ফলাফল মুছে যাবে। এর ফলে পারফরম্যান্স বৃদ্ধি ঘটবে না।
- Large datasets: Query Cache বড় আকারের ডেটা ক্যাশে রাখে না (যেমন বড় SELECT কোয়েরি), তাই যদি কোয়েরির আউটপুট বড় হয় তবে ক্যাশে রাখা হবে না।
৩.৩. Query Cache পরিচালনা
Query Cache এর ক্যাশে জমা হওয়া ফলাফল কখন মুছে যাবে তা cache invalidation দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ:
- টেবিল আপডেট হলে ক্যাশে থাকা ফলাফল মুছে যায়।
FLUSH QUERY CACHEকমান্ড ব্যবহার করে আপনি ক্যাশ পরিষ্কার করতে পারেন।
FLUSH QUERY CACHE;
এটি Query Cache-এর সমস্ত ডেটা মুছে ফেলে।
৪. Query Cache Performance টিউনিং
Query Cache এর কার্যকারিতা এবং পারফরম্যান্স উন্নত করার জন্য কিছু টিপস দেয়া হলো:
- Query Cache Size বৃদ্ধি করুন: যদি আপনার সিস্টেমে পর্যাপ্ত RAM থাকে, তবে
query_cache_sizeমান বৃদ্ধি করতে পারেন। এটি ক্যাশে আরও বেশি কোয়েরি ফলাফল সংরক্ষণ করতে সহায়তা করবে। - Query Cache Limit ছোট করুন: যদি আপনি চান ছোট কোয়েরি ফলাফলগুলি ক্যাশে থাকুক, তবে
query_cache_limitকমাতে পারেন। - Query Cache Type কনফিগার করুন: যদি শুধুমাত্র রিড-ওনলি কোয়েরি ক্যাশে রাখতে চান, তবে
query_cache_type = DEMANDসেট করুন, যা শুধুমাত্র কোয়েরি যেগুলিSQL_CACHEনির্দেশিকা দিয়ে চিহ্নিত হয়, সেগুলিই ক্যাশে রাখবে।
সারাংশ
MariaDB-তে Query Cache একটি কার্যকরী ফিচার যা একই কোয়েরি বারবার রান করার সময় পারফরম্যান্স উন্নত করতে সহায়তা করে। এটি ডেটাবেসের লোড কমায় এবং রিড অপারেশন দ্রুততর করে। তবে, যখন ডেটাবেসে পরিবর্তন হয় (যেমন: ইনসার্ট, আপডেট), তখন Query Cache কার্যকরী নাও হতে পারে। Query Cache সক্রিয় বা নিষ্ক্রিয় করা, তার আকার এবং অন্যান্য সেটিংস কনফিগারেশন ফাইলের মাধ্যমে নিয়ন্ত্রণ করা যায়।
Read more