Database Tutorials Query Cache কনফিগারেশন গাইড ও নোট

252

Query Cache হল MySQL-এ একটি কার্যকরী মেকানিজম যা ডেটাবেসের SELECT কুয়েরি এর ফলাফল ক্যাশে করে রাখে, যাতে একই কুয়েরি আবার চালানোর সময় ডেটাবেস সার্ভারের কাজ কমে এবং দ্রুত ফলাফল পাওয়া যায়। এটি সাধারণত read-heavy অ্যাপ্লিকেশনগুলির জন্য উপকারী, যেখানে ডেটা একইরকম থাকে এবং বারবার একই কুয়েরি করা হয়।

যখন MySQL একটি কুয়েরি চালায়, এটি কুয়েরির ফলাফল ক্যাশে রাখে এবং পরবর্তী সময়ে একই কুয়েরি আসলে ফলাফলটি ক্যাশে থেকে সরবরাহ করে। এই প্রক্রিয়াটি MySQL এর পারফরম্যান্স উন্নত করতে সহায়ক।


Query Cache কনফিগারেশন

Query Cache কনফিগার করতে MySQL সার্ভারের কনফিগারেশন ফাইলে কিছু সেটিংস পরিবর্তন করতে হয়। নিচে Query Cache কনফিগার করার জন্য দরকারি কনফিগারেশন প্যারামিটার এবং সেগুলোর বিস্তারিত আলোচনা করা হলো:

1. Query Cache সক্রিয় করা

MySQL 5.7 সংস্করণের পর Query Cache ডিফল্টভাবে বন্ধ থাকে এবং MySQL 8.0 তে এটি সম্পূর্ণরূপে সরানো হয়েছে। তবে MySQL 5.6 এবং তার আগের সংস্করণে এটি ডিফল্টভাবে চালু থাকে।

Query Cache চালু করতে নিচের সেটিংসটি MySQL কনফিগারেশন ফাইলে (my.cnf বা my.ini) যোগ করতে হবে:

[mysqld]
query_cache_type = 1
query_cache_size = 64M
  • query_cache_type = 1: এটি Query Cache সক্রিয় করে।
    • 1 মানে ON (Query Cache চালু করা হয়েছে)।
    • 0 মানে OFF (Query Cache বন্ধ)।
    • 2 মানে DEMAND (Query Cache শুধুমাত্র কুয়েরি ক্যাশে নির্দেশ দিলে সক্রিয় হবে)।
  • query_cache_size = 64M: এটি Query Cache এর আকার নির্ধারণ করে। 64MB এর একটি উদাহরণ দেওয়া হয়েছে, তবে এটি আপনার সিস্টেমের RAM এবং লোডের ওপর ভিত্তি করে বড় বা ছোট করা যেতে পারে। Query Cache এর আকার যত বেশি হবে, তত বেশি কুয়েরি ক্যাশে করা যাবে।

2. Query Cache এর অন্যান্য কনফিগারেশন সেটিংস

এছাড়াও কিছু অন্যান্য কনফিগারেশন সেটিংস আছে যা Query Cache কনফিগারেশনে সহায়তা করতে পারে:

  • query_cache_limit:

    • এই প্যারামিটারটি Query Cache-এ অন্তর্ভুক্ত করার জন্য সর্বোচ্চ কুয়েরির ফলাফলের আকার নির্ধারণ করে। ডিফল্টভাবে এটি 1MB।
    query_cache_limit = 1M
    

    এটি 1MB এর বেশি আকারের ফলাফল Query Cache এ সংরক্ষণ করবে না। আপনি এটি বাড়িয়ে দিতে পারেন যদি বড় আকারের কুয়েরি ফলাফল ক্যাশে রাখতে চান।

  • query_cache_min_res_unit:

    • এই সেটিংটি Query Cache এর জন্য অন্তর্ভুক্ত করা মেমরি ব্লকের আকার নির্ধারণ করে। ডিফল্টভাবে এটি 4KB।
    query_cache_min_res_unit = 2K
    

    এটি ক্যাশে করার সময় ছোট ছোট ফলাফলগুলো 2KB ব্লকে ভাগ করবে।

  • query_cache_wlock_invalidate:

    • এই প্যারামিটারটি ইনডেক্স বা টেবিল লক হওয়ার সময়ে Query Cache কে কীভাবে আপডেট করা হবে তা নিয়ন্ত্রণ করে। ডিফল্টভাবে এটি 1 (অর্থাৎ ক্যাশ ইনভ্যালিডেট হবে)।
    query_cache_wlock_invalidate = 1
    

    এটি যখন কোনো write-lock ঘটে তখন ক্যাশে ফলাফলগুলোর অবস্থা পরিবর্তন করতে সহায়তা করবে।


Query Cache ডিসএবল করা

যদি আপনি Query Cache ব্যবহার না করতে চান অথবা যদি এটি আপনার সিস্টেমের পারফরম্যান্সের জন্য উপকারী না হয়, তাহলে আপনি এটি বন্ধ করতে পারেন:

[mysqld]
query_cache_type = 0
query_cache_size = 0
  • query_cache_type = 0: এটি Query Cache নিষ্ক্রিয় করবে।
  • query_cache_size = 0: এটি Query Cache এর জন্য প্রয়োজনীয় মেমরি বরাদ্দ বন্ধ করবে।

Query Cache এবং Performance

  • পারফরম্যান্স লাভ: Query Cache অনেক ক্ষেত্রে পারফরম্যান্স উন্নত করতে সাহায্য করে, বিশেষত read-heavy অ্যাপ্লিকেশনগুলির জন্য, যেখানে একই ডেটা বারবার অনুসন্ধান করা হয়।
  • লিমিটেশন: যদিও Query Cache অনেক ক্ষেত্রে কার্যকর, তবে এটি write-heavy অ্যাপ্লিকেশনগুলিতে বা এমন সিস্টেমে যেখানে ডেটা ঘন ঘন আপডেট হয় সেখানে পারফরম্যান্সের উপর নেতিবাচক প্রভাব ফেলতে পারে। কারণ, প্রতি আপডেটের পর ক্যাশে ইনভ্যালিডেট (অপসারণ) করতে হয়, যা অতিরিক্ত লোড সৃষ্টি করতে পারে।

Query Cache এবং InnoDB

InnoDB এর মতো কিছু স্টোরেজ ইঞ্জিনে Query Cache অনেক ভালোভাবে কাজ করে না, কারণ InnoDB নিজেই buffer pool ব্যবহার করে ডেটা ক্যাশে করে রাখে। এর ফলে Query Cache কখনও কখনও অকার্যকর হতে পারে বা সামঞ্জস্যহীনতা সৃষ্টি করতে পারে। তাই, InnoDB ব্যবহারকারীদের জন্য Query Cache ব্যবহারের সিদ্ধান্ত নিতে সাবধানে ভাবা উচিত।


Query Cache অপ্টিমাইজেশন

  • Query Cache Size এবং query_cache_limit এর মধ্যে সমন্বয় করতে হবে, যাতে ক্যাশের আকার এবং ফিল্টারিংয়ের মাধ্যমে অপটিমাইজেশন করা যায়।
  • Query Cache Efficiency বাড়ানোর জন্য, MySQL সার্ভারের অতিরিক্ত ক্যাশে ব্যবহারের বিশ্লেষণ করা উচিত।
  • Slow Queries: স্লো কুয়েরি লোগ এবং EXPLAIN ব্যবহার করে বুঝে নিতে হবে কোন কুয়েরিগুলি ক্যাশ করা উচিত।

সারাংশ

MySQL Query Cache ডেটাবেসের পারফরম্যান্স উন্নত করার একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি ডেটার অনুসন্ধান দ্রুত করতে সহায়তা করে এবং অনেক ক্ষেত্রে read-heavy অ্যাপ্লিকেশনের জন্য কার্যকরী হতে পারে। Query Cache কনফিগারেশন সঠিকভাবে সেট করার জন্য query_cache_size, query_cache_limit, query_cache_type, এবং অন্যান্য প্যারামিটারগুলো কাস্টমাইজ করতে হয়। তবে, সিস্টেমের কাঠামো এবং লোড অনুসারে Query Cache ব্যবহারের সুবিধা এবং অসুবিধা রয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...