-->

วันเสาร์ที่ 25 กุมภาพันธ์ พ.ศ. 2555

Query Cache Strategy


          เป็นการนำผลที่ได้จากการ Query เก็บลงข้อมูล Cach  จากนั้นเมื่อมีการ Query ด้วย Statement เดิม มันจะเข้าไปหาใน Cach ก่อน หากพบข้อมูลมันจะดึงออกมาแสดงผลทันที ไม่ต้องไป Query จาก Table มาใหม่ ทำให้ผลการค้นหานั้นเร็วขึ้นมาก โดยปกติ SQL Server จะมีการทำงานแบบนี้อยู่แล้ว แต่สำหรับ MySQL จะต้องทำการเปิดคุณสมบัติ Query Cach เสียก่อนจึงจะสามารถใช้งานได้

 ตัวอย่างการทำ Query Cach

การทำ Query Cach สำหรับ MySQL นั้น มีวิธีดังนี
 1. ตรวจสอบว่ามีการเปิดคุณสมบัติ Query Cach ไว้หรือไม่ 


การที่จะใช้ Query Cache ได้นั้น ตัวแปร have_query_cache ต้องเท่ากับ ‘YES’  ตัวแปร ‘query_cache_type’ เท่ากับ ‘ON’ นอกจากนี้ต้องคอนฟิกค่า query_cache_size ด้วย เพื่อจองขนาด memory เพื่อใช้เก็บ query cache  ค่า 0 คือการปิดคุณสมบัติ query cache


      2. ทดสอบ Query ปกติ ก่อนทำการเปิด Query Cach ได้ผลลัพธ์ดังนี้



พบว่าใช้เวลาประมาณ 0.21 วินาทีในการ Query



 3. ทำการคอนฟิกค่า query_cache_size แก้ไขไฟล์ /etc/my.cnf โดยเพิ่มคอนฟิก query_cache_size ลงไป ให้อยู่ภายใต้คอนฟิกของ [mysqld] เช่นต้องการจอง memory ขนาด 32 Mbytes สำหรับทำเป็น cache ตัวอย่างคอนฟิกไฟล์จะเป็นดังนี้

หลังจากแก้ไขคอนฟิกไฟล์ /etc/my.cnf ให้รีสตาร์ต Service MySQL Server ใหม่






       4. ทดสอบ Select ครั้งแรกหลังจากเปิด Query Cache



ยังคงใช้เวลา 0.23 วินาที เนื่องจากยังไม่มีการเก็บข้อมูลลงใน Cache
สามารถใช้คำสั่ง SHOW STATUS เพื่อดูสถิติการใช้ cache ของ MySQL

ค่าตัวแปร Qcache_not_cached เพิ่มเป็น 1 คือการ SELECT ครั้งนี้ไม่ได้ดึงข้อมูลจาก cache และค่า Qcache_inserts เป็น 1 คือเริ่มมีการใส่ผลลัพธ์เข้าไปใน cache

ทดลองรัน SELECT อีกครั้งนึง โดยพิมพ์ statement ให้เหมือนเดิมทุกอย่าง ทั้งตัวพิมพ์ใหญ่ พิมพ์เล็ก การเว้นวรรค ต้องเหมือนกันหมด  ย้ำอีกที ต้องเหมือนกันหมด เพราะ MySQL ใช้ในการเปรียบเทียบกับ statement ที่เก็บไว้ใน cache


เวลาที่ใช้กลายเป็น 0.00 วินาที เพราะว่าผลลัพธ์จากการ SELECT ครั้งนี้ MySQL ไปดึงมาจาก cache แทน เราสามารถตรวจสอบว่าผลลัพธ์จากการ SELECT มาจาก cache โดยดูค่า Qcache_hits ที่เพิ่มขึ้น จากคำสั่ง SHOW STATUS



ไม่มีความคิดเห็น:

แสดงความคิดเห็น