نحوه فعال‌سازی کش کوئری در پایگاه داده (Query Cache)

🗄️ نحوه فعال‌سازی کش کوئری در پایگاه داده (Query Cache)

کش کوئری (Query Cache) یکی از تکنیک‌های مهم برای بهبود عملکرد پایگاه داده است. این قابلیت به پایگاه داده اجازه می‌دهد نتیجه کوئری‌های پرکاربرد را در حافظه ذخیره کند و به‌جای اجرای مکرر آن‌ها، مستقیماً نتایج کش‌شده را به کاربر ارائه دهد. در این مقاله، روش فعال‌سازی کش کوئری را در MySQL و وردپرس بررسی می‌کنیم.


کش کوئری چیست؟ 🔍

Query Cache قابلیتی است که وقتی یک کوئری اجرا شد، نتیجه آن را به‌طور موقت در حافظه نگه می‌دارد. اگر همان کوئری دوباره اجرا شود (بدون تغییر در داده‌های مرتبط)، نتیجه مستقیماً از حافظه بازگردانده می‌شود و نیازی به اجرای مجدد کوئری نیست.

مزایا: ✅ کاهش فشار روی سرور پایگاه داده
✅ افزایش سرعت بارگذاری صفحات
✅ کاهش زمان پاسخگویی به درخواست‌ها


فعال‌سازی کش کوئری در MySQL ⚙️

بررسی وضعیت فعلی کش کوئری

ابتدا می‌تونی وضعیت فعلی Query Cache رو با این دستور بررسی کنی:

sql
SHOW VARIABLES LIKE 'have_query_cache';

اگر نتیجه YES باشه، یعنی قابلیت کش کوئری فعال هست.

فعال‌سازی کش کوئری در MySQL

برای فعال‌سازی، فایل پیکربندی MySQL (معمولاً my.cnf یا my.ini) رو ویرایش کن و این خطوط رو به بخش [mysqld] اضافه کن:

ini
query_cache_type = ON
query_cache_size = 64M
query_cache_limit = 2M

توضیحات:

  • query_cache_type: وضعیت کش (ON یعنی فعال)
  • query_cache_size: مقدار حافظه اختصاص داده‌شده به کش کوئری (مثال ۶۴ مگابایت)
  • query_cache_limit: حداکثر اندازه هر کوئری کش شده (۲ مگابایت)

بعد از ذخیره، سرویس MySQL رو ری‌استارت کن:

در لینوکس:

bash
sudo systemctl restart mysql

در ویندوز: با Services می‌تونی سرویس MySQL رو ری‌استارت کنی.

بررسی عملکرد کش بعد از فعال‌سازی

بعد از فعال‌سازی می‌تونی وضعیت استفاده از کش رو ببینی:

sql
SHOW STATUS LIKE 'Qcache%';

برخی از پارامترها:

  • Qcache_hits: تعداد کوئری‌هایی که از کش پاسخ داده شدند.
  • Qcache_inserts: تعداد کوئری‌هایی که وارد کش شدند.

کش کوئری در وردپرس 🚀

وردپرس خودش به‌طور پیش‌فرض کش کوئری داخلی ندارد. اما می‌تونی با استفاده از افزونه‌ها یا بهینه‌سازی‌های پایگاه داده، کش کوئری رو فعال کنی.

۱. استفاده از افزونه‌های کش (Cache Plugins)

افزونه‌هایی مثل:

  • WP Rocket
  • LiteSpeed Cache
  • W3 Total Cache

این افزونه‌ها نه تنها کش کوئری، بلکه کش کامل صفحات و حتی کش Object را هم ارائه می‌کنند. در تنظیمات این افزونه‌ها می‌تونی گزینه Database Cache رو فعال کنی که کوئری‌های مکرر دیتابیس رو کش می‌کنه.


۲. استفاده از کش Object مستقل

کش Object در وردپرس می‌تونه بخشی از Query Cache رو پوشش بده. برای فعال‌سازی کش Object می‌تونی از افزونه‌هایی مثل:

  • Redis Object Cache
  • Memcached Object Cache

استفاده کنی. این کش‌ها مستقیماً روی کوئری‌های دیتابیس تاثیر دارن و باعث کاهش زمان اجرا میشن.


۳. بهینه‌سازی دستی کوئری‌ها در وردپرس

اگر قصد داری کش کوئری رو به‌صورت دستی برای کوئری‌های خاص وردپرس فعال کنی (مثلاً برای کوئری‌های سفارشی یا WP_Query)، می‌تونی به کمک transient API داده‌ها رو در کش موقت ذخیره کنی:

php
$posts = get_transient('cached_query_posts');

if (false === $posts) {
$query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 10));
$posts = $query->posts;
set_transient('cached_query_posts', $posts, HOUR_IN_SECONDS);
}


نکات مهم در فعال‌سازی کش کوئری 📝

🔹 اگر سایت شما مرتب به‌روزرسانی میشه، کش کوئری ممکنه زود منقضی بشه و تاثیرش کمتر بشه.
🔹 برای سایت‌های پرمحتوا یا فروشگاهی، ترکیب کش کوئری + کش صفحه + کش Object بهترین بازدهی رو داره.
🔹 MySQL از نسخه ۵.۷ به بعد، Query Cache رو به‌تدریج کنار گذاشت و پیشنهاد می‌شه از Redis یا Memcached استفاده بشه.
🔹 کش کوئری برای کوئری‌های تکراری و بدون تغییر بیشترین تاثیر رو داره.


جمع‌بندی ✅

برای فعال‌سازی کش کوئری در MySQL کافیه فایل پیکربندی رو تغییر بدی و مقادیر مربوط به Query Cache رو تنظیم کنی. در وردپرس هم می‌تونی از افزونه‌های کش یا کش Object مثل Redis و Memcached استفاده کنی. اگر سایتت بازدید بالایی داره یا تعداد کوئری‌ها زیاده، استفاده از کش کوئری به بهبود سرعت کمک زیادی می‌کنه.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *