• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
The MySQL Query Cache
#1
سلام،

از دلایل قدرت جستجوی موتور های جستجوی الآن مثل گوگل، بهینه سازی صحیح پایگاه دادشون هست. یکی از راه هایی که برای بهینه سازیش رفتن احتمالا The MySQL Query Cache هست. حالا چرا؟

query cache دستورات SELECT رو همراه نتیجه ای که به کلاینت ارسال میشه رو ذخیره میکنه. در آینده اگر یه کوئری یکسان دریافت بشه، سرور بجای دوباره تجزیه و اجرای اون کوئری، نتیجه رو از ذخیره گاه برمیداره..

* قسمت درشت شده چرای ادعایی که کردم هست.

query cache بین سشن ها به اشتراک گذاشته میشه پس مجموعه نتیجه ای که توسط یه کلایت تولید میشه میتونه در پاسخ به همان کوئری که توسط کلاینت دیگری صادر شده فرستاده بشه.

query cache وقتی مفید واقع میشه که جدولی اغلب خیلی تغییر نکند و همینطور برای سروری که زیاد کوئری های یکسان دریافت میکنه.

وقتی جدولی تغییر میکنه، query cache داده کهنه و قدیمی رو بر نمیگردونه بلکه داده های مرتبط رو از روی ذخیره گاه پاک میکنه.

نکات زیر رو هم مد نظر داشته باشید
  • حجم ذخیره گاه در حد ده ها مگابایت خوبه ولی هزاران مگابایت نه
  • query cache با ترنس اکشن ها هم کار میکنه بشرطی که از جداولی از نوع InnoDB استفاده بشه
  • کوئری ها باید کاملا یکسان باشن (در اصطلاح بیت به بیت) حتی حروف بزرگ و کوچیک هم روی تفاوت کردنشون تاثیر داره

کوئری کش برای دو نوع کوئری زیر استفاده نمیشه
  • کوئری هایی که خودشون عضوی از کوئری خارجی هستند
  • کوئری هایی که بین بدنه یک تابع ذخیره شده، یا trigger، و یا event اجرا شدند.

در مورد trigger ها اینجا بخونید.
غایب
  پاسخ
تشکر شده توسط : admin Bojbaj zoghal Y.P.Y hosseintdk775
#2
Query Cache در مای اسکیو ال وابسته به تنظیمات سمت سرور هست. و برنامه نویس زیاد نمی تونه بهش دسترسی مستقیم داشته باشه.

پیشنهاد میشه حتما برنامه نویس خودش در کد نویسی این موارد رو کش کنه. اینطوری تعداد کانکشن ها به دیتابیس هم کمتر میشه.
  پاسخ
تشکر شده توسط :
#3
نقل قول:پیشنهاد میشه حتما برنامه نویس خودش در کد نویسی این موارد رو کش کنه. اینطوری تعداد کانکشن ها به دیتابیس هم کمتر میشه.
.
منظورتون ذخیره result کوئری در فایل هست؟
مثل کش دیتابیس Codeigniter ?
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#4
بله البته می تونید از سرویس های مختلفی مثل apc , memcache هم استفاده کنید.
  پاسخ
تشکر شده توسط : Reza


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان