Query Cache কনফিগারেশন এবং Optimization

PHPMyAdmin এবং Performance Tuning - পিএইচপি মাইএডমিন (PHP MyAdmin) - Database Tutorials

368

Query Cache MySQL এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডাটাবেসের SELECT কোয়েরির ফলাফল ক্যাশ করে রাখে। এর মাধ্যমে একই কোয়েরি বারবার চালানোর পর ডেটাবেস থেকে ডেটা পুনরায় পাঠানোর পরিবর্তে ক্যাশ থেকে সরাসরি ডেটা রিটার্ন করা হয়, ফলে পারফরম্যান্সে উল্লেখযোগ্য উন্নতি ঘটে।

Query Cache এর গুরুত্ব

  1. পুনরায় কোয়েরি চালানোর সময় পারফরম্যান্স বৃদ্ধি: একই কোয়েরি বারবার চালানোর প্রয়োজন হলে Query Cache তা দ্রুত সরবরাহ করে।
  2. ডাটাবেস লোড কমানো: ক্যাশ থেকে ডেটা রিটার্ন করলে ডাটাবেসের I/O অপারেশন কমে যায়, ফলে সার্ভারের লোড কমে।
  3. কোয়েরি এক্সিকিউশন সময় কমানো: একই কোয়েরি বারবার চালালে, ক্যাশ ব্যবহারের মাধ্যমে সময় সাশ্রয় হয়।

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

MySQL-এ Query Cache কনফিগার করতে my.cnf বা my.ini ফাইলে পরিবর্তন করতে হয়।

১. Query Cache সক্রিয় করুন

MySQL-এ Query Cache কার্যকর করতে প্রথমে my.cnf বা my.ini ফাইলে কিছু কনফিগারেশন পরিবর্তন করতে হবে।

  1. MySQL কনফিগারেশন ফাইল খুলুন:
    • Linux: /etc/mysql/my.cnf বা /etc/my.cnf
    • Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  2. Query Cache সম্পর্কিত প্যারামিটার যোগ করুন: নিচের প্যারামিটারগুলো কনফিগারেশন ফাইলে যোগ করুন:

    [mysqld]
    query_cache_type = 1              # Enable query cache
    query_cache_size = 256M           # Set cache size (example 256MB)
    query_cache_limit = 1M            # Limit for individual query size to cache
    query_cache_min_res_unit = 512    # Minimum unit for caching
    
    • query_cache_type: 0 = নিষ্ক্রিয়, 1 = সক্রিয়, 2 = শুধুমাত্র সিলেক্ট কোয়েরির জন্য।
    • query_cache_size: Query cache এর আকার, যার মধ্যে ক্যাশ হওয়া কোয়েরি সংরক্ষিত হবে। এটি মেমরির পরিমাণের সাথে সম্পর্কিত।
    • query_cache_limit: এই সীমার চেয়ে বড় কোয়েরি ক্যাশ হবে না।
    • query_cache_min_res_unit: এই প্যারামিটারটি Query Cache এর প্রতিটি স্টোরেজ ব্লকের জন্য মেমরি নির্ধারণ করে।
  3. MySQL সার্ভার রিস্টার্ট করুন: কনফিগারেশন পরিবর্তন করার পর, MySQL সার্ভার রিস্টার্ট করুন:

    sudo systemctl restart mysql
    

২. Query Cache স্ট্যাটাস চেক করুন

Query Cache সফলভাবে সক্রিয় হয়েছে কিনা তা দেখতে MySQL-এ এই কমান্ড ব্যবহার করুন:

SHOW VARIABLES LIKE 'query_cache%';

এই কমান্ডের মাধ্যমে Query Cache এর বিভিন্ন প্যারামিটার দেখানো হবে, যেমন query_cache_size, query_cache_limit, query_cache_type ইত্যাদি।

৩. Query Cache Performance মনিটরিং

Query Cache এর কার্যকারিতা পরিমাপ করতে SHOW STATUS ব্যবহার করুন:

SHOW STATUS LIKE 'Qcache%';

এই স্ট্যাটাস টেবিলটি Query Cache-এর ব্যবহৃত অবস্থা, যেমন কতটি কোয়েরি ক্যাশ হয়েছে, কতগুলি কোয়েরি পুনরায় ক্যাশ থেকে রিটার্ন হয়েছে, ইত্যাদি দেখাবে। উদাহরণ:

  • Qcache_hits: ক্যাশ থেকে সরাসরি রিটার্ন হওয়া কোয়েরির সংখ্যা।
  • Qcache_inserts: নতুন কোয়েরি যে Query Cache এ ইনসার্ট করা হয়েছে তার সংখ্যা।
  • Qcache_lowmem_prunes: ক্যাশে কম মেমরি থাকা কারণে যেগুলি মুছে ফেলা হয়েছে তার সংখ্যা।

Query Cache Optimization

Query Cache এর কার্যকারিতা উন্নত করার জন্য কিছু গুরুত্বপূর্ণ টিপস এবং অপটিমাইজেশন কৌশল রয়েছে:

১. Query Cache Limit নির্ধারণ করুন

যেকোনো বড় কোয়েরি Query Cache এ ক্যাশ হবে না যদি তার আকার query_cache_limit এর চেয়ে বেশি হয়। সুতরাং, বড় কোয়েরি যদি কম থাকে এবং সেগুলোর জন্য ক্যাশ ব্যবহার করতে চান, তবে query_cache_limit বাড়ানো উচিত।

query_cache_limit = 2M

২. Write-heavy অ্যাপ্লিকেশনে Query Cache নিষ্ক্রিয় করুন

যদি আপনার অ্যাপ্লিকেশন লিখন (INSERT, UPDATE, DELETE) কার্যক্রমে খুব বেশি সময় ব্যয় করে, তবে Query Cache এর ব্যবহার পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে, কারণ ডাটাবেসে কোনো পরিবর্তন হলে ক্যাশ কিল হয়ে যায়। তাই Write-heavy অ্যাপ্লিকেশনের জন্য Query Cache নিষ্ক্রিয় করা উচিত।

query_cache_type = 0

৩. অপ্রয়োজনীয় Query Cache মুছুন

সময় সময় Query Cache অপ্রয়োজনীয় হতে পারে, বিশেষ করে যখন ক্যাশে প্রচুর পুরোনো কোয়েরি সংরক্ষিত থাকে। FLUSH QUERY CACHE কমান্ড ব্যবহার করে Query Cache মুছে ফেলা যেতে পারে:

FLUSH QUERY CACHE;

৪. Cache Fragmentation পরিহার করুন

Query Cache অনেক সময় ফ্র্যাগমেন্টেড হতে পারে, যার ফলে Cache এর কার্যকারিতা কমে যায়। নিয়মিতভাবে Cache পরিষ্কার করার মাধ্যমে এই সমস্যা এড়ানো যেতে পারে।

৫. Cache Hit Rate পর্যবেক্ষণ করুন

Qcache_hits এবং Qcache_inserts পরিসংখ্যান ব্যবহার করে Query Cache এর Hit Rate মনিটর করুন। সাধারণভাবে, Hit Rate যত বেশি, Query Cache তত বেশি কার্যকরী। একটি ভাল Hit Rate এর জন্য ক্যাশে সংরক্ষিত কোয়েরি বেশি হতে হবে।

৬. Query Cache এর আকার বৃদ্ধি করুন

যদি আপনার সার্ভারে পর্যাপ্ত RAM থাকে, তবে query_cache_size বৃদ্ধি করলে Query Cache আরো বেশি কোয়েরি সংরক্ষণ করতে পারবে, যা পারফরম্যান্স উন্নত করতে সাহায্য করবে।

query_cache_size = 512M

Query Cache এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  1. পারফরম্যান্স উন্নয়ন: একাধিক বার একই কোয়েরি চালানোর পর, Query Cache ডেটা দ্রুত সরবরাহ করতে পারে, ফলে পারফরম্যান্স বৃদ্ধি পায়।
  2. ডাটাবেস লোড কমানো: ডিস্ক I/O কমে যায় কারণ Query Cache এর মাধ্যমে ডেটা সরাসরি রিটার্ন করা হয়।
  3. সাধারণ ডেটাবেসে কার্যকরী: স্ট্যাটিক ডেটা বা এমন অ্যাপ্লিকেশন যেখানে ডেটা কম পরিবর্তিত হয়, Query Cache এর কার্যকারিতা বৃদ্ধি পায়।

সীমাবদ্ধতা:

  1. Write-heavy অ্যাপ্লিকেশনে অকার্যকর: যখন অনেক WRITE অপারেশন (INSERT, UPDATE, DELETE) হয়, তখন Query Cache অকার্যকর হয়ে যায়।
  2. Cache Invalidating: যদি অনেক পরিবর্তন ঘটে, তাহলে ক্যাশ ইনভ্যালিড হয়ে যায় এবং পারফরম্যান্সে হ্রাস ঘটে।
  3. কমপ্লেক্স কোয়েরিতে সমস্যা: কিছু কোয়েরি যেমন JOIN বা সাবকোয়েরি Query Cache এ ক্যাশ হতে পারে না বা কম কার্যকরী হতে পারে।

সারাংশ

InnoDB Query Cache MySQL বা MariaDB সার্ভারের পারফরম্যান্স উন্নত করতে একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য। সঠিকভাবে কনফিগার এবং অপটিমাইজ করা হলে Query Cache ডাটাবেসের I/O কমিয়ে এবং ডেটা দ্রুত সরবরাহ করতে সাহায্য করে। তবে এটি সঠিকভাবে ব্যবহৃত না হলে, বিশেষ করে Write-heavy অ্যাপ্লিকেশনে, পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। সুতরাং, Query Cache ব্যবহারের আগে আপনার অ্যাপ্লিকেশনের কাজের ধরণ এবং ডাটাবেসের কার্যকারিতা বিবেচনা করা গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...